#ifndef __GE_CORE_H__ #define __GE_CORE_H__ #include #include #include #include struct ge_engine_core; typedef struct ge_engine_core ge_core_t; /** * Callback Function */ typedef void (*ge_init_func_t)(ge_core_t* core); typedef void (*ge_exit_func_t)(ge_core_t* core); typedef void (*ge_run_func_t)(ge_core_t* core); typedef enum ge_engine_state { GE_ENGINE_STATE_RUNNING, GE_ENGINE_STATE_EXIT, } ge_engine_state_t; struct ge_engine_core { struct { ge_init_func_t init; ge_exit_func_t exit; ge_run_func_t process; } callbacks; ge_engine_state_t state; ge_ecs_t ecs; DECLARE_GE_KFIFO(einput, ge_uptr_t, 16, ge_event_input_t); struct { ge_uint_t fps; } configs; void* context; struct { ge_render_system_t render; ge_physics_system_t physics; } _systems; ge_render_t _render; ge_timer_t _timer; ge_input_t _input; ge_run_func_t _inner_run; void* _inner_context; }; /** * Basic Call */ int ge_main(ge_core_t* core); void ge_engine_init(ge_core_t *core); void ge_engine_run(ge_core_t *core); #endif // __GE_CORE_H__