38 |
38 |
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, AscCameraParams camera_params) { |
44 if (scene->root != NULL) { |
44 if (scene->root != NULL) { |
45 asc_wprintf("Scene %"PRIxPTR" is already initialized - initialization skipped.", (uintptr_t) scene); |
45 asc_wprintf("Scene %"PRIxPTR" is already initialized - initialization skipped.", (uintptr_t) scene); |
46 return; |
46 return; |
47 } |
47 } |
|
48 if (camera_params.type == ASC_CAMERA_ORTHO) { |
|
49 asc_camera_ortho(&scene->camera, camera_params.ortho.rect); |
|
50 } else if (camera_params.type == ASC_CAMERA_PERSPECTIVE) { |
|
51 // TODO: implement |
|
52 asc_wprintf("Camera type PERSPECTIVE is not yet implemented."); |
|
53 } else { |
|
54 // at least zero all the bytes (law of the least surprise) |
|
55 memset(&scene->camera, 0, sizeof(AscCamera)); |
|
56 } |
|
57 scene->camera.viewport_update_func = camera_params.viewport_update_func; |
|
58 scene->root = asc_scene_node_empty(); |
|
59 |
48 asc_dprintf("Initialized scene %"PRIxPTR, (uintptr_t) scene); |
60 asc_dprintf("Initialized scene %"PRIxPTR, (uintptr_t) scene); |
49 // TODO: how should we initialize the camera? |
|
50 scene->root = asc_scene_node_empty(); |
|
51 } |
61 } |
52 |
62 |
53 void asc_scene_destroy(AscScene *scene) { |
63 void asc_scene_destroy(AscScene *scene) { |
54 if (scene->root == NULL) return; |
64 if (scene->root == NULL) return; |
55 |
65 |