no mouse change when not captured

This commit is contained in:
veclav talica 2024-07-31 00:18:01 +03:00
parent 7f1efce310
commit 967ed0ea9b
3 changed files with 16 additions and 14 deletions

View File

@ -14,19 +14,21 @@ static void ingame_tick(struct state *state) {
static t_camera cam = { .pos = { 32, 0, 1 }, .up = { 0, 1, 0 }, .fov = (float)M_PI_2 }; static t_camera cam = { .pos = { 32, 0, 1 }, .up = { 0, 1, 0 }, .fov = (float)M_PI_2 };
const float sensitivity = 0.6f; /* TODO: put this in a better place */ if (input_is_mouse_captured(&ctx.input)) {
scn->yaw += (float)ctx.input.mouse_relative_position.x * sensitivity; const float sensitivity = 0.6f; /* TODO: put this in a better place */
scn->pitch -= (float)ctx.input.mouse_relative_position.y * sensitivity; scn->yaw += (float)ctx.input.mouse_relative_position.x * sensitivity;
scn->pitch = clampf(scn->pitch, -89.0f, 89.0f); scn->pitch -= (float)ctx.input.mouse_relative_position.y * sensitivity;
scn->pitch = clampf(scn->pitch, -89.0f, 89.0f);
const float yaw_rad = scn->yaw * (float)DEG2RAD; const float yaw_rad = scn->yaw * (float)DEG2RAD;
const float pitch_rad = scn->pitch * (float)DEG2RAD; const float pitch_rad = scn->pitch * (float)DEG2RAD;
cam.target = m_vec_norm(((t_fvec3){ cam.target = m_vec_norm(((t_fvec3){
cosf(yaw_rad) * cosf(pitch_rad), cosf(yaw_rad) * cosf(pitch_rad),
sinf(pitch_rad), sinf(pitch_rad),
sinf(yaw_rad) * cosf(pitch_rad) sinf(yaw_rad) * cosf(pitch_rad)
})); }));
}
const t_fvec3 right = m_vec_norm(m_vec_cross(cam.target, cam.up)); const t_fvec3 right = m_vec_norm(m_vec_cross(cam.target, cam.up));
const float speed = 0.04f; /* TODO: put this in a better place */ const float speed = 0.04f; /* TODO: put this in a better place */

View File

@ -11,7 +11,7 @@ typedef struct camera {
t_fvec3 pos; /* eye position */ t_fvec3 pos; /* eye position */
t_fvec3 target; /* normalized target vector */ t_fvec3 target; /* normalized target vector */
t_fvec3 up; /* normalized up vector */ t_fvec3 up; /* normalized up vector */
float fov; /* field of view, in radians */ float fov; /* field of view, in radians */
} t_camera; } t_camera;
t_matrix4 camera_look_at(const t_camera *camera); t_matrix4 camera_look_at(const t_camera *camera);

View File

@ -64,8 +64,8 @@ static void draw_uncolored_space_traingle_batch(struct mesh_batch *batch,
struct uncolored_space_triangle_payload *payload = struct uncolored_space_triangle_payload *payload =
&((union uncolored_space_triangle *)batch->primitives)[i].payload; &((union uncolored_space_triangle *)batch->primitives)[i].payload;
t_frect srcrect = textures_get_srcrect(&ctx.texture_cache, texture_key); const t_frect srcrect = textures_get_srcrect(&ctx.texture_cache, texture_key);
t_frect dims = textures_get_dims(&ctx.texture_cache, texture_key); const t_frect dims = textures_get_dims(&ctx.texture_cache, texture_key);
/* TODO: fast path for uvs mapped directly on srcrect corners? */ /* TODO: fast path for uvs mapped directly on srcrect corners? */