aboutsummaryrefslogtreecommitdiff
path: root/src/scene/camera.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/scene/camera.c')
-rw-r--r--src/scene/camera.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/scene/camera.c b/src/scene/camera.c
new file mode 100644
index 0000000..be7d806
--- /dev/null
+++ b/src/scene/camera.c
@@ -0,0 +1,37 @@
1#include "camera_impl.h"
2
3#include "node_impl.h"
4#include "scene_memory.h"
5
6#include <assert.h>
7
8SceneCamera* gfx_make_camera() {
9 SceneCamera* camera = mem_alloc_camera();
10
11 camera->camera = camera_perspective(
12 /*fovy=*/90.0 * TO_RAD, /*aspect=*/16.0 / 9.0,
13 /*near=*/0.1, /*far=*/1000);
14
15 return camera;
16}
17
18void gfx_destroy_camera(SceneCamera** camera) {
19 assert(camera);
20 if (*camera) {
21 if ((*camera)->parent.val) {
22 gfx_del_node((*camera)->parent);
23 }
24 mem_free_camera(camera);
25 }
26}
27
28void gfx_set_camera_camera(SceneCamera* scene_camera, Camera* camera) {
29 assert(scene_camera);
30 assert(camera);
31 scene_camera->camera = *camera;
32}
33
34Camera* gfx_get_camera_camera(SceneCamera* camera) {
35 assert(camera);
36 return &camera->camera;
37}