2 #include "client/client.h"
3 #include "client/camera.h"
8 vec3 eye, front, right, up;
11 static vec3 world_up = {0.0f, 1.0f, 0.0f};
13 struct camera_movement_dirs camera_movement_dirs;
15 static void camera_update()
18 vec3_add(center, camera.eye, camera.front);
20 mat4x4_look_at(camera.view, camera.eye, center, camera.up);
23 void camera_enable(GLint loc_view)
25 glUniformMatrix4fv(loc_view, 1, GL_FALSE, camera.view[0]);
28 void camera_set_position(v3f pos)
30 camera.eye[0] = pos.x;
31 camera.eye[1] = pos.y;
32 camera.eye[2] = pos.z;
37 void camera_set_angle(f32 yaw, f32 pitch)
39 camera.front[0] = camera_movement_dirs.front[0] = cos(yaw) * cos(pitch);
40 camera.front[1] = sin(pitch);
41 camera.front[2] = camera_movement_dirs.front[2] = sin(yaw) * cos(pitch);
43 vec3_norm(camera.front, camera.front);
44 vec3_norm(camera_movement_dirs.front, camera_movement_dirs.front);
46 vec3_mul_cross(camera.right, camera.front, world_up);
47 camera_movement_dirs.right[0] = camera.right[0];
48 camera_movement_dirs.right[2] = camera.right[2];
50 vec3_norm(camera.right, camera.right);
51 vec3_norm(camera_movement_dirs.right, camera_movement_dirs.right);
53 vec3_mul_cross(camera.up, camera.right, camera.front);
54 vec3_norm(camera.up, camera.up);