aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author3gg <3gg@shellblade.net>2025-10-31 20:12:53 -0700
committer3gg <3gg@shellblade.net>2025-10-31 20:12:53 -0700
commit5b0bb98688343657c437fd755051ec6f22d82095 (patch)
treec95963a82aeda14143facce7c7d089bf791c71e9
parentd3d2bc0c97e5bd29094e1031391ada2ffb0a7153 (diff)
Simplify Scene
-rw-r--r--include/gfx/scene/scene.h3
-rw-r--r--include/gfx/util/skyquad.h1
-rw-r--r--src/render/renderer.c4
-rw-r--r--src/scene/scene.c14
-rw-r--r--src/scene/scene_impl.h6
5 files changed, 15 insertions, 13 deletions
diff --git a/include/gfx/scene/scene.h b/include/gfx/scene/scene.h
index ac1b315..7386349 100644
--- a/include/gfx/scene/scene.h
+++ b/include/gfx/scene/scene.h
@@ -15,4 +15,5 @@ Scene* gfx_make_scene(void);
15void gfx_destroy_scene(Scene**); 15void gfx_destroy_scene(Scene**);
16 16
17/// Get the scene's root node. 17/// Get the scene's root node.
18SceneNode* gfx_get_scene_root(Scene*); 18const SceneNode* gfx_get_scene_root(const Scene*);
19SceneNode* gfx_get_scene_root_mut(Scene*);
diff --git a/include/gfx/util/skyquad.h b/include/gfx/util/skyquad.h
index 2b3fe17..55319e1 100644
--- a/include/gfx/util/skyquad.h
+++ b/include/gfx/util/skyquad.h
@@ -2,7 +2,6 @@
2#pragma once 2#pragma once
3 3
4typedef struct GfxCore GfxCore; 4typedef struct GfxCore GfxCore;
5typedef struct Scene Scene;
6typedef struct SceneNode SceneNode; 5typedef struct SceneNode SceneNode;
7typedef struct SceneObject SceneObject; 6typedef struct SceneObject SceneObject;
8typedef struct Texture Texture; 7typedef struct Texture Texture;
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) {
208 208
209 gfx_llr_set_camera(renderer->llr, camera); 209 gfx_llr_set_camera(renderer->llr, camera);
210 gfx_llr_set_aspect(renderer->llr, aspect); 210 gfx_llr_set_aspect(renderer->llr, aspect);
211 draw_recursively(&state, mat4_id(), scene->root); 211 draw_recursively(&state, mat4_id(), gfx_get_scene_root(scene));
212} 212}
213 213
214static void update_rec(SceneNode* node, const Camera* camera, R t) { 214static void update_rec(SceneNode* node, const Camera* camera, R t) {
@@ -240,6 +240,6 @@ void gfx_update(Scene* scene, const Camera* camera, R t) {
240 assert(scene); 240 assert(scene);
241 assert(camera); 241 assert(camera);
242 242
243 SceneNode* node = gfx_get_scene_root(scene); 243 SceneNode* node = gfx_get_scene_root_mut(scene);
244 update_rec(node, camera, t); 244 update_rec(node, camera, t);
245} 245}
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 @@
7 7
8Scene* gfx_make_scene(void) { 8Scene* gfx_make_scene(void) {
9 Scene* scene = mem_alloc_scene(); 9 Scene* scene = mem_alloc_scene();
10 scene->root = gfx_make_node(); 10 scene->root = mem_get_node_index(gfx_make_node());
11 return scene; 11 return scene;
12} 12}
13 13
14void gfx_destroy_scene(Scene** scene) { 14void gfx_destroy_scene(Scene** scene) {
15 assert(scene); 15 assert(scene);
16 if (*scene) { 16 if (*scene) {
17 gfx_destroy_node(&(*scene)->root); 17 SceneNode* node = mem_get_node((*scene)->root);
18 gfx_destroy_node(&node);
18 mem_free_scene(scene); 19 mem_free_scene(scene);
19 } 20 }
20} 21}
21 22
22SceneNode* gfx_get_scene_root(Scene* scene) { 23const SceneNode* gfx_get_scene_root(const Scene* scene) {
23 assert(scene); 24 assert(scene);
24 return scene->root; 25 return mem_get_node(scene->root);
26}
27
28SceneNode* gfx_get_scene_root_mut(Scene* scene) {
29 assert(scene);
30 return (SceneNode*)gfx_get_scene_root(scene);
25} 31}
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 @@
4 4
5#include "../types.h" 5#include "../types.h"
6 6
7typedef struct SceneNode SceneNode;
8
9typedef struct Scene { 7typedef struct Scene {
10 SceneNode* root; 8 node_idx root;
11 scene_idx next;
12 scene_idx prev;
13} Scene; 9} Scene;