From 213ef687574e589e88f28b295ee4a0b403e2083e Mon Sep 17 00:00:00 2001 From: Peder Bergebakken Sundt Date: Fri, 29 Mar 2019 10:10:56 +0100 Subject: [PATCH] Prettify some of the vector math in scene.cpp --- src/scene.cpp | 8 ++++---- src/utilities/glmhelpers.hpp | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 src/utilities/glmhelpers.hpp diff --git a/src/scene.cpp b/src/scene.cpp index b5d7195..4817fd4 100644 --- a/src/scene.cpp +++ b/src/scene.cpp @@ -13,6 +13,7 @@ #include #include #include +#include using std::cout; using std::endl; @@ -26,6 +27,7 @@ vec3 cameraUpward = vec3(0, 0, 1); const size_t N_GRASS = 150; const size_t N_TREES = 30; const size_t DISPLACEMENT = 40; +const vec2 plane_movement = {0.5, 0.1}; SceneNode* rootNode; SceneNode* hudNode; @@ -264,12 +266,10 @@ void step_scene(double timeDelta) { carNode->position.z = (frh+flh+blh+brh)/4.0; } - plainNode->uvOffset.x -= timeDelta*0.5; - plainNode->uvOffset.y -= timeDelta*0.1; + plainNode->uvOffset -= timeDelta * plane_movement; for (SceneNode* node : movingNodes) { - node->position.x += timeDelta*500/3; - node->position.y += timeDelta*100/3; + node->position += vec3(plane_movement * (timeDelta*1000/3), 0.0); if (node->position.x > 1000.0) node->position.x -= 1000.0; if (node->position.y > 1000.0) node->position.y -= 1000.0; //node->position.z = DISPLACEMENT * (t_perlin.at_bilinear(node->position.x*3/1000, node->position.y*3/1000).x * 2 - 1) - 0.5; diff --git a/src/utilities/glmhelpers.hpp b/src/utilities/glmhelpers.hpp new file mode 100644 index 0000000..18f401a --- /dev/null +++ b/src/utilities/glmhelpers.hpp @@ -0,0 +1,20 @@ +#pragma once +#include + +// prettifies some of the maths with vectors + +constexpr glm::vec2 operator*(glm::vec2 lhs, double rhs) { return lhs *= rhs; } +constexpr glm::vec2 operator/(glm::vec2 lhs, double rhs) { return lhs /= rhs; } +constexpr glm::vec3 operator*(glm::vec3 lhs, double rhs) { return lhs *= rhs; } +constexpr glm::vec3 operator/(glm::vec3 lhs, double rhs) { return lhs /= rhs; } +constexpr glm::vec4 operator*(glm::vec4 lhs, double rhs) { return lhs *= rhs; } +constexpr glm::vec4 operator/(glm::vec4 lhs, double rhs) { return lhs /= rhs; } + +constexpr glm::vec2 operator*(double lhs, glm::vec2 rhs) { return rhs * lhs; } +constexpr glm::vec2 operator/(double lhs, glm::vec2 rhs) { return rhs / lhs; } +constexpr glm::vec3 operator*(double lhs, glm::vec3 rhs) { return rhs * lhs; } +constexpr glm::vec3 operator/(double lhs, glm::vec3 rhs) { return rhs / lhs; } +constexpr glm::vec4 operator*(double lhs, glm::vec4 rhs) { return rhs * lhs; } +constexpr glm::vec4 operator/(double lhs, glm::vec4 rhs) { return rhs / lhs; } + +constexpr glm::vec2 flip(glm::vec2 a) { return {a.y, a.x}; }