diff options
Diffstat (limited to 'libs/common.h')
-rw-r--r-- | libs/common.h | 77 |
1 files changed, 54 insertions, 23 deletions
diff --git a/libs/common.h b/libs/common.h index 098bc9a..481e356 100644 --- a/libs/common.h +++ b/libs/common.h @@ -632,35 +632,66 @@ look_at(V3F eye, V3F target, V3F up) return(result); } +typedef struct { + V3F pos; + F32 fovx; + F32 near; + F32 far; +} Camera; + V3F -update_camera_pos_orbital(Input input, V3F pos, V3F target, - F32 dt, F32 speed) +get_dv_camera_orbital(Input *input, V3F pos, V3F target, + F32 dt, F32 speed) { - V3F up, f, l, u, dp, new_pos; - + V3F up, f, l, u, dv; + up = v3f(0.0f, 1.0f, 0.0f); f = v3f_norm(v3f_sub(target, pos)); l = v3f_norm(v3f_cross(up, f)); u = v3f_cross(f, l); - - dp = v3f_zero(); - - if (key_is_pressed(input.move_right)) - dp = v3f_sub(dp, l); - if (key_is_pressed(input.move_forward)) - dp = v3f_add(dp, f); - if (key_is_pressed(input.move_left)) - dp = v3f_add(dp, l); - if (key_is_pressed(input.move_backward)) - dp = v3f_sub(dp, f); - if (key_is_pressed(input.move_up)) - dp = v3f_add(dp, u); - if (key_is_pressed(input.move_down)) - dp = v3f_sub(dp, u); - - new_pos = v3f_add(pos, v3f_scalef(dp, speed*dt)); - - return(new_pos); + + dv = v3f_zero(); + + /* + if (key_is_pressed(input->move_right)) + dv = v3f_sub(dv, l); + if (key_is_pressed(input->move_forward)) + dv = v3f_add(dv, f); + if (key_is_pressed(input->move_left)) + dv = v3f_add(dv, l); + if (key_is_pressed(input->move_backward)) + dv = v3f_sub(dv, f); + if (key_is_pressed(input->move_up)) + dv = v3f_add(dv, u); + if (key_is_pressed(input->move_down)) + dv = v3f_sub(dv, u); + */ + if (key_is_pressed(input->move_right)) + { + dv = v3f_sub(dv, l); + dv = v3f_add(dv, f); + dv = v3f_norm(dv); + } + if (key_is_pressed(input->move_forward)) + dv = v3f_add(dv, f); + if (key_is_pressed(input->move_left)) + dv = v3f_add(dv, l); + if (key_is_pressed(input->move_backward)) + dv = v3f_sub(dv, f); + if (key_is_pressed(input->move_up)) + dv = v3f_add(dv, u); + if (key_is_pressed(input->move_down)) + dv = v3f_sub(dv, u); + + dv = v3f_scalef(dv, speed*dt); + + return(dv); } +typedef struct { + Camera camera; + Mesh *mesh; + F32 dt; +} State; + #endif /* COMMON_H */ |