diff --git a/src/game/client/prediction/entities/character.cpp b/src/game/client/prediction/entities/character.cpp index f94b9ec7633..c608459c7b5 100644 --- a/src/game/client/prediction/entities/character.cpp +++ b/src/game/client/prediction/entities/character.cpp @@ -706,19 +706,11 @@ void CCharacter::HandleSkippableTiles(int Index) } else { - float DotProduct = dot(Direction, m_Core.m_Vel); - // project current speed onto speedup direction - vec2 Projection = Direction * DotProduct; // direction has length one - - // projection might point into opposite direction - float CurrentDirectionalSpeed = std::signbit(DotProduct) * length(Projection); + // hardest to understand + float CurrentDirectionalSpeed = dot(Direction, m_Core.m_Vel); float TempMaxSpeed = MaxSpeed / 5.0f; - //float SpeedupSpeed = length(Direction * Force); // direction has length one if(CurrentDirectionalSpeed + Force > TempMaxSpeed) - { - float NewForce = TempMaxSpeed - CurrentDirectionalSpeed; - TempVel += Direction * NewForce; - } + TempVel += Direction * (TempMaxSpeed - CurrentDirectionalSpeed); else TempVel += Direction * Force; } diff --git a/src/game/server/entities/character.cpp b/src/game/server/entities/character.cpp index c1b0e1a6240..58e135df8a5 100644 --- a/src/game/server/entities/character.cpp +++ b/src/game/server/entities/character.cpp @@ -1482,19 +1482,11 @@ void CCharacter::HandleSkippableTiles(int Index) } else { - float DotProduct = dot(Direction, m_Core.m_Vel); - // project current speed onto speedup direction - vec2 Projection = Direction * DotProduct; // direction has length one - - // projection might point into opposite direction - float CurrentDirectionalSpeed = std::signbit(DotProduct) * length(Projection); + // hardest to understand + float CurrentDirectionalSpeed = dot(Direction, m_Core.m_Vel); float TempMaxSpeed = MaxSpeed / 5.0f; - //float SpeedupSpeed = length(Direction * Force); // direction has length one if(CurrentDirectionalSpeed + Force > TempMaxSpeed) - { - float NewForce = TempMaxSpeed - CurrentDirectionalSpeed; - TempVel += Direction * NewForce; - } + TempVel += Direction * (TempMaxSpeed - CurrentDirectionalSpeed); else TempVel += Direction * Force; }