Game Development Reference
In-Depth Information
// update some progress bars
enum ETriggerContext
{
eTriggerContext_Before,
eTriggerContext_During,
eTriggerContext_After
};
virtual ~IEventSink(){}
virtual void OnEvent(IEvent* pEvent,
ETriggerContext aContext,
void* pUserData) = 0;
};
The IEventSink::OnEvent method is called whenever an event is triggered by other plug-ins or their commands and
broadcast to the registered event sinks. The method receives a pointer to the triggered event interface (see Listing 11-17).
Listing 11-17. An Event, Implemented by the Trigger Code
// An event is triggered when certain actions are happening
// in the editor or its plug-ins. For example we can have an
// event at Save level or an object moved with the mouse
struct IEvent
{
virtual ~IEvent(){}
virtual const char* GetName() = 0;
virtual void OnTrigger(void* pUserData) = 0;
virtual void* GetUserData() = 0;
};
Listing 11-18 shows how to trigger an event.
Listing 11-18. Creating, Registering, and Triggering an Event
// we declare an event
struct MyEvent: IEvent
{
virtual const char* GetName()
{
return “MyCoolEvent”;
}
// this will be called when the event is triggered,
// before being broadcast to all the event sinks
// so the event can even modify the user data
virtual void OnTrigger(void* pUserData)
{
// modify or store the pUserData
m_pData = pUserData;
}
virtual void* GetUserData()
{
return m_pData;
}
 
Search WWH ::




Custom Search