LibGame  v0.4.0
The LG Game Engine - Copyright (C) 2024-2025 ETMSoftware
lg_scene.h
1 /*
2  * LibGame - Copyright (C) Emmanuel Thomas-Maurin 2011-2025
3  * All rights reserved
4  */
5 
6 #ifndef LG_SCENE_H
7 #define LG_SCENE_H
8 
9 /* LG_Scene is defined in lg_scene_graph.h */
10 /*
11 typedef struct {
12  int id; // Set to -1 on error=
13  LG_Camera *cam1;
14  LG_Light light1;
15  Rec2Df landscape_rec;
16  LG_SceneNode *root;
17  LG_SceneNode *grid;
18  LG_SceneNode *xyz_arrows;
19 } LG_Scene;
20 */
21 
22 /* Standard arrow colors = RGB, alternate colors = purple, green, cyan */
23 #define STANDARD_ARROW_COLORS FALSE
24 
25 /*
26  * NATOS stands for Name And TOS (Transl/Orientation/Scaling)
27  */
28 typedef struct {
29  const char *name;
30  float x_t;
31  float y_t;
32  float z_t;
33  double x_q;
34  double y_q;
35  double z_q;
36  double w_q;
37  float x_s;
38  float y_s;
39  float z_s;
41 
42 /* Scene description */
43 typedef struct {
44  int id;
45  LG_Camera *cam1;
46  LG_Light light1;
47  Rec2Df landscape_rec;
48  LG_SceneNode *root;
49  LG_SceneNode *grid;
50  LG_SceneNode *xyz_arrows;
51  LG_SceneNode *first_obj_node;
52  LG_Mesh_NATOS *mesh_NATOS_list;
53 } LG_Scene_Des;
54 
55 LG_Scene lg_scene_new(int, LG_Camera *, LG_Light, Rec2Df, uint16_t);
56 
57 void lg_scene_free(LG_Scene *);
58 
60 
62 
64 
66 
67 #define transl_v3(x, y, z) vec3(x, y, z)
68 
69 #define scaling_v3(x, y, z) vec3(x, y, z)
70 
71 #endif /* LG_SCENE_H */
LG_LoadMesh_Flags
Definition: lg_mesh.h:107
Rec2Df
Definition: lg_gr_func.h:56
lg_scene_new
LG_Scene lg_scene_new(int id, LG_Camera *cam1, LG_Light light1, Rec2Df landscape_rec, uint16_t grid_width)
Definition: lg_scene.c:45
LG_Quat
Definition: lg_quaternions.h:29
lg_meshNATOS_array_info
void lg_meshNATOS_array_info(LG_Mesh_NATOS *mesh_natos, int n_mesh_natos)
Definition: lg_scene.c:281
lg_TOS_to_matrix
mat4_t lg_TOS_to_matrix(vec3_t transl, LG_Quat rot, vec3_t scaling)
Definition: lg_scene.c:266
lg_scene_free
void lg_scene_free(LG_Scene *scene)
Definition: lg_scene.c:122
LG_SceneNode
Definition: lg_scene_graph.h:30
LG_Scene_Des
Definition: lg_scene.h:43
LG_Scene
Definition: lg_scene_graph.h:49
LG_Light
Definition: lg_light.h:26
vec3_t
Definition: math_3d.h:123
LG_Camera
Definition: lg_camera.h:22
LG_Mesh_NATOS
Definition: lg_scene.h:28
lg_scenenode_new_and_set
LG_SceneNode * lg_scenenode_new_and_set(int id, LG_SceneNode *parent, const char *mesh_file, LG_LoadMesh_Flags flags, vec3_t transl, LG_Quat orientation, vec3_t scaling)
Definition: lg_scene.c:157
lg_meshNATOS_array_to_scenenodes
LG_SceneNode * lg_meshNATOS_array_to_scenenodes(LG_SceneNode *node, LG_LoadMesh_Flags flags, LG_Mesh_NATOS *mesh_natos, int n_mesh_natos)
Definition: lg_scene.c:190
mat4_t
Definition: math_3d.h:180