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 ktransform_system_state;
36 struct texture_system_state;
37 struct font_system_state;
38 struct kmaterial_system_state;
39 struct static_mesh_system_state;
40 struct kmodel_system_state;
41 struct light_system_state;
42 struct camera_system_state;
43 struct plugin_system_state;
44 struct rendergraph_system_state;
45 struct asset_system_state;
46 struct vfs_state;
47 struct kwindow;
48 
49 typedef struct engine_system_states {
51  struct platform_state* platform_system;
52 
54  struct console_state* console_system;
55 
57  struct kvar_state* kvar_system;
58 
60  struct event_state* event_system;
61 
63  struct input_state* input_system;
64 
66  struct ktimeline_system_state* timeline_system;
67 
69  struct shader_system_state* shader_system;
70 
72  struct renderer_system_state* renderer_system;
73 
75  struct job_system_state* job_system;
76 
78  struct kaudio_system_state* audio_system;
79 
81  struct ktransform_system_state* ktransform_system;
82 
84  struct texture_system_state* texture_system;
85 
87  struct font_system_state* font_system;
88 
90  struct kmaterial_system_state* material_system;
92 
94  struct static_mesh_system_state* static_mesh_system;
95 
98 
101 
103  struct camera_system_state* camera_system;
104 
106  struct plugin_system_state* plugin_system;
107 
109  struct rendergraph_system_state* rendergraph_system;
110 
113 
115  struct asset_system_state* asset_state;
117 
126 KAPI b8 engine_create(struct application* app, const char* app_config_path, const char* game_lib_name);
127 
134 
141 
148 
153 
155 
156 KAPI khandle engine_external_system_register(u64 system_state_memory_requirement);
157 
159 
This file contains global type definitions which are used throughout the entire engine and applicatio...
#define KAPI
Import/export qualifier.
Definition: defines.h:209
_Bool b8
8-bit boolean type
Definition: defines.h:60
unsigned long long u64
Unsigned 64-bit integer.
Definition: defines.h:30
KAPI const engine_system_states * engine_systems_get(void)
Obtains a constant pointer to the collection of system states from the engine.
KAPI struct application * engine_app_state_get(void)
KAPI b8 engine_create(struct application *app, const char *app_config_path, const char *game_lib_name)
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:49
u64 model_system_memory_requirement
Definition: engine.h:99
struct vfs_state * vfs_system_state
Definition: engine.h:112
u64 platform_memory_requirement
Definition: engine.h:50
u64 input_system_memory_requirement
Definition: engine.h:62
u64 material_system_memory_requirement
Definition: engine.h:89
struct texture_system_state * texture_system
Definition: engine.h:84
u64 timeline_system_memory_requirement
Definition: engine.h:65
u64 renderer_system_memory_requirement
Definition: engine.h:71
struct console_state * console_system
Definition: engine.h:54
struct kmaterial_system_state * material_system
Definition: engine.h:90
struct kaudio_system_state * audio_system
Definition: engine.h:78
struct ktransform_system_state * ktransform_system
Definition: engine.h:81
struct static_mesh_system_state * static_mesh_system
Definition: engine.h:94
struct platform_state * platform_system
Definition: engine.h:51
u64 plugin_system_memory_requirement
Definition: engine.h:105
struct font_system_state * font_system
Definition: engine.h:87
struct camera_system_state * camera_system
Definition: engine.h:103
struct renderer_system_state * renderer_system
Definition: engine.h:72
struct event_state * event_system
Definition: engine.h:60
struct shader_system_state * shader_system
Definition: engine.h:69
u64 font_system_memory_requirement
Definition: engine.h:86
u64 static_mesh_system_memory_requirement
Definition: engine.h:93
struct ktimeline_system_state * timeline_system
Definition: engine.h:66
u64 light_system_memory_requirement
Definition: engine.h:96
u64 event_system_memory_requirement
Definition: engine.h:59
u64 texture_system_memory_requirement
Definition: engine.h:83
struct kvar_state * kvar_system
Definition: engine.h:57
struct kmaterial_renderer * material_renderer
Definition: engine.h:91
u64 vfs_system_memory_requirement
Definition: engine.h:111
u64 asset_system_memory_requirement
Definition: engine.h:114
struct asset_system_state * asset_state
Definition: engine.h:115
u64 kaudio_system_memory_requirement
Definition: engine.h:77
struct light_system_state * light_system
Definition: engine.h:97
struct rendergraph_system_state * rendergraph_system
Definition: engine.h:109
u64 console_memory_requirement
Definition: engine.h:53
struct plugin_system_state * plugin_system
Definition: engine.h:106
u64 rendergraph_system_memory_requirement
Definition: engine.h:108
u64 camera_system_memory_requirement
Definition: engine.h:102
struct kmodel_system_state * model_system
Definition: engine.h:100
u64 job_system_memory_requirement
Definition: engine.h:74
u64 kvar_system_memory_requirement
Definition: engine.h:56
struct input_state * input_system
Definition: engine.h:63
u64 ktransform_system_memory_requirement
Definition: engine.h:80
u64 shader_system_memory_requirement
Definition: engine.h:68
struct job_system_state * job_system
Definition: engine.h:75
Engine-level current frame-specific data.
Definition: frame_data.h:15
A handle is a unique identifier used a system in the engine to avoid using raw pointers where possibl...
Definition: khandle.h:25
State for the material renderer.
Definition: kmaterial_renderer.h:131
Definition: kmodel_system.h:168
Represents a window in the application.
Definition: platform.h:71
Definition: light_system.h:93
Definition: vfs.h:84
Contains the Virtual File System (VFS), which sits atop the packaging layer and OS file I/O layer.