From 63620efac847969140ccd95f602075d06aad0a79 Mon Sep 17 00:00:00 2001 From: AllyTally Date: Mon, 3 Jul 2023 16:29:23 -0300 Subject: [PATCH] Fix moving entities flashing in over 30fps mode --- desktop_version/src/LevelDebugger.cpp | 18 ++++++++++++++---- desktop_version/src/LevelDebugger.h | 1 + desktop_version/src/Logic.cpp | 4 ++++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/desktop_version/src/LevelDebugger.cpp b/desktop_version/src/LevelDebugger.cpp index dd99e844..91ee8b8c 100644 --- a/desktop_version/src/LevelDebugger.cpp +++ b/desktop_version/src/LevelDebugger.cpp @@ -186,17 +186,27 @@ namespace level_debugger } } } + } + void logic(void) + { if (INBOUNDS_VEC(held_entity, obj.entities)) { - obj.entities[held_entity].xp = key.mx - grabber_offset_x; - obj.entities[held_entity].yp = key.my - grabber_offset_y; + int new_xp = key.mx - grabber_offset_x; + int new_yp = key.my - grabber_offset_y; if (key.isDown(SDLK_LSHIFT) || key.isDown(SDLK_RSHIFT)) { - obj.entities[held_entity].xp -= obj.entities[held_entity].xp % 8; - obj.entities[held_entity].yp -= obj.entities[held_entity].yp % 8; + new_xp -= new_xp % 8; + new_yp -= new_yp % 8; } + + obj.entities[held_entity].xp = new_xp; + obj.entities[held_entity].yp = new_yp; + obj.entities[held_entity].lerpoldxp = new_xp; + obj.entities[held_entity].lerpoldyp = new_yp; + obj.entities[held_entity].oldxp = new_xp; + obj.entities[held_entity].oldyp = new_yp; } if (INBOUNDS_VEC(held_block, obj.blocks)) diff --git a/desktop_version/src/LevelDebugger.h b/desktop_version/src/LevelDebugger.h index e13fc0d0..4d800eb7 100644 --- a/desktop_version/src/LevelDebugger.h +++ b/desktop_version/src/LevelDebugger.h @@ -8,6 +8,7 @@ namespace level_debugger bool is_pausing(void); bool is_active(void); void input(void); + void logic(void); void render(void); void set_forced(void); } diff --git a/desktop_version/src/Logic.cpp b/desktop_version/src/Logic.cpp index eef2c5a7..51e3e71e 100644 --- a/desktop_version/src/Logic.cpp +++ b/desktop_version/src/Logic.cpp @@ -5,6 +5,7 @@ #include "Game.h" #include "GlitchrunnerMode.h" #include "Graphics.h" +#include "LevelDebugger.h" #include "Map.h" #include "Music.h" #include "Network.h" @@ -131,6 +132,7 @@ void gamelogic(void) { if (game.physics_frozen()) { + level_debugger::logic(); return; } @@ -1475,4 +1477,6 @@ void gamelogic(void) #undef gotoroom #undef GOTOROOM + + level_debugger::logic(); }