]> git.leopard-lacewing.eu Git - cgue_weave.git/commitdiff
fixed double Jump Bug (press Jump in 2 following Frames (mouse,leer))
authorPeter Schaefer <schaeferpm@gmail.com>
Sun, 26 Apr 2015 15:11:05 +0000 (17:11 +0200)
committerPeter Schaefer <schaeferpm@gmail.com>
Sun, 26 Apr 2015 15:11:05 +0000 (17:11 +0200)
Weave/Graphix/SceneObject.cpp
Weave/Graphix/SceneObject.h

index 5a53562c7a16abc99a02051943b189a255c498ed..6b145d1cc6bd52391043998bc7f1d1a6189f4a28 100644 (file)
@@ -103,21 +103,28 @@ SceneObject::~SceneObject()
        //              delete texture;
 }
 
+float SceneObject::getFloor() const
+{
+       return 0;
+}
+
 void SceneObject::update(float deltaT)
 {
 
        if (!yStatic)
        {
                vec3 pos = getPosition();
-               if (!floorBound() || ySpeed > 0)        //Aktuelle Bodenhöhe
+               if (!floorBound() || ySpeed!=0)
                {
-                       modelMat = translate(vec3(0.f, ySpeed*deltaT, 0.f))*modelMat;
+                       if (pos.y + ySpeed*deltaT > getFloor())
+                               modelMat = translate(vec3(0.f, ySpeed*deltaT, 0.f))*modelMat;
+                       else
+                       {
+                               modelMat = translate(vec3(0.f, getFloor() - pos.y, 0.f))*modelMat;
+                               ySpeed = 0;
+                       }
                        ySpeed -= deltaT*YFALL_SPEED;
                }
-               else if(floorBound())
-               {
-                       ySpeed = 0;
-               }
 
        }
 
@@ -154,8 +161,7 @@ void SceneObject::collisions(SceneObject* _other)
 bool SceneObject::floorBound() const
 {
        vec3 pos = getPosition();
-       return (pos.y < 0);
-       //TODO real Floor?
+       return (pos.y <= getFloor());
 }
 
 vec3 SceneObject::getPosition() const
index 6efaa75fe2a615eb9a5fffcebe6e65ea0e9c2515..1261179ac3f57bc22195166352781fa2da75e07f 100644 (file)
@@ -57,6 +57,7 @@ public:
 
 
        bool floorBound() const;
+       float getFloor() const;
 
        bool yStatic;
        float ySpeed;