diff --git a/src/tangerine.cpp b/src/tangerine.cpp index c054cd2..8a52461 100644 --- a/src/tangerine.cpp +++ b/src/tangerine.cpp @@ -19,46 +19,6 @@ GLContext* initGLContext(MemoryArena* arena, // interface -void -initRenderGroup(RenderGroup* rg, - MemoryArena* arena, - shader_program* shader, - u32 num_entities, - const char* name) -{ - rg->max_entities = num_entities; - rg->shader = shader; - rg->name = arenaCopyCStr(arena, name); - rg->entities = ARENA_ALLOC(arena, Entity, num_entities); -} - -void -freeRenderGroup(RenderGroup* rg, MemoryArena* arena) -{ - printf("%s(), should probably look into freeing arena memory?\n", - __FUNCTION__); - assert(0); -} - -Entity* -getFreeEntity(RenderGroup* rg) -{ - if (rg->num_entities < rg->max_entities) - return &rg->entities[rg->num_entities++]; - - printf("%s(), render group full\n", __FUNCTION__); - return nullptr; -} - -RenderGroup* -getFreeRenderGroup(RenderState* rs) -{ - if (rs->num_render_groups < rs->max_render_groups) - return &rs->render_groups[rs->num_render_groups++]; - - printf("%s(), no free render group\n", __FUNCTION__); - return nullptr; -} RenderState* initRenderState(u32 max_models, @@ -115,6 +75,47 @@ freeRenderState(RenderState*& rs) SDL_Quit(); } +void +initRenderGroup(RenderGroup* rg, + MemoryArena* arena, + shader_program* shader, + u32 num_entities, + const char* name) +{ + rg->max_entities = num_entities; + rg->shader = shader; + rg->name = arenaCopyCStr(arena, name); + rg->entities = ARENA_ALLOC(arena, Entity, num_entities); +} + +void +freeRenderGroup(RenderGroup* rg, MemoryArena* arena) +{ + printf("%s(), should probably look into freeing arena memory?\n", + __FUNCTION__); + assert(0); +} + +RenderGroup* +getFreeRenderGroup(RenderState* rs) +{ + if (rs->num_render_groups < rs->max_render_groups) + return &rs->render_groups[rs->num_render_groups++]; + + printf("%s(), no free render group\n", __FUNCTION__); + return nullptr; +} + +Entity* +getFreeEntity(RenderGroup* rg) +{ + if (rg->num_entities < rg->max_entities) + return &rg->entities[rg->num_entities++]; + + printf("%s(), render group full\n", __FUNCTION__); + return nullptr; +} + void doRenderLoop(RenderState* rs, u32 framerate, diff --git a/src/tangerine.h b/src/tangerine.h index 69d496e..edd1954 100644 --- a/src/tangerine.h +++ b/src/tangerine.h @@ -103,8 +103,6 @@ RenderState* initRenderState(u32 max_models = DEFAULT_MODEL_COUNT, void freeRenderState(RenderState*& rs); -RenderGroup* getFreeRenderGroup(RenderState* rs); - #define DEFAULT_ENTITY_COUNT 256 void initRenderGroup(RenderGroup* rg, MemoryArena* arena, @@ -114,6 +112,8 @@ void initRenderGroup(RenderGroup* rg, void freeRenderGroup(RenderGroup* rg, MemoryArena* arena); +RenderGroup* getFreeRenderGroup(RenderState* rs); + Entity* getFreeEntity(RenderGroup* rg); // NOTE: callback function signature to use with renDoRenderLoop()