2 #include "client/camera.h"
6 static const vec3 world_up = {0.0f, 1.0f, 0.0f};
8 static void camera_update()
11 vec3_add(center, camera.eye, camera.front);
13 mat4x4_look_at(camera.view, camera.eye, center, camera.up);
18 camera_set_position((v3f32) {0.0f, 0.0f, 0.0f});
19 camera_set_angle(0.0f, 0.0f);
22 void camera_set_position(v3f32 pos)
24 camera.eye[0] = pos.x;
25 camera.eye[1] = pos.y;
26 camera.eye[2] = pos.z;
31 void camera_set_angle(f32 yaw, f32 pitch)
33 camera.front[0] = camera.movement_dirs.front[0] = cos(yaw) * cos(pitch);
34 camera.front[1] = sin(pitch);
35 camera.front[2] = camera.movement_dirs.front[2] = sin(yaw) * cos(pitch);
37 vec3_norm(camera.front, camera.front);
38 vec3_norm(camera.movement_dirs.front, camera.movement_dirs.front);
40 vec3_mul_cross(camera.right, camera.front, world_up);
41 camera.movement_dirs.right[0] = camera.right[0];
42 camera.movement_dirs.right[2] = camera.right[2];
44 vec3_norm(camera.right, camera.right);
45 vec3_norm(camera.movement_dirs.right, camera.movement_dirs.right);
47 vec3_mul_cross(camera.up, camera.right, camera.front);
48 vec3_norm(camera.up, camera.up);
50 camera.movement_dirs.up[0] = world_up[0];
51 camera.movement_dirs.up[1] = world_up[1];
52 camera.movement_dirs.up[2] = world_up[2];