|
|
|
@ -391,31 +391,31 @@ moveCamera(bool up, bool left, bool down, bool right, bool forward, bool backwar |
|
|
|
if (!up && !left && !down && !right && !forward && !backward) |
|
|
|
if (!up && !left && !down && !right && !forward && !backward) |
|
|
|
return; |
|
|
|
return; |
|
|
|
|
|
|
|
|
|
|
|
// TODO: fix vector addition bug doubling move speed vector magnitude when
|
|
|
|
|
|
|
|
// moving in 2 directions
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
float d = 5.f; // units per frame
|
|
|
|
float d = 5.f; // units per frame
|
|
|
|
|
|
|
|
|
|
|
|
glm::vec3 f = g_camera.forward; |
|
|
|
glm::vec3 f = g_camera.forward; |
|
|
|
glm::vec3 u = g_camera.up; |
|
|
|
glm::vec3 u = g_camera.up; |
|
|
|
glm::vec3 old = g_camera.position; |
|
|
|
glm::vec3 old = g_camera.position; |
|
|
|
glm::vec3 &p = g_camera.position; |
|
|
|
glm::vec3 &p = g_camera.position; |
|
|
|
|
|
|
|
glm::vec3 v(0.f); // normalized direction
|
|
|
|
if (forward) p += f * d; |
|
|
|
|
|
|
|
if (backward) p -= f * d; |
|
|
|
if (forward) v += f; |
|
|
|
if (up) p += u * d; |
|
|
|
if (backward) v -= f; |
|
|
|
if (down) p -= u * d; |
|
|
|
if (up) v += u; |
|
|
|
|
|
|
|
if (down) v -= u; |
|
|
|
if (left) |
|
|
|
if (left) |
|
|
|
{ |
|
|
|
{ |
|
|
|
glm::vec3 l = glm::cross(f, u); |
|
|
|
glm::vec3 l = glm::cross(f, u); |
|
|
|
p -= l * d; |
|
|
|
v -= l; |
|
|
|
} |
|
|
|
} |
|
|
|
if (right) |
|
|
|
if (right) |
|
|
|
{ |
|
|
|
{ |
|
|
|
glm::vec3 r = glm::cross(u, f); |
|
|
|
glm::vec3 r = glm::cross(u, f); |
|
|
|
p -= r * d; |
|
|
|
v -= r; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
glm::normalize(v); |
|
|
|
|
|
|
|
p += (v * d); |
|
|
|
glm::vec3 diff = old - p; |
|
|
|
glm::vec3 diff = old - p; |
|
|
|
g_scene_matrices.view = glm::translate(g_scene_matrices.view, diff); |
|
|
|
g_scene_matrices.view = glm::translate(g_scene_matrices.view, diff); |
|
|
|
g_scene_matrices.MVP = g_scene_matrices.projection * g_scene_matrices.view * g_scene_matrices.model;
|
|
|
|
g_scene_matrices.MVP = g_scene_matrices.projection * g_scene_matrices.view * g_scene_matrices.model;
|
|
|
|
|