You.i Engine
YiEventTarget.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_EVENT_TARGET_H_
3 #define _YI_EVENT_TARGET_H_
4 
6 #include "framework/YiPredef.h"
7 #include "event/YiEvent.h"
8 
9 #include <memory>
10 
11 class CYIEventHandler;
12 class CYIEventDispatcher;
13 
18 typedef enum
19 {
28 
30 
31 
38 {
39 
40 public:
41 
43  {
46  };
47 
49  virtual ~CYIEventTarget();
50 
71  bool AddEventListener(YI_EVENT_TYPE eEventType, CYIEventHandler *pListener, EVENT_PHASE ePhase = BUBBLE);
72 
90  bool RemoveEventListener(YI_EVENT_TYPE eEventType, CYIEventHandler *pListener, EVENT_PHASE ePhase = BUBBLE);
91 
96  virtual bool ProcessEvent(const std::shared_ptr<CYIEventDispatcher> &pDispatcher, CYIEvent *pEvent);
97 
101 
102 private:
103  class EventListenerEntry
104  {
105  public:
106  EventListenerEntry(YI_EVENT_TYPE eEventType, CYIEventHandler *pListener, EVENT_PHASE eStatus);
107  bool operator==(const EventListenerEntry& rhs) const;
108 
109  YI_EVENT_TYPE m_eEventType;
110  EVENT_PHASE m_ePhase;
111  CYIEventHandler *m_pListener;
112 
113  };
114 
115 protected:
117  std::vector<EventListenerEntry> m_listeners;
118 
119 private:
120  YI_TYPE_BASES_WITH_SCRIPTABLE_BASE(CYIEventTarget)
121 };
122 
127 #endif // _YI_EVENT_TARGET_H_
128 
Definition: YiEventTarget.h:25
The base class for an C++ object that has RTTI information and is accesible from script source code...
Definition: YiScriptableRTTIObject.h:28
Allows registering of event filters which can be used to perform processing on an event before and af...
Definition: YiEventHandler.h:25
Base class for events.
Definition: YiEvent.h:489
Definition: YiEventTarget.h:24
Definition: YiEventTarget.h:23
YI_EVENT_TYPE
The event type of the CYIEvent class instance.
Definition: YiEvent.h:23
YI_SPECIAL_EVENT_TARGET_TYPE
Definition: YiEventTarget.h:18
Definition: YiEventTarget.h:44
Definition: YiEventTarget.h:22
Definition: YiEventTarget.h:20
bool RemoveEventListener(YI_EVENT_TYPE eEventType, CYIEventHandler *pListener, EVENT_PHASE ePhase=BUBBLE)
Definition: YiEventTarget.h:27
virtual ~CYIEventTarget()
Definition: YiEventTarget.h:21
bool AddEventListener(YI_EVENT_TYPE eEventType, CYIEventHandler *pListener, EVENT_PHASE ePhase=BUBBLE)
Represents an event target of type YI_SPECIAL_EVENT_TARGET_TYPE.
Definition: YiEventTarget.h:37
EVENT_PHASE
Definition: YiEventTarget.h:42
void SetSpecialTypeFlag(YI_SPECIAL_EVENT_TARGET_TYPE eType)
std::vector< EventListenerEntry > m_listeners
Definition: YiEventTarget.h:117
void ClearSpecialTypeFlag(YI_SPECIAL_EVENT_TARGET_TYPE eType)
YI_SPECIAL_EVENT_TARGET_TYPE GetSpecialTypes() const
virtual bool ProcessEvent(const std::shared_ptr< CYIEventDispatcher > &pDispatcher, CYIEvent *pEvent)
Stores, queues and dispatches events as well as sending notifications to IYIEventDispatcherListener o...
Definition: YiEventDispatcher.h:65
bool operator==(const CYIVariant &rLHS, const CYIVariant &rRHS)
Supported types: Int, String, Float, FloatVector and Quaternion.
YI_SPECIAL_EVENT_TARGET_TYPE m_eSpecialTypes
Definition: YiEventTarget.h:116
Definition: YiEventTarget.h:45
Definition: YiEventTarget.h:26