11#include "game/camera.h"
22
33#include "cglm/cam.h"
4+ #include <stdlib.h>
5+ #include <string.h>
46#include "game/model.h"
57#include "math_funcs.h"
68#include "misc/globals.h"
@@ -17,6 +19,9 @@ struct te_camera {
1719 // NULL if not attached.
1820 te_model * parent_model ;
1921
22+ // NULL if not set.
23+ char * name ;
24+
2025 // View matrix. May be outdated, see @ref is_view_mat_outdated.
2126 mat4 view_mat ;
2227
@@ -68,6 +73,7 @@ camera_create() {
6873 te_camera * camera = malloc (sizeof (te_camera ));
6974
7075 camera -> world = NULL ;
76+ camera -> name = NULL ;
7177 camera -> parent_model = NULL ;
7278 glm_vec3_zero (camera -> position );
7379 glm_vec3_zero (camera -> rotation );
@@ -92,6 +98,7 @@ camera_create() {
9298
9399void
94100camera_destroy (te_camera * camera ) {
101+ free (camera -> name );
95102 free (camera );
96103}
97104
@@ -100,6 +107,24 @@ camera_get_type_id(void) {
100107 return "camera" ;
101108}
102109
110+ void
111+ camera_set_name (te_camera * camera , const char * name ) {
112+ free (camera -> name );
113+ camera -> name = NULL ;
114+
115+ if (name != NULL ) {
116+ const size_t len = strlen (name );
117+ camera -> name = malloc (sizeof (char ) * (len + 1 ));
118+ memcpy (camera -> name , name , sizeof (char ) * len );
119+ camera -> name [len ] = 0 ;
120+ }
121+ }
122+
123+ const char *
124+ camera_get_name (te_camera * camera ) {
125+ return camera -> name ;
126+ }
127+
103128void
104129camera_register_type (void ) {
105130 te_type_info * info = type_info_create (camera_get_type_id ());
@@ -108,6 +133,7 @@ camera_register_type(void) {
108133 type_info_add_uint_variable (info , "vertical_fov" , camera_set_vertical_fov , camera_get_vertical_fov );
109134 type_info_add_float_variable (info , "near_clip" , camera_set_near_clip , camera_get_near_clip );
110135 type_info_add_float_variable (info , "far_clip" , camera_set_far_clip , camera_get_far_clip );
136+ type_info_add_string_variable (info , "name" , camera_set_name , camera_get_name );
111137
112138 type_database_register_type (info );
113139}
0 commit comments