#ifndef TWN_ENGINE_CONTEXT_C_H #define TWN_ENGINE_CONTEXT_C_H #include "twn_context.h" #include "twn_textures_c.h" #include "twn_engine_api.h" #include "twn_input.h" #include "rendering/twn_rendering_c.h" #include #include #include typedef struct engine_context { /* user code facing context */ t_ctx game; /* the program's actual argc and argv */ int argc; char **argv; struct primitive_2d *render_queue_2d; struct mesh_batch_item *uncolored_mesh_batches; struct text_cache text_cache; struct texture_cache texture_cache; struct audio_channel_item *audio_channels; SDL_AudioDeviceID audio_device; int audio_stream_frequency; SDL_AudioFormat audio_stream_format; uint8_t audio_stream_channel_count; /* main loop machinery */ int64_t clocks_per_second; int64_t prev_frame_time; int64_t desired_frametime; /* how long one tick should be */ int64_t frame_accumulator; int64_t delta_averager_residual; int64_t time_averager[4]; SDL_GLContext *gl_context; SDL_Window *window; uint32_t window_id; bool resync_flag; bool was_successful; } t_engine_ctx; TWN_API extern t_engine_ctx ctx; #endif