From: Peter Schaefer Date: Tue, 14 Apr 2015 13:21:44 +0000 (+0200) Subject: move faster in front direction X-Git-Url: https://git.leopard-lacewing.eu/?a=commitdiff_plain;h=265aee55bb50979b5f1a88ae34af2c1f7be96dd4;p=cgue_weave.git move faster in front direction --- diff --git a/Weave/Graphix/Scene.cpp b/Weave/Graphix/Scene.cpp index c6eff2c..3166671 100644 --- a/Weave/Graphix/Scene.cpp +++ b/Weave/Graphix/Scene.cpp @@ -10,6 +10,11 @@ #include "Shader.h" +#define TIME_TILL_MAX_MOVE 2 + +#define SPEED_MOVE_NORMAL 1.5f +#define MOVE_FASTER 2.f + /* Scene::Scene() : SceneObjects(new list), @@ -23,7 +28,8 @@ viewPort(new ViewPort(x, y, width, height, fovy, zNear, zFar)), SceneObjects(new list), ShaderSet(new set), newObjects(true), - lookat(_lookat) + lookat(_lookat), + move_delta(0) { @@ -34,14 +40,16 @@ viewPort(new ViewPort(x, y, width, height, fovy, zNear, zFar)), SceneObjects(_Scene->SceneObjects), ShaderSet((_Scene->ShaderSet)), newObjects(false), - lookat(_lookat) + lookat(_lookat), + move_delta(0) { } Scene::Scene(Scene* _Scene) : SceneObjects(_Scene->SceneObjects), ShaderSet((_Scene->ShaderSet)), - newObjects(false) + newObjects(false), + move_delta(0) { } @@ -84,12 +92,25 @@ void Scene::update(float deltaT) //int view_x = Events::getViewX(); //int view_y = Events::getViewY(); - if (move_x){ + if (move_x) + lookat->move(SPEED_MOVE_NORMAL *move_x * deltaT * viewPort->rotateDirection(vec3(-1.f, 0.f, 0.f))); //TODO vorwärts schneller gehen nach einer sekunde - lookat->move(3.f * deltaT *move_x * viewPort->rotateDirection(vec3(-1.f, 0.f, 0.f))); + if (move_y){ + if (move_y > 0){ + if (move_delta < TIME_TILL_MAX_MOVE) + move_delta += deltaT; + if (move_delta > TIME_TILL_MAX_MOVE) + move_delta = TIME_TILL_MAX_MOVE; + lookat->move(SPEED_MOVE_NORMAL * (MOVE_FASTER * move_delta / TIME_TILL_MAX_MOVE + 1) *move_y * deltaT * viewPort->rotateDirection(vec3(0.f, 0.f, -1.f))); + } + else + lookat->move(SPEED_MOVE_NORMAL *move_y * deltaT * viewPort->rotateDirection(vec3(0.f, 0.f, -1.f))); } - if (move_y) - lookat->move(3.f *move_y * deltaT * viewPort->rotateDirection(vec3(0.f, 0.f, -1.f))); + else + { + move_delta = 0; + } + diff --git a/Weave/Graphix/Scene.h b/Weave/Graphix/Scene.h index ee985d8..1556ee1 100644 --- a/Weave/Graphix/Scene.h +++ b/Weave/Graphix/Scene.h @@ -41,4 +41,6 @@ protected: bool newObjects; SceneList* SceneObjects; set* ShaderSet; + + float move_delta; };