fixed order of run event
This commit is contained in:
parent
b6f37bef87
commit
6280ace5a5
@ -47,6 +47,7 @@ namespace hgl
|
|||||||
for(InputEvent *ie:sub_event_proc[header.type])
|
for(InputEvent *ie:sub_event_proc[header.type])
|
||||||
if(ie->OnEvent(header,data)==EventProcResult::Break)
|
if(ie->OnEvent(header,data)==EventProcResult::Break)
|
||||||
return EventProcResult::Break;
|
return EventProcResult::Break;
|
||||||
|
}
|
||||||
|
|
||||||
if(sub_event_proc[size_t(InputEventSource::Root)].GetCount()>0
|
if(sub_event_proc[size_t(InputEventSource::Root)].GetCount()>0
|
||||||
&&InputEventSource(header.type)!=InputEventSource::Root)
|
&&InputEventSource(header.type)!=InputEventSource::Root)
|
||||||
@ -55,7 +56,6 @@ namespace hgl
|
|||||||
if(ie->OnEvent(header,data)==EventProcResult::Break)
|
if(ie->OnEvent(header,data)==EventProcResult::Break)
|
||||||
return EventProcResult::Break;
|
return EventProcResult::Break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return(EventProcResult::Continue);
|
return(EventProcResult::Continue);
|
||||||
}
|
}
|
||||||
|
@ -180,9 +180,9 @@ namespace hgl
|
|||||||
return EventProcResult::Continue;
|
return EventProcResult::Continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool OnPressed(const KeyboardButton &kb){}
|
virtual bool OnPressed(const KeyboardButton &kb){return(false);}
|
||||||
virtual bool OnReleased(const KeyboardButton &kb){}
|
virtual bool OnReleased(const KeyboardButton &kb){return(false);}
|
||||||
virtual bool OnChar(const wchar_t &){}
|
virtual bool OnChar(const wchar_t &){return(false);}
|
||||||
};//class KeyboardEvent
|
};//class KeyboardEvent
|
||||||
|
|
||||||
class KeyboardStateEvent:public KeyboardEvent
|
class KeyboardStateEvent:public KeyboardEvent
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#ifndef HGL_IO_MOUSE_EVENT_INCLUDE
|
#ifndef HGL_IO_MOUSE_EVENT_INCLUDE
|
||||||
#define HGL_IO_MOUSE_EVENT_INCLUDE
|
#define HGL_IO_MOUSE_EVENT_INCLUDE
|
||||||
|
|
||||||
#include<hgl/io/event/InputEvent.h>
|
#include<hgl/io/event/InputEvent.h>
|
||||||
@ -7,7 +7,7 @@ namespace hgl
|
|||||||
namespace io
|
namespace io
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* 報炎梓泥旦訟
|
* 鼠标按钮枚举
|
||||||
*/
|
*/
|
||||||
enum class MouseButton
|
enum class MouseButton
|
||||||
{
|
{
|
||||||
@ -19,7 +19,7 @@ namespace hgl
|
|||||||
|
|
||||||
X1,X2,
|
X1,X2,
|
||||||
|
|
||||||
ENUM_CLASS_RANGE(Left,X2)
|
ENUM_CLASS_RANGE(None,X2)
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class MouseEventID
|
enum class MouseEventID
|
||||||
@ -50,9 +50,14 @@ namespace hgl
|
|||||||
|
|
||||||
int x,y;
|
int x,y;
|
||||||
|
|
||||||
|
bool pressed_statues[size_t(MouseButton::RANGE_SIZE)];
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
MouseEvent():InputEvent(InputEventSource::Mouse){}
|
MouseEvent():InputEvent(InputEventSource::Mouse)
|
||||||
|
{
|
||||||
|
hgl_zero(pressed_statues);
|
||||||
|
}
|
||||||
virtual ~MouseEvent()=default;
|
virtual ~MouseEvent()=default;
|
||||||
|
|
||||||
EventProcResult OnEvent(const EventHeader &header,const uint64 data) override
|
EventProcResult OnEvent(const EventHeader &header,const uint64 data) override
|
||||||
@ -73,8 +78,10 @@ namespace hgl
|
|||||||
switch(MouseEventID(header.id))
|
switch(MouseEventID(header.id))
|
||||||
{
|
{
|
||||||
case MouseEventID::Move: if(OnMove (med->x,med->y) )return EventProcResult::Break;break;
|
case MouseEventID::Move: if(OnMove (med->x,med->y) )return EventProcResult::Break;break;
|
||||||
case MouseEventID::Pressed: if(OnPressed (med->x,med->y,MouseButton(med->button)))return EventProcResult::Break;break;
|
case MouseEventID::Pressed: pressed_statues[med->button]=true;
|
||||||
case MouseEventID::Released: if(OnReleased (med->x,med->y,MouseButton(med->button)))return EventProcResult::Break;break;
|
if(OnPressed (med->x,med->y,MouseButton(med->button)))return EventProcResult::Break;break;
|
||||||
|
case MouseEventID::Released: pressed_statues[med->button]=false;
|
||||||
|
if(OnReleased (med->x,med->y,MouseButton(med->button)))return EventProcResult::Break;break;
|
||||||
case MouseEventID::DblClicked: if(OnDblClicked (med->x,med->y,MouseButton(med->button)))return EventProcResult::Break;break;
|
case MouseEventID::DblClicked: if(OnDblClicked (med->x,med->y,MouseButton(med->button)))return EventProcResult::Break;break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -89,6 +96,16 @@ namespace hgl
|
|||||||
virtual bool OnReleased (int,int,MouseButton){return false;}
|
virtual bool OnReleased (int,int,MouseButton){return false;}
|
||||||
virtual bool OnDblClicked(int,int,MouseButton){return false;}
|
virtual bool OnDblClicked(int,int,MouseButton){return false;}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 某按键是否按下
|
||||||
|
*/
|
||||||
|
const bool HasPressed(const MouseButton &mb)const
|
||||||
|
{
|
||||||
|
if(!RangeCheck(mb))return(false);
|
||||||
|
|
||||||
|
return pressed_statues[size_t(mb)];
|
||||||
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
const int GetX()const{return x;}
|
const int GetX()const{return x;}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user