-
Notifications
You must be signed in to change notification settings - Fork 2
Events
zedraken edited this page Jul 23, 2017
·
10 revisions
The event system in Urho3D works by subscribing functions to events like this:
class foobar : public Urho3D::Object
{
public:
foobar(Urho3D::Context* context)
{
// subscribe to two events
SubscribeToEvent(Urho3D::E_TEXTINPUT,URHO3D_HANDLER(foobar,e_textinput));
SubscribeToEvent(Urho3D::E_SCREENMODE,URHO3D_HANDLER(foobar,e_resize));
...
}
void e_textinput(Urho3D::StringHash eventType,Urho3D::VariantMap& eventData)
{
Urho3D::String character=eventData[Urho3D::TextInput::P_TEXT].GetString();
std::cout<<"UTF-8 entered: "<<character.CString()<<std::endl;
}
void e_resize(Urho3D::StringHash eventType,Urho3D::VariantMap& eventData)
{
int w=eventData[Urho3D::ScreenMode::P_WIDTH].GetInt();
int h=eventData[Urho3D::ScreenMode::P_HEIGHT].GetInt();
std::cout<<"new window size: "<<w<<" "<<h<<std::endl;
}
...
URHO3D_OBJECT(foobar,Urho3D::Object)
};
The different events and what their "eventData" contains is scattered across multiple files. Here are all the files and some of their events listed to get an overview. See the files themself for some more details, they are all in Urho's include folder.
- E_BEGINFRAME (Start of frame event)
- E_UPDATE (Logic update event, usually used to do "normal" stuff each frame)
- E_POSTUPDATE (Logic post-update event)
- E_RENDERUPDATE (Render update event)
- E_POSTRENDERUPDATE (Post-render update event)
- E_ENDFRAME (End frame event)
- E_SOUNDFINISHED
- E_DBCURSOR
- E_CONSOLECOMMAND
- E_SCREENMODE Screenmode change. Like a window resize or fullscreen toggle.
- E_WINDOWPOS
- E_ENDRENDERING Frame rendering ended; sent just before presenting; can follow up with your own draws (UI, for example)
- E_ENDVIEWRENDER _Like E_ENDRENDERING, but sent for each viewport. _ ... More view and device events.
- E_MOUSEBUTTONDOWN
- E_MOUSEBUTTONUP
- E_MOUSEMOVE
- E_MOUSEWHEEL
- E_KEYDOWN
- E_KEYUP
- E_TEXTINPUT (Similar to E_KEYDOWN but designed for text input instead of "stupid" key presses. Has UTF-8 characters in P_TEXT)
- E_JOYSTICKCONNECTED
- E_JOYSTICKDISCONNECTED
- E_JOYSTICKBUTTONDOWN
- E_JOYSTICKBUTTONUP
- E_JOYSTICKAXISMOVE
- E_JOYSTICKHATMOVE
- E_TOUCHBEGIN
- E_TOUCHEND
- E_TOUCHMOVE
- E_GESTURERECORDED
- E_GESTUREINPUT
- E_MULTIGESTURE
- E_DROPFILE
- E_INPUTFOCUS
- E_MOUSEVISIBLECHANGED
- E_MOUSEMODECHANGED
- E_EXITREQUESTED
- E_SDLRAWINPUT
- E_INPUTBEGIN
- E_INPUTEND
- E_NAVIGATION_MESH_REBUILT
- E_NAVIGATION_OBSTACLE_ADDED
- E_NAVIGATION_OBSTACLE_REMOVED
- E_CROWD_AGENT_NODE_STATE_CHANGED
... More navigation mesh and agent events.
- E_SERVERCONNECTED
- E_SERVERDISCONNECTED
- E_CLIENTCONNECTED
- E_CLIENTDISCONNECTED
- E_NETWORKMESSAGE
...
- E_PHYSICSPRESTEP (Physics world is about to be stepped)
- E_PHYSICSPOSTSTEP (Physics world has been stepped)
- E_PHYSICSCOLLISIONSTART (Physics collision started)
- E_PHYSICSCOLLISION (Physics collision ongoing)
- E_PHYSICSCOLLISIONEND (Physics collision ended)
- E_NODECOLLISIONSTART (Node's physics collision started)
- E_NODECOLLISION (Node's physics collision ongoing)
- E_NODECOLLISIONEND (Node's physics collision ended)
- E_RELOADSTARTED (Resource reloading started)
- E_RELOADFINISHED (Resource reloading successfully finished)
- E_RELOADFAILED (Resource reloading failed)
- E_FILECHANGED (Tracked file changed in the resource directories)
- E_LOADFAILED (Resource loading failed)
- E_RESOURCENOTFOUND (Resource not found)
- E_UNKNOWNRESOURCETYPE (Unknown resource type)
- E_RESOURCEBACKGROUNDLOADED (Resource background loading finished)
- E_CHANGELANGUAGE (Language changed)
- E_NODEADDED
- E_NODEREMOVED
- E_COMPONENTADDED
- E_COMPONENTREMOVED
- E_ASYNCLOADFINISHED
...
- E_UIMOUSECLICK
- E_UIMOUSECLICKEND
- E_DRAGDROPFINISH
- E_FOCUSCHANGED
- E_PRESSED UI button pressed
- E_UIDROPFILE A file was drag-dropped into the application window. Includes also coordinates and UI element if applicable
...
- E_PHYSICSBEGINCONTACT2D
- E_PHYSICSENDCONTACT2D
Modify me