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  union {
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 
111 KAPI b8 event_unregister(u16 code, void* listener, PFN_on_event on_event);
112 
121 KAPI b8 event_fire(u16 code, void* sender, event_context context);
122 
124 typedef enum system_event_code {
127 
134 
141 
149 
157 
165 
172 
178 
186 
187  // Change the render mode for debugging purposes.
188  /* Context usage:
189  * i32 mode = context.data.i32[0];
190  */
192 
203 
215 
221 
227 
234 
235 #if KOHI_HOT_RELOAD
242  EVENT_CODE_ASSET_HOT_RELOADED = 0x23,
243 
250  EVENT_CODE_VFS_FILE_WRITTEN_TO_DISK = 0x24,
251 
258  EVENT_CODE_VFS_FILE_DELETED_FROM_DISK = 0x25,
259 
260 #endif
261 
272 
283 
293 
295  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:205
unsigned int u32
Unsigned 32-bit integer.
Definition: defines.h:25
signed char i8
Signed 8-bit integer.
Definition: defines.h:33
_Bool b8
8-bit boolean type
Definition: defines.h:58
float f32
32-bit floating point number
Definition: defines.h:47
double f64
64-bit floating point number
Definition: defines.h:50
signed int i32
Signed 32-bit integer.
Definition: defines.h:39
unsigned short u16
Unsigned 16-bit integer.
Definition: defines.h:22
signed short i16
Signed 16-bit integer.
Definition: defines.h:36
unsigned long long u64
Unsigned 64-bit integer.
Definition: defines.h:28
signed long long i64
Signed 64-bit integer.
Definition: defines.h:42
unsigned char u8
Unsigned 8-bit integer.
Definition: defines.h:19
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:124
@ EVENT_CODE_BUTTON_PRESSED
Mouse button pressed. Context usage: u16 button = data.data.u16[0]; u16 x = data.data....
Definition: event.h:148
@ EVENT_CODE_DEBUG15
Definition: event.h:214
@ EVENT_CODE_DEBUG10
Definition: event.h:209
@ EVENT_CODE_BUTTON_CLICKED
Mouse button pressed then released. Context usage: u16 button = data.data.u16[0]; u16 x = data....
Definition: event.h:164
@ EVENT_CODE_DEBUG11
Definition: event.h:210
@ EVENT_CODE_DEBUG9
Definition: event.h:208
@ EVENT_CODE_DEBUG5
Definition: event.h:204
@ EVENT_CODE_DEBUG14
Definition: event.h:213
@ EVENT_CODE_DEBUG7
Definition: event.h:206
@ EVENT_CODE_WINDOW_RESIZED
Resized/resolution of a window changed from the OS. Context usage: u16 width = data....
Definition: event.h:185
@ EVENT_CODE_MOUSE_MOVED
Mouse moved. Context usage: u16 x = data.data.i16[0]; u16 y = data.data.i16[1];.
Definition: event.h:171
@ MAX_EVENT_CODE
The maximum event code that can be used internally.
Definition: event.h:295
@ 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:282
@ EVENT_CODE_BUTTON_RELEASED
Mouse button released. Context usage: u16 button = data.data.u16[0]; u16 x = data....
Definition: event.h:156
@ EVENT_CODE_MOUSE_DRAG_END
An event fired when a button is released was previously dragging.
Definition: event.h:292
@ EVENT_CODE_MOUSE_WHEEL
Mouse moved. Context usage: ui z_delta = data.data.i8[0];.
Definition: event.h:177
@ EVENT_CODE_KEY_RELEASED
Keyboard key released. Context usage: u16 key_code = data.data.u16[0]; u16 repeat_count = data....
Definition: event.h:140
@ EVENT_CODE_SET_RENDER_MODE
Definition: event.h:191
@ EVENT_CODE_DEBUG3
Special-purpose debugging event. Context will vary over time.
Definition: event.h:200
@ EVENT_CODE_KEY_PRESSED
Keyboard key pressed. Context usage: u16 key_code = data.data.u16[0]; u16 repeat_count = data....
Definition: event.h:133
@ EVENT_CODE_DEBUG1
Special-purpose debugging event. Context will vary over time.
Definition: event.h:196
@ EVENT_CODE_DEBUG4
Special-purpose debugging event. Context will vary over time.
Definition: event.h:202
@ 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:233
@ EVENT_CODE_DEBUG13
Definition: event.h:212
@ EVENT_CODE_DEBUG2
Special-purpose debugging event. Context will vary over time.
Definition: event.h:198
@ EVENT_CODE_DEBUG0
Special-purpose debugging event. Context will vary over time.
Definition: event.h:194
@ EVENT_CODE_DEBUG6
Definition: event.h:205
@ EVENT_CODE_MOUSE_DRAGGED
An event fired while a button is being held down and the mouse is moved.
Definition: event.h:271
@ EVENT_CODE_DEBUG12
Definition: event.h:211
@ 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:226
@ EVENT_CODE_APPLICATION_QUIT
Shuts the application down on the next frame.
Definition: event.h:126
@ EVENT_CODE_OBJECT_HOVER_ID_CHANGED
The hovered-over object id, if there is one. Context usage: i32 id = context.data....
Definition: event.h:220
@ EVENT_CODE_DEBUG8
Definition: event.h:207
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(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
u64 size
Definition: event.h:62
union event_context::@67::@68 custom_data
Allows a pointer to arbitrary data to be passed. Also includes size info. NOTE: If used,...