Skip to content
zedraken edited this page Jul 23, 2017 · 10 revisions

Events

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.

Core/CoreEvents.h

  • 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)

Audio/AudioEvents.h

  • E_SOUNDFINISHED

Database/DatabaseEvents.h

  • E_DBCURSOR

Engine/EngineEvents.h

  • E_CONSOLECOMMAND

Graphics/GraphicsEvents.h

  • 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.

Input/InputEvents.h

  • 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

Navigation/NavigationEvents.h

  • E_NAVIGATION_MESH_REBUILT
  • E_NAVIGATION_OBSTACLE_ADDED
  • E_NAVIGATION_OBSTACLE_REMOVED
  • E_CROWD_AGENT_NODE_STATE_CHANGED
    ... More navigation mesh and agent events.

Network/NetworkEvents.h

  • E_SERVERCONNECTED
  • E_SERVERDISCONNECTED
  • E_CLIENTCONNECTED
  • E_CLIENTDISCONNECTED
  • E_NETWORKMESSAGE
    ...

Physics/PhysicsEvents.h

  • 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)

Resource/ResourceEvents.h

  • 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)

Scene/SceneEvents.h

  • E_NODEADDED
  • E_NODEREMOVED
  • E_COMPONENTADDED
  • E_COMPONENTREMOVED
  • E_ASYNCLOADFINISHED
    ...

UI/UIEvents.h

  • 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
    ...

Urho2D/PhysicsEvents2D.h

  • E_PHYSICSBEGINCONTACT2D
  • E_PHYSICSENDCONTACT2D