|
|
|
|
@ -18,11 +18,11 @@
|
|
|
|
|
#include "hexlib.h" |
|
|
|
|
#include "hexgame.h" |
|
|
|
|
|
|
|
|
|
#if 0 |
|
|
|
|
#define PROJ_TYPE ORTHOGRAPHIC |
|
|
|
|
#else |
|
|
|
|
#define PROJ_TYPE PERSPECTIVE |
|
|
|
|
#endif |
|
|
|
|
#define MOVE_SPEED 5.f |
|
|
|
|
#define ROTATE_SPEED 0.005f |
|
|
|
|
#define CAMERA_Z_CLAMP_ANGLE 85.f |
|
|
|
|
//#define PROJ_TYPE ORTHOGRAPHIC
|
|
|
|
|
#define PROJ_TYPE PERSPECTIVE |
|
|
|
|
|
|
|
|
|
const char * VERTEX_SHADER_CODE = |
|
|
|
|
"#version 330 core\n" |
|
|
|
|
@ -272,6 +272,8 @@ initShaderProgram(gl_render_group &rg, const char * vertex_code, const char * fr
|
|
|
|
|
void |
|
|
|
|
initMatrices(projection_type p) |
|
|
|
|
{ |
|
|
|
|
// TODO: many constants used here should be passed as args
|
|
|
|
|
|
|
|
|
|
if (p == PERSPECTIVE) |
|
|
|
|
{ |
|
|
|
|
g_scene_matrices.projection = glm::infinitePerspective( |
|
|
|
|
@ -391,8 +393,6 @@ moveCamera(bool up, bool left, bool down, bool right, bool forward, bool backwar
|
|
|
|
|
if (!up && !left && !down && !right && !forward && !backward) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
float d = 5.f; // units per frame
|
|
|
|
|
|
|
|
|
|
glm::vec3 f = g_camera.forward; |
|
|
|
|
glm::vec3 u = g_camera.up; |
|
|
|
|
glm::vec3 old = g_camera.position; |
|
|
|
|
@ -415,7 +415,7 @@ moveCamera(bool up, bool left, bool down, bool right, bool forward, bool backwar
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
glm::normalize(v); |
|
|
|
|
p += (v * d); |
|
|
|
|
p += (v * MOVE_SPEED); |
|
|
|
|
glm::vec3 diff = old - p; |
|
|
|
|
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;
|
|
|
|
|
@ -427,11 +427,11 @@ rotateCamera(int32 xrel, int32 yrel)
|
|
|
|
|
camera &c = g_camera; |
|
|
|
|
float &h = c.hAngle; |
|
|
|
|
float &v = c.vAngle; |
|
|
|
|
h += 0.005f * xrel; |
|
|
|
|
v -= 0.005f * yrel; |
|
|
|
|
h += ROTATE_SPEED * xrel; |
|
|
|
|
v -= ROTATE_SPEED * yrel; |
|
|
|
|
|
|
|
|
|
// clamp vAngle to + or - 85 degrees to prevent gimbal lock
|
|
|
|
|
float a = glm::radians(85.f); |
|
|
|
|
// clamp vAngle to prevent gimbal lock
|
|
|
|
|
float a = glm::radians(CAMERA_Z_CLAMP_ANGLE); |
|
|
|
|
if (v < (-1 * a)) v = (-1 * a); |
|
|
|
|
if (v > a) v = a; |
|
|
|
|
|
|
|
|
|
|