Kohi Game Engine
event.h
Go to the documentation of this file.
1 
17 #pragma once
18 
19 #include "defines.h"
20 
27 typedef struct event_context {
28  // 128 bytes
29  union {
31  i64 i64[2];
33  u64 u64[2];
34 
36  f64 f64[2];
37 
39  i32 i32[4];
41  u32 u32[4];
43  f32 f32[4];
44 
46  i16 i16[8];
47 
49  u16 u16[8];
50 
52  i8 i8[16];
54  u8 u8[16];
55 
60  struct {
61  // The size of the data pointed to.
63  // A pointer to a memory block of data to be included with the event.
64  void* data;
66 
68  const char* s;
69  } data;
71 
81 typedef b8 (*PFN_on_event)(u16 code, void* sender, void* listener_inst, event_context data);
82 
86 b8 event_system_initialize(u64* memory_requirement, void* state, void* config);
87 
91 void event_system_shutdown(void* state);
92 
101 KAPI b8 event_register(u16 code, void* listener, PFN_on_event on_event);
102 
113 KAPI b8 event_register_single(u16 code, void* listener, PFN_on_event on_event);
114 
123 KAPI b8 event_unregister(u16 code, void* listener, PFN_on_event on_event);
124 
133 KAPI b8 event_fire(u16 code, void* sender, event_context context);
134 
136 typedef enum system_event_code {
139 
146 
153 
163 
173 
183 
192 
202 
210 
211  // Change the render mode for debugging purposes.
212  /* Context usage:
213  * i32 mode = context.data.i32[0];
214  */
216 
224 
235 
247 
253 
259 
266 
267 #if KOHI_HOT_RELOAD
274  EVENT_CODE_ASSET_HOT_RELOADED = 0x23,
275 
282  EVENT_CODE_VFS_FILE_WRITTEN_TO_DISK = 0x24,
283 
290  EVENT_CODE_VFS_FILE_DELETED_FROM_DISK = 0x25,
291 
292 #endif
293 
306 
319 
331 
339 
347 
355 
364 
366  MAX_EVENT_CODE = 0xFF
This file contains global type definitions which are used throughout the entire engine and applicatio...
#define KAPI
Import/export qualifier.
Definition: defines.h:209
unsigned int u32
Unsigned 32-bit integer.
Definition: defines.h:27
signed char i8
Signed 8-bit integer.
Definition: defines.h:35
_Bool b8
8-bit boolean type
Definition: defines.h:60
float f32
32-bit floating point number
Definition: defines.h:49
double f64
64-bit floating point number
Definition: defines.h:52
signed int i32
Signed 32-bit integer.
Definition: defines.h:41
unsigned short u16
Unsigned 16-bit integer.
Definition: defines.h:24
signed short i16
Signed 16-bit integer.
Definition: defines.h:38
unsigned long long u64
Unsigned 64-bit integer.
Definition: defines.h:30
signed long long i64
Signed 64-bit integer.
Definition: defines.h:44
unsigned char u8
Unsigned 8-bit integer.
Definition: defines.h:21
KAPI b8 event_fire(u16 code, void *sender, event_context context)
Fires an event to listeners of the given code. If an event handler returns true, the event is conside...
system_event_code
System internal event codes. Application should use codes beyond 255.
Definition: event.h:136
@ EVENT_CODE_BUTTON_PRESSED
Mouse button pressed. Context usage: u16 x = data.data.i16[0]; u16 y = data.data.i16[1]; u16 delta_x ...
Definition: event.h:162
@ EVENT_CODE_DEBUG15
Definition: event.h:246
@ EVENT_CODE_DEBUG10
Definition: event.h:241
@ EVENT_CODE_BUTTON_CLICKED
Mouse button pressed then released. Context usage: u16 x = data.data.i16[0]; u16 y = data....
Definition: event.h:182
@ EVENT_CODE_ANIMATION_COMPLETE
An event fired when an animation completes.
Definition: event.h:346
@ EVENT_CODE_DEBUG11
Definition: event.h:242
@ EVENT_CODE_AUDIO_STARTED
An event fired when an audio starts playing.
Definition: event.h:354
@ EVENT_CODE_DEBUG9
Definition: event.h:240
@ EVENT_CODE_DEBUG5
Definition: event.h:236
@ EVENT_CODE_DEBUG14
Definition: event.h:245
@ EVENT_CODE_DEBUG7
Definition: event.h:238
@ EVENT_CODE_WINDOW_RESIZED
Resized/resolution of a window changed from the OS. Context usage: u16 width = data....
Definition: event.h:209
@ EVENT_CODE_MOUSE_MOVED
Mouse moved. Context usage: u16 x = data.data.i16[0]; u16 y = data.data.i16[1]; u16 delta_x = data....
Definition: event.h:191
@ MAX_EVENT_CODE
The maximum event code that can be used internally.
Definition: event.h:366
@ EVENT_CODE_CLIPBOARD_PASTE
Clipboard content is ready to be retrieved. NOTE: data is freed by the platform immediately after thi...
Definition: event.h:223
@ EVENT_CODE_MOUSE_DRAG_BEGIN
An event fired when a button is pressed and a mouse movement is done while it is pressed.
Definition: event.h:318
@ EVENT_CODE_BUTTON_RELEASED
Mouse button released. Context usage: u16 x = data.data.i16[0]; u16 y = data.data....
Definition: event.h:172
@ EVENT_CODE_MOUSE_DRAG_END
An event fired when a button is released was previously dragging.
Definition: event.h:330
@ EVENT_CODE_ANIMATION_STARTED
An event fired when an animation starts.
Definition: event.h:338
@ EVENT_CODE_MOUSE_WHEEL
Mouse moved. Context usage: u16 x = data.data.i16[0]; u16 y = data.data.i16[1]; u16 delta_x = data....
Definition: event.h:201
@ EVENT_CODE_AUDIO_COMPLETE
An event fired when an audio completes.
Definition: event.h:363
@ EVENT_CODE_KEY_RELEASED
Keyboard key released. Context usage: u16 key_code = data.data.u16[0]; u16 repeat_count = data....
Definition: event.h:152
@ EVENT_CODE_SET_RENDER_MODE
Definition: event.h:215
@ EVENT_CODE_DEBUG3
Special-purpose debugging event. Context will vary over time.
Definition: event.h:232
@ EVENT_CODE_KEY_PRESSED
Keyboard key pressed. Context usage: u16 key_code = data.data.u16[0]; u16 repeat_count = data....
Definition: event.h:145
@ EVENT_CODE_DEBUG1
Special-purpose debugging event. Context will vary over time.
Definition: event.h:228
@ EVENT_CODE_DEBUG4
Special-purpose debugging event. Context will vary over time.
Definition: event.h:234
@ EVENT_CODE_KVAR_CHANGED
An event fired by the kvar system when a kvar has been updated. Context usage: kvar_change* change = ...
Definition: event.h:265
@ EVENT_CODE_DEBUG13
Definition: event.h:244
@ EVENT_CODE_DEBUG2
Special-purpose debugging event. Context will vary over time.
Definition: event.h:230
@ EVENT_CODE_DEBUG0
Special-purpose debugging event. Context will vary over time.
Definition: event.h:226
@ EVENT_CODE_DEBUG6
Definition: event.h:237
@ EVENT_CODE_MOUSE_DRAGGED
An event fired while a button is being held down and the mouse is moved.
Definition: event.h:305
@ EVENT_CODE_DEBUG12
Definition: event.h:243
@ EVENT_CODE_DEFAULT_RENDERTARGET_REFRESH_REQUIRED
An event fired by the renderer backend to indicate when any render targets associated with the defaul...
Definition: event.h:258
@ EVENT_CODE_APPLICATION_QUIT
Shuts the application down on the next frame.
Definition: event.h:138
@ EVENT_CODE_OBJECT_HOVER_ID_CHANGED
The hovered-over object id, if there is one. Context usage: i32 id = context.data....
Definition: event.h:252
@ EVENT_CODE_DEBUG8
Definition: event.h:239
struct event_context event_context
Represents event contextual data to be sent along with an event code when an event is fired....
KAPI b8 event_register_single(u16 code, void *listener, PFN_on_event on_event)
Register to listen for when a single event is sent with the provided code. Events with duplicate list...
KAPI b8 event_register(u16 code, void *listener, PFN_on_event on_event)
Register to listen for when events are sent with the provided code. Events with duplicate listener/ca...
b8 event_system_initialize(u64 *memory_requirement, void *state, void *config)
Initializes the event system.
void event_system_shutdown(void *state)
Shuts the event system down.
b8(* PFN_on_event)(u16 code, void *sender, void *listener_inst, event_context data)
A function pointer typedef which is used for event subscriptions by the subscriber.
Definition: event.h:81
KAPI b8 event_unregister(u16 code, void *listener, PFN_on_event on_event)
Unregister from listening for when events are sent with the provided code. If no matching registratio...
Represents event contextual data to be sent along with an event code when an event is fired....
Definition: event.h:27
void * data
Definition: event.h:64
const char * s
A free-form string. If used, should be freed by sender or listener.
Definition: event.h:68
struct event_context::@117::@118 custom_data
Allows a pointer to arbitrary data to be passed. Also includes size info. NOTE: If used,...
u64 size
Definition: event.h:62