From ae0606b8ec4718c0a1781e2ceaaed1263668ad01 Mon Sep 17 00:00:00 2001 From: Peter Schaefer Date: Wed, 24 Jun 2015 17:36:21 +0200 Subject: [PATCH] FPS capped small modifications for falling --- Weave/Fps.cpp | 11 +++++++++++ Weave/Fps.h | 1 + Weave/Game.cpp | 4 ++-- Weave/Scene/SceneObject.cpp | 6 +++--- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Weave/Fps.cpp b/Weave/Fps.cpp index 4091535..06b76de 100644 --- a/Weave/Fps.cpp +++ b/Weave/Fps.cpp @@ -3,6 +3,8 @@ #include "SDL2\SDL.h" #include "Average.h" +#define DELTA_CAP 100 + /* Übernimmt die FPS berechnungen */ @@ -31,9 +33,18 @@ Uint32 Fps::getAvFPS() const float Fps::getDelta() const { + return delta / 1000.f; } +float Fps::getCappedDelta() const +{ + if (delta > DELTA_CAP) + return DELTA_CAP / 1000.f; + else + return delta / 1000.f; +} + float Fps::getAvDelta() const { return av_delta / 1000.f; diff --git a/Weave/Fps.h b/Weave/Fps.h index fdc805a..0480145 100644 --- a/Weave/Fps.h +++ b/Weave/Fps.h @@ -11,6 +11,7 @@ public: /* FrameZeit in Millisekunden */ operator float() const; + float getCappedDelta() const; /* FrameZeit in Millisekunden*/ float getDelta() const; diff --git a/Weave/Game.cpp b/Weave/Game.cpp index abe9332..f44fe4a 100644 --- a/Weave/Game.cpp +++ b/Weave/Game.cpp @@ -102,8 +102,8 @@ void Game::play() Sleep(sleep_time); #endif Events::processEvents(); - - update(fps); + //Message::info(std::to_string(fps.getDelta())); + update(fps.getCappedDelta()); Graphix::clear(); diff --git a/Weave/Scene/SceneObject.cpp b/Weave/Scene/SceneObject.cpp index 453a410..cd2a3cf 100644 --- a/Weave/Scene/SceneObject.cpp +++ b/Weave/Scene/SceneObject.cpp @@ -153,14 +153,14 @@ void SceneObject::update(float deltaT) //Fallen if (!yStatic) { - if (yFloorDist>0 || ySpeed!=0) + if (yFloorDist>0) { if (ySpeed*deltaT < yFloorDist || ySpeed>0) move(vec3(0.f, ySpeed*deltaT, 0.f)); else { move(vec3(0.f, yFloorDist, 0.f)); - ySpeed = 0; //set to FloorSpeed? + // ySpeed = 0; //set to FloorSpeed? } ySpeed -= deltaT*YFALL_SPEED; } @@ -171,7 +171,7 @@ void SceneObject::update(float deltaT) btTransform tmp; tmp.setFromOpenGLMatrix(value_ptr(modelMat)); bt_collision_object->setWorldTransform(tmp); - yFloorDist = INFINITY; + yFloorDist = 100; } void SceneObject::draw() const -- 2.47.3