]> git.leopard-lacewing.eu Git - cgue_weave.git/commitdiff
move faster in front direction
authorPeter Schaefer <schaeferpm@gmail.com>
Tue, 14 Apr 2015 13:21:44 +0000 (15:21 +0200)
committerPeter Schaefer <schaeferpm@gmail.com>
Tue, 14 Apr 2015 13:21:44 +0000 (15:21 +0200)
Weave/Graphix/Scene.cpp
Weave/Graphix/Scene.h

index c6eff2cdf05af3ec27201daa9014b11551ba3b61..31666711859bb28a3df5555ac93425cdd4ae6ca6 100644 (file)
 
 #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<SceneObject*>),
@@ -23,7 +28,8 @@ viewPort(new ViewPort(x, y, width, height, fovy, zNear, zFar)),
        SceneObjects(new list<SceneObject*>), 
        ShaderSet(new set<Shader*>),
        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;
+       }
+
 
 
 
index ee985d811608629b477fa5ffbef7644efa5266d5..1556ee11ded8d30081828f2be6d55ddec0bcba41 100644 (file)
@@ -41,4 +41,6 @@ protected:
        bool newObjects;
        SceneList* SceneObjects;
        set<Shader*>* ShaderSet;
+
+       float move_delta;
 };