summaryrefslogtreecommitdiff
path: root/libs/common.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/common.h')
-rw-r--r--libs/common.h77
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 */