From 6d4b105403c00d9f98ee72bc6dfb8f69aab08c91 Mon Sep 17 00:00:00 2001 From: Barry Kane Date: Sat, 5 Aug 2023 01:24:43 +0100 Subject: [PATCH] Skip the linear interpolation when the movement is too dramatic. --- src/cspt-state.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/cspt-state.c b/src/cspt-state.c index a45e1a4..8e219f4 100644 --- a/src/cspt-state.c +++ b/src/cspt-state.c @@ -33,6 +33,16 @@ void lerpStates (struct gameState * state, struct gameState * endState) (progress * (endState->clients[index].xPosition - startState->clients[index].xPosition)); state->clients[index].yPosition = startState->clients[index].yPosition + (progress * (endState->clients[index].yPosition - startState->clients[index].yPosition)); + + // If the movement is too dramatic, just go to the new position. Stops "zooming" when teleported: + if (fabs(startState->clients[index].xPosition - endState->clients[index].xPosition) >= 200) + { + state->clients[index].xPosition = endState->clients[index].xPosition; + } + if (fabs(startState->clients[index].yPosition - endState->clients[index].yPosition) >= 200) + { + state->clients[index].yPosition = endState->clients[index].yPosition; + } } usleep(100); }