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 
57  char c[16];
58  } data;
60 
70 typedef b8 (*PFN_on_event)(u16 code, void* sender, void* listener_inst, event_context data);
71 
75 b8 event_system_initialize(u64* memory_requirement, void* state, void* config);
76 
80 void event_system_shutdown(void* state);
81 
90 KAPI b8 event_register(u16 code, void* listener, PFN_on_event on_event);
91 
100 KAPI b8 event_unregister(u16 code, void* listener, PFN_on_event on_event);
101 
110 KAPI b8 event_fire(u16 code, void* sender, event_context context);
111 
113 typedef enum system_event_code {
116 
122 
128 
134 
140 
147 
153 
160 
161  // Change the render mode for debugging purposes.
162  /* Context usage:
163  * i32 mode = context.data.i32[0];
164  */
166 
177 
183 
189 
194 
201 
208 
219 
230 
240 
242  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:177
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:113
@ EVENT_CODE_BUTTON_PRESSED
Mouse button pressed. Context usage: u16 button = data.data.u16[0];.
Definition: event.h:133
@ EVENT_CODE_WATCHED_FILE_DELETED
An event fired when a watched file has been removed. Context usage: u32 watch_id = context....
Definition: event.h:207
@ EVENT_CODE_MOUSE_MOVED
Mouse moved. Context usage: u16 x = data.data.i16[0]; u16 y = data.data.i16[1];.
Definition: event.h:146
@ EVENT_CODE_RESIZED
Resized/resolution changed from the OS. Context usage: u16 width = data.data.u16[0]; u16 height = dat...
Definition: event.h:159
@ MAX_EVENT_CODE
The maximum event code that can be used internally.
Definition: event.h:242
@ 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:229
@ EVENT_CODE_WATCHED_FILE_WRITTEN
An event fired when a watched file has been written to. Context usage: u32 watch_id = context....
Definition: event.h:200
@ EVENT_CODE_BUTTON_RELEASED
Mouse button released. Context usage: u16 button = data.data.u16[0];.
Definition: event.h:139
@ EVENT_CODE_MOUSE_DRAG_END
An event fired when a button is released was previously dragging.
Definition: event.h:239
@ EVENT_CODE_MOUSE_WHEEL
Mouse moved. Context usage: ui z_delta = data.data.i8[0];.
Definition: event.h:152
@ EVENT_CODE_KEY_RELEASED
Keyboard key released. Context usage: u16 key_code = data.data.u16[0];.
Definition: event.h:127
@ EVENT_CODE_SET_RENDER_MODE
Definition: event.h:165
@ EVENT_CODE_DEBUG3
Special-purpose debugging event. Context will vary over time.
Definition: event.h:174
@ EVENT_CODE_KEY_PRESSED
Keyboard key pressed. Context usage: u16 key_code = data.data.u16[0];.
Definition: event.h:121
@ EVENT_CODE_DEBUG1
Special-purpose debugging event. Context will vary over time.
Definition: event.h:170
@ EVENT_CODE_DEBUG4
Special-purpose debugging event. Context will vary over time.
Definition: event.h:176
@ EVENT_CODE_KVAR_CHANGED
An event fired by the kvar system when a kvar has been updated.
Definition: event.h:193
@ EVENT_CODE_DEBUG2
Special-purpose debugging event. Context will vary over time.
Definition: event.h:172
@ EVENT_CODE_DEBUG0
Special-purpose debugging event. Context will vary over time.
Definition: event.h:168
@ EVENT_CODE_MOUSE_DRAGGED
An event fired while a button is being held down and the mouse is moved.
Definition: event.h:218
@ 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:188
@ EVENT_CODE_APPLICATION_QUIT
Shuts the application down on the next frame.
Definition: event.h:115
@ EVENT_CODE_OBJECT_HOVER_ID_CHANGED
The hovered-over object id, if there is one. Context usage: i32 id = context.data....
Definition: event.h:182
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:70
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
char c[16]
An array of 16 characters.
Definition: event.h:57
union event_context::@0 data