#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*>),
SceneObjects(new list<SceneObject*>),
ShaderSet(new set<Shader*>),
newObjects(true),
- lookat(_lookat)
+ lookat(_lookat),
+ move_delta(0)
{
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)
{
}
//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;
+ }
+