aboutsummaryrefslogtreecommitdiff
path: root/src/scene/scene.c
blob: 52ddb58377c0de757fb2eb3d52fd3ab9a3883a19 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "scene_impl.h"

#include "memory.h"
#include "node_impl.h"

#include <assert.h>

Scene* gfx_make_scene(void) {
  Scene* scene = mem_alloc_scene();
  scene->root  = mem_get_node_index(gfx_make_node());
  return scene;
}

void gfx_destroy_scene(Scene** scene) {
  assert(scene);
  if (*scene) {
    SceneNode* node = mem_get_node((*scene)->root);
    gfx_destroy_node(&node);
    mem_free_scene(scene);
  }
}

const SceneNode* gfx_get_scene_root(const Scene* scene) {
  assert(scene);
  return mem_get_node(scene->root);
}

SceneNode* gfx_get_scene_root_mut(Scene* scene) {
  assert(scene);
  return (SceneNode*)gfx_get_scene_root(scene);
}