src/scene.c

changeset 96
9e25f080a33e
parent 95
622887f7e954
equal deleted inserted replaced
95:622887f7e954 96:9e25f080a33e
39 #include <GL/glew.h> 39 #include <GL/glew.h>
40 40
41 #include <assert.h> 41 #include <assert.h>
42 42
43 void asc_scene_init(AscScene *scene) { 43 void asc_scene_init(AscScene *scene) {
44 if (scene->root != NULL) {
45 asc_wprintf("Scene %"PRIxPTR" is already initialized - initialization skipped.", (uintptr_t) scene);
46 return;
47 }
44 asc_dprintf("Initialized scene %"PRIxPTR, (uintptr_t) scene); 48 asc_dprintf("Initialized scene %"PRIxPTR, (uintptr_t) scene);
45 // TODO: how should we initialize the camera? 49 // TODO: how should we initialize the camera?
46 scene->root = asc_scene_node_empty(); 50 scene->root = asc_scene_node_empty();
47 } 51 }
48 52
49 void asc_scene_destroy(AscScene *scene) { 53 void asc_scene_destroy(AscScene *scene) {
54 if (scene->root == NULL) return;
55
50 asc_dprintf("Destroyed scene %"PRIxPTR, (uintptr_t) scene); 56 asc_dprintf("Destroyed scene %"PRIxPTR, (uintptr_t) scene);
51 asc_scene_node_free(scene->root); 57 asc_scene_node_free(scene->root);
52 } 58 }
53 59
54 void asc_scene_draw(AscScene *scene, asc_recti viewport) { 60 void asc_scene_draw(AscScene *scene, asc_recti viewport) {
61 if (scene->root == NULL) return;
62
55 // create render groups 63 // create render groups
56 CxList *render_group[ASC_RENDER_GROUP_COUNT]; 64 CxList *render_group[ASC_RENDER_GROUP_COUNT];
57 cx_for_n(i, ASC_RENDER_GROUP_COUNT) { 65 cx_for_n(i, ASC_RENDER_GROUP_COUNT) {
58 render_group[i] = cxArrayListCreateSimple(CX_STORE_POINTERS, 32); 66 render_group[i] = cxArrayListCreateSimple(CX_STORE_POINTERS, 32);
59 } 67 }

mercurial