Kohi Game Engine
engine.h
Go to the documentation of this file.
1 
15 #pragma once
16 
17 #include "defines.h"
18 
19 #include "identifiers/khandle.h"
20 #include "platform/vfs.h"
21 
22 struct application;
23 struct frame_data;
24 struct platform_state;
25 struct console_state;
26 struct kvar_state;
27 struct event_state;
28 struct input_state;
29 struct timeline_state;
30 struct resource_state;
31 struct shader_system_state;
32 struct renderer_system_state;
33 struct job_system_state;
34 struct kaudio_system_state;
35 struct xform_system_state;
36 struct texture_system_state;
37 struct font_system_state;
38 struct material_system_state;
39 struct static_mesh_system_state;
40 struct light_system_state;
41 struct camera_system_state;
42 struct plugin_system_state;
43 struct rendergraph_system_state;
44 struct asset_system_state;
45 struct vfs_state;
46 struct kwindow;
47 
48 typedef struct engine_system_states {
50  struct platform_state* platform_system;
51 
53  struct console_state* console_system;
54 
56  struct kvar_state* kvar_system;
57 
59  struct event_state* event_system;
60 
62  struct input_state* input_system;
63 
65  struct timeline_system_state* timeline_system;
66 
68  struct shader_system_state* shader_system;
69 
71  struct renderer_system_state* renderer_system;
72 
74  struct job_system_state* job_system;
75 
77  struct kaudio_system_state* audio_system;
78 
80  struct xform_system_state* xform_system;
81 
83  struct texture_system_state* texture_system;
84 
86  struct font_system_state* font_system;
87 
89  struct material_system_state* material_system;
90 
92  struct static_mesh_system_state* static_mesh_system;
93 
95  struct light_system_state* light_system;
96 
98  struct camera_system_state* camera_system;
99 
101  struct plugin_system_state* plugin_system;
102 
104  struct rendergraph_system_state* rendergraph_system;
105 
108 
110  struct asset_system_state* asset_state;
111 
113  struct kresource_system_state* kresource_state;
115 
123 
130 
137 
144 
149 
150 KAPI khandle engine_external_system_register(u64 system_state_memory_requirement);
151 
153 
This file contains global type definitions which are used throughout the entire engine and applicatio...
#define KAPI
Import/export qualifier.
Definition: defines.h:205
_Bool b8
8-bit boolean type
Definition: defines.h:58
unsigned long long u64
Unsigned 64-bit integer.
Definition: defines.h:28
KAPI const engine_system_states * engine_systems_get(void)
Obtains a constant pointer to the collection of system states from the engine.
KAPI b8 engine_create(struct application *app)
Creates the engine, standing up the platform layer and all underlying subsystems.
KAPI b8 engine_run(struct application *app)
Starts the main engine loop.
void engine_on_event_system_initialized(void)
A callback made when the event system is initialized, which internally allows the engine to begin lis...
KAPI struct kwindow * engine_active_window_get(void)
struct engine_system_states engine_system_states
KAPI void * engine_external_system_state_get(khandle system_handle)
KAPI khandle engine_external_system_register(u64 system_state_memory_requirement)
KAPI const struct frame_data * engine_frame_data_get(void)
Obtains a constant pointer to the current frame data.
A global handle system for Kohi. Handles are used to obtain various resources using a unique handle i...
Represents the basic application state in a application. Called for creation by the application.
Definition: application_types.h:46
Definition: engine.h:48
struct vfs_state * vfs_system_state
Definition: engine.h:107
u64 platform_memory_requirement
Definition: engine.h:49
u64 input_system_memory_requirement
Definition: engine.h:61
u64 xform_system_memory_requirement
Definition: engine.h:79
u64 material_system_memory_requirement
Definition: engine.h:88
struct texture_system_state * texture_system
Definition: engine.h:83
u64 timeline_system_memory_requirement
Definition: engine.h:64
u64 renderer_system_memory_requirement
Definition: engine.h:70
struct console_state * console_system
Definition: engine.h:53
struct kresource_system_state * kresource_state
Definition: engine.h:113
struct kaudio_system_state * audio_system
Definition: engine.h:77
struct static_mesh_system_state * static_mesh_system
Definition: engine.h:92
struct platform_state * platform_system
Definition: engine.h:50
u64 plugin_system_memory_requirement
Definition: engine.h:100
struct font_system_state * font_system
Definition: engine.h:86
struct camera_system_state * camera_system
Definition: engine.h:98
struct renderer_system_state * renderer_system
Definition: engine.h:71
struct event_state * event_system
Definition: engine.h:59
struct shader_system_state * shader_system
Definition: engine.h:68
u64 font_system_memory_requirement
Definition: engine.h:85
struct xform_system_state * xform_system
Definition: engine.h:80
struct timeline_system_state * timeline_system
Definition: engine.h:65
u64 kresource_system_memory_requirement
Definition: engine.h:112
u64 static_mesh_system_memory_requirement
Definition: engine.h:91
u64 light_system_memory_requirement
Definition: engine.h:94
u64 event_system_memory_requirement
Definition: engine.h:58
u64 texture_system_memory_requirement
Definition: engine.h:82
struct kvar_state * kvar_system
Definition: engine.h:56
u64 vfs_system_memory_requirement
Definition: engine.h:106
u64 asset_system_memory_requirement
Definition: engine.h:109
struct asset_system_state * asset_state
Definition: engine.h:110
struct material_system_state * material_system
Definition: engine.h:89
u64 kaudio_system_memory_requirement
Definition: engine.h:76
struct light_system_state * light_system
Definition: engine.h:95
struct rendergraph_system_state * rendergraph_system
Definition: engine.h:104
u64 console_memory_requirement
Definition: engine.h:52
struct plugin_system_state * plugin_system
Definition: engine.h:101
u64 rendergraph_system_memory_requirement
Definition: engine.h:103
u64 camera_system_memory_requirement
Definition: engine.h:97
u64 job_system_memory_requirement
Definition: engine.h:73
u64 kvar_system_memory_requirement
Definition: engine.h:55
struct input_state * input_system
Definition: engine.h:62
u64 shader_system_memory_requirement
Definition: engine.h:67
struct job_system_state * job_system
Definition: engine.h:74
Engine-level current frame-specific data.
Definition: frame_data.h:11
A handle is a unique identifier used a system in the engine to avoid using raw pointers where possibl...
Definition: khandle.h:25
Represents a window in the application.
Definition: platform.h:69
Definition: vfs.h:85
Contains the Virtual File System (VFS), which sits atop the packaging layer and OS file I/O layer.