84#define DECLARE_EVENT(eventName) extern "C" EventID eventName##ID = -1;
86#define DECLARE_EVENT(eventName) EventID eventName##ID = -1;
90#define DECLARE_EVENT(eventName) API_EXPORT EventID eventName##ID;
93#define STRINGIFY_DETAIL(x) #x
94#define TOSTRING(x) STRINGIFY_DETAIL(x)
97#define FILE_AND_LINE __FILE__ ":" TOSTRING(__LINE__)
110#define DEFINE_EVENT(eventName, ...) \
116 DECLARE_EVENT(eventName)
123#define CALL_EVENT(eventType, ...) \
124 eventType eventType##_ = { { false }, __VA_ARGS__ }; \
125 EventSystemCallEvent(eventType##ID, &eventType##_, __FILE__, __LINE__, FILE_AND_LINE);
137#define CALL_CANCELLABLE_EVENT(eventType, ...) \
138 eventType eventType##_ = { { false }, __VA_ARGS__ }; \
139 EventSystemCallEvent(eventType##ID, &eventType##_, __FILE__, __LINE__, FILE_AND_LINE); \
140 if (!eventType##_.Event.Cancelled)
147#define CHECK_IF_NOT_CANCELLED(eventType) if (!eventType##_.Event.Cancelled)
152#define CALL_CANCELLABLE_RETURN_EVENT(eventType, ...) \
153 eventType eventType##_ = { { false }, __VA_ARGS__ }; \
154 EventSystemCallEvent(eventType##ID, &eventType##_, __FILE__, __LINE__, FILE_AND_LINE); \
155 if (eventType##_.Event.Cancelled) { \
164#define REGISTER_EVENT(eventType) eventType##ID = EventSystemRegisterEvent(#eventType);
172#define REGISTER_LISTENER(eventType, priority, callback) \
173 EventSystemRegisterListener(eventType##ID, callback, priority, __FILE__, __LINE__);
180#define UNREGISTER_LISTENER(eventType, listenerID) EventSystemUnregisterListener(eventType##ID, listenerID);
API export/import macros for cross-platform shared library symbol visibility.
EventPriority
Priority levels that control listener dispatch order within an event.
Definition EventTypes.h:19
@ EVENT_PRIORITY_HIGH
Invoked last; suitable for override or post-processing handlers.
Definition EventTypes.h:22
@ EVENT_PRIORITY_LOW
Invoked first; suitable for default or early handlers.
Definition EventTypes.h:20
@ EVENT_PRIORITY_NORMAL
Default priority for most listeners.
Definition EventTypes.h:21
int32_t EventID
Numeric identifier for an event. -1 is uninitialized, IDs < -1 are internally registered,...
Definition EventTypes.h:8
TickEvent
Built-in tick phases used by Context::Tick().
Definition EventTypes.h:185
@ TICK_EVENT_UPDATE
Definition EventTypes.h:186
@ TICK_EVENT_DRAW
Definition EventTypes.h:188
@ TICK_EVENT_LATE_UPDATE
Definition EventTypes.h:187
void(* EventCallback)(IEvent *)
Callback signature for event listeners. The argument is the event payload cast to IEvent*.
Definition EventTypes.h:39
int64_t ListenerID
Numeric identifier for a registered listener; used to unregister later.
Definition EventTypes.h:10
Runtime record for a single event listener registration.
Definition EventTypes.h:53
EventCallback Function
The callback to invoke when the event fires.
Definition EventTypes.h:56
ListenerID ID
Unique identifier assigned at registration time.
Definition EventTypes.h:54
EventPriority Priority
Dispatch priority; higher values fire first.
Definition EventTypes.h:55
EventMetadata Metadata
Diagnostic metadata about the registration site.
Definition EventTypes.h:57
Base event payload struct.
Definition EventTypes.h:33
bool Cancelled
Set to true by a listener to indicate the event has been handled and should not propagate further.
Definition EventTypes.h:35