From 3037fd79bcfa58ade4a36a1007db6dcbbcaab89a Mon Sep 17 00:00:00 2001 From: "seer-by-sentry[bot]" <157164994+seer-by-sentry[bot]@users.noreply.github.com> Date: Sat, 27 Dec 2025 16:40:06 +0000 Subject: [PATCH] Locomotor: Use explicit turning physics via rotateTowardsPosition for angle-based movement --- .../Source/GameLogic/Object/Locomotor.cpp | 14 ++++++++++++-- .../Source/GameLogic/Object/Locomotor.cpp | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/Generals/Code/GameEngine/Source/GameLogic/Object/Locomotor.cpp b/Generals/Code/GameEngine/Source/GameLogic/Object/Locomotor.cpp index 649e2c2bfa6..899d55a7f54 100644 --- a/Generals/Code/GameEngine/Source/GameLogic/Object/Locomotor.cpp +++ b/Generals/Code/GameEngine/Source/GameLogic/Object/Locomotor.cpp @@ -1617,7 +1617,12 @@ void Locomotor::moveTowardsPositionLegs(Object* obj, PhysicsBehavior *physics, c } Real relAngle = stdAngleDiff(desiredAngle, angle); - locoUpdate_moveTowardsAngle(obj, desiredAngle); + Coord3D desiredPos; + desiredPos.x = obj->getPosition()->x + Cos(desiredAngle) * 1000.0f; + desiredPos.y = obj->getPosition()->y + Sin(desiredAngle) * 1000.0f; + desiredPos.z = obj->getPosition()->z; + PhysicsTurningType rotating = rotateTowardsPosition(obj, desiredPos); + physics->setTurning(rotating); // // Modulate speed according to turning. The more we have to turn, the slower we go @@ -1738,7 +1743,12 @@ void Locomotor::moveTowardsPositionClimb(Object* obj, PhysicsBehavior *physics, relAngle = stdAngleDiff(desiredAngle, angle); } - locoUpdate_moveTowardsAngle(obj, desiredAngle); + Coord3D desiredPos; + desiredPos.x = obj->getPosition()->x + Cos(desiredAngle) * 1000.0f; + desiredPos.y = obj->getPosition()->y + Sin(desiredAngle) * 1000.0f; + desiredPos.z = obj->getPosition()->z; + PhysicsTurningType rotating = rotateTowardsPosition(obj, desiredPos); + physics->setTurning(rotating); // // Modulate speed according to turning. The more we have to turn, the slower we go diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Locomotor.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Locomotor.cpp index 65b0c00583a..2ed2c7eafde 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Locomotor.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Locomotor.cpp @@ -1647,7 +1647,12 @@ void Locomotor::moveTowardsPositionLegs(Object* obj, PhysicsBehavior *physics, c } Real relAngle = stdAngleDiff(desiredAngle, angle); - locoUpdate_moveTowardsAngle(obj, desiredAngle); + Coord3D desiredPos; + desiredPos.x = obj->getPosition()->x + Cos(desiredAngle) * 1000.0f; + desiredPos.y = obj->getPosition()->y + Sin(desiredAngle) * 1000.0f; + desiredPos.z = obj->getPosition()->z; + PhysicsTurningType rotating = rotateTowardsPosition(obj, desiredPos); + physics->setTurning(rotating); // // Modulate speed according to turning. The more we have to turn, the slower we go @@ -1768,7 +1773,12 @@ void Locomotor::moveTowardsPositionClimb(Object* obj, PhysicsBehavior *physics, relAngle = stdAngleDiff(desiredAngle, angle); } - locoUpdate_moveTowardsAngle(obj, desiredAngle); + Coord3D desiredPos; + desiredPos.x = obj->getPosition()->x + Cos(desiredAngle) * 1000.0f; + desiredPos.y = obj->getPosition()->y + Sin(desiredAngle) * 1000.0f; + desiredPos.z = obj->getPosition()->z; + PhysicsTurningType rotating = rotateTowardsPosition(obj, desiredPos); + physics->setTurning(rotating); // // Modulate speed according to turning. The more we have to turn, the slower we go