]> git.lizzy.rs Git - dragonblocks_alpha.git/blob - src/client/scene.h
Use dragonnet
[dragonblocks_alpha.git] / src / client / scene.h
1 #ifndef _SCENE_H_
2 #define _SCENE_H_
3
4 #include <stdbool.h>
5 #include <pthread.h>
6 #include <linmath.h/linmath.h>
7 #include <dragonstd/bintree.h>
8 #include <dragonstd/list.h>
9 #include "types.h"
10 #include "client/object.h"
11
12 extern struct Scene
13 {
14         List objects;
15         Bintree transparent_objects;
16         pthread_mutex_t mtx;
17         GLuint prog;
18         GLint loc_model;
19         GLint loc_VP;
20         GLint loc_daylight;
21         GLint loc_fogColor;
22         GLint loc_ambientLight;
23         GLint loc_lightDir;
24         GLint loc_cameraPos;
25         GLint max_texture_units;
26         mat4x4 VP;
27         mat4x4 projection;
28         f32 fov;
29         f32 render_distance;
30 } scene;
31
32 bool scene_init();
33 void scene_deinit();
34 void scene_add_object(Object *obj);
35 void scene_render(f64 dtime);
36 void scene_on_resize(int width, int height);
37 GLuint scene_get_max_texture_units();
38 void scene_get_view_proj(mat4x4 target);
39
40 #endif