From 5b0bb98688343657c437fd755051ec6f22d82095 Mon Sep 17 00:00:00 2001 From: 3gg <3gg@shellblade.net> Date: Fri, 31 Oct 2025 20:12:53 -0700 Subject: Simplify Scene --- src/render/renderer.c | 4 ++-- src/scene/scene.c | 14 ++++++++++---- src/scene/scene_impl.h | 6 +----- 3 files changed, 13 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/render/renderer.c b/src/render/renderer.c index fadf521..b513ed4 100644 --- a/src/render/renderer.c +++ b/src/render/renderer.c @@ -208,7 +208,7 @@ void gfx_render_scene(Renderer* renderer, const RenderSceneParams* params) { gfx_llr_set_camera(renderer->llr, camera); gfx_llr_set_aspect(renderer->llr, aspect); - draw_recursively(&state, mat4_id(), scene->root); + draw_recursively(&state, mat4_id(), gfx_get_scene_root(scene)); } static void update_rec(SceneNode* node, const Camera* camera, R t) { @@ -240,6 +240,6 @@ void gfx_update(Scene* scene, const Camera* camera, R t) { assert(scene); assert(camera); - SceneNode* node = gfx_get_scene_root(scene); + SceneNode* node = gfx_get_scene_root_mut(scene); update_rec(node, camera, t); } diff --git a/src/scene/scene.c b/src/scene/scene.c index 8c53810..52ddb58 100644 --- a/src/scene/scene.c +++ b/src/scene/scene.c @@ -7,19 +7,25 @@ Scene* gfx_make_scene(void) { Scene* scene = mem_alloc_scene(); - scene->root = gfx_make_node(); + scene->root = mem_get_node_index(gfx_make_node()); return scene; } void gfx_destroy_scene(Scene** scene) { assert(scene); if (*scene) { - gfx_destroy_node(&(*scene)->root); + SceneNode* node = mem_get_node((*scene)->root); + gfx_destroy_node(&node); mem_free_scene(scene); } } -SceneNode* gfx_get_scene_root(Scene* scene) { +const SceneNode* gfx_get_scene_root(const Scene* scene) { assert(scene); - return scene->root; + return mem_get_node(scene->root); +} + +SceneNode* gfx_get_scene_root_mut(Scene* scene) { + assert(scene); + return (SceneNode*)gfx_get_scene_root(scene); } diff --git a/src/scene/scene_impl.h b/src/scene/scene_impl.h index 06a69f0..157f891 100644 --- a/src/scene/scene_impl.h +++ b/src/scene/scene_impl.h @@ -4,10 +4,6 @@ #include "../types.h" -typedef struct SceneNode SceneNode; - typedef struct Scene { - SceneNode* root; - scene_idx next; - scene_idx prev; + node_idx root; } Scene; -- cgit v1.2.3