#ifndef RT_APP_H #define RT_APP_H /* Platform specific application entry point */ #include "runtime.h" #include "main_loop.h" #ifdef __cplusplus extern "C" { #endif typedef void rt_app_register_cvars_fn(void); typedef void rt_app_init_fn(void); typedef void rt_app_shutdown_fn(void); typedef struct { /* Called before initialization. */ rt_app_register_cvars_fn *RegisterCVars; /* Called after the runtime has finished initialization and * before entering the main-loop */ rt_app_init_fn *Init; /* Called after the main-loop and before the runtime starts its shutdown. */ rt_app_shutdown_fn *Shutdown; /* Called by the update thread for each frame */ rt_main_loop_update_fn *Update; /* Called by the render thread for each frame */ rt_main_loop_render_fn *Render; } rt_app_callbacks; #ifdef _WIN32 /* Forward declared here, to avoid including windows.h */ struct HINSTANCE__; RT_DLLEXPORT int rtWin32Entry(struct HINSTANCE__ *hInstance, struct HINSTANCE__ *hPrevInstance, wchar_t *pCmdLine, int nCmdShow, rt_app_callbacks app_callbacks); #elif defined(RT_USE_XLIB) RT_DLLEXPORT int rtXlibEntry(int argc, char **argv, rt_app_callbacks app_callbacks); #endif #ifdef __cplusplus } #endif #endif