2 #include "client/camera.h"
3 #include "client/client.h"
7 static const vec3 world_up = {0.0f, 1.0f, 0.0f};
9 static void camera_update()
12 vec3_add(center, camera.eye, camera.front);
14 mat4x4_look_at(camera.view, camera.eye, center, camera.up);
17 void camera_set_position(v3f32 pos)
19 camera.eye[0] = pos.x;
20 camera.eye[1] = pos.y;
21 camera.eye[2] = pos.z;
26 void camera_set_angle(f32 yaw, f32 pitch)
28 camera.front[0] = camera.movement_dirs.front[0] = cos(yaw) * cos(pitch);
29 camera.front[1] = sin(pitch);
30 camera.front[2] = camera.movement_dirs.front[2] = sin(yaw) * cos(pitch);
32 vec3_norm(camera.front, camera.front);
33 vec3_norm(camera.movement_dirs.front, camera.movement_dirs.front);
35 vec3_mul_cross(camera.right, camera.front, world_up);
36 camera.movement_dirs.right[0] = camera.right[0];
37 camera.movement_dirs.right[2] = camera.right[2];
39 vec3_norm(camera.right, camera.right);
40 vec3_norm(camera.movement_dirs.right, camera.movement_dirs.right);
42 vec3_mul_cross(camera.up, camera.right, camera.front);
43 vec3_norm(camera.up, camera.up);
45 camera.movement_dirs.up[0] = world_up[0];
46 camera.movement_dirs.up[1] = world_up[1];
47 camera.movement_dirs.up[2] = world_up[2];