Added: Static fps member to dolphin.cpp, auto-updated with engine->fps, made player movement multiplied by deltatime of last frame.

This commit is contained in:
Foxar
2020-12-08 14:42:43 +01:00
parent 4557485cab
commit 45edf7aedb
3 changed files with 9 additions and 2 deletions
+4 -1
View File
@@ -16,6 +16,8 @@ const u8 WATER_SIZE = 100;
const u8 OYSTERS_COUNT = 15; const u8 OYSTERS_COUNT = 15;
float Dolphin::engineFPS = 60.F;
Dolphin::Dolphin(Engine *t_engine) : engine(t_engine), camera(&engine->screen) Dolphin::Dolphin(Engine *t_engine) : engine(t_engine), camera(&engine->screen)
{ {
oysters = new Collectible[OYSTERS_COUNT]; oysters = new Collectible[OYSTERS_COUNT];
@@ -93,8 +95,9 @@ void Dolphin::onInit()
void Dolphin::onUpdate() void Dolphin::onUpdate()
{ {
Dolphin::engineFPS = engine->fps;
if (engine->pad.isCrossClicked) if (engine->pad.isCrossClicked)
printf("PlayerPos (%f,%f), FPS:%f\n", player.mesh.position.x, player.mesh.position.z, this->engine->fps); printf("Delta multiplier: %f\n", 60.0F / engine->fps);
float xDist = player.mesh.position.x - water.position.x; float xDist = player.mesh.position.x - water.position.x;
float zDist = player.mesh.position.z - water.position.z; float zDist = player.mesh.position.z - water.position.z;
+1
View File
@@ -33,6 +33,7 @@ public:
void onUpdate(); void onUpdate();
Engine *engine; Engine *engine;
static float engineFPS;
private: private:
LightBulb bulb; LightBulb bulb;
+4 -1
View File
@@ -9,6 +9,7 @@
*/ */
#include "player.hpp" #include "player.hpp"
#include "dolphin.hpp"
#include <loaders/obj_loader.hpp> #include <loaders/obj_loader.hpp>
#include <loaders/bmp_loader.hpp> #include <loaders/bmp_loader.hpp>
@@ -38,7 +39,6 @@ void Player::update(Pad &t_pad)
lift += 0.05F; lift += 0.05F;
if (lift < 0.1F && lift > -0.1F) if (lift < 0.1F && lift > -0.1F)
lift = 0; lift = 0;
velocity = 0;
if (t_pad.lJoyV <= 100) if (t_pad.lJoyV <= 100)
velocity = 1; velocity = 1;
else if (t_pad.lJoyV >= 200) else if (t_pad.lJoyV >= 200)
@@ -81,9 +81,12 @@ void Player::update(Pad &t_pad)
mesh.playAnimation(1, 14, 0); mesh.playAnimation(1, 14, 0);
} }
velocity *= 60.0F / Dolphin::engineFPS; //Moving by deltatime of last frame.
mesh.position.z += mesh.position.z +=
Math::cos(mesh.rotation.z) * velocity * (bIsJumping + 1); Math::cos(mesh.rotation.z) * velocity * (bIsJumping + 1);
mesh.position.x += mesh.position.x +=
Math::sin(mesh.rotation.z) * velocity * (bIsJumping + 1); Math::sin(mesh.rotation.z) * velocity * (bIsJumping + 1);
mesh.position.y += lift; mesh.position.y += lift;
velocity = 0;
} }