diff --git a/SHADE_Engine/src/Physics/SHPhysicsSystem.cpp b/SHADE_Engine/src/Physics/SHPhysicsSystem.cpp index c3cd5ebc..44142aaf 100644 --- a/SHADE_Engine/src/Physics/SHPhysicsSystem.cpp +++ b/SHADE_Engine/src/Physics/SHPhysicsSystem.cpp @@ -246,21 +246,6 @@ namespace SHADE if (physicsObject.rp3dBody == nullptr) continue; - auto* rigidBodyComponent = SHComponentManager::GetComponent_s(entityID); - - // Clear all forces and velocities if editor is not in play - if (SHSystemManager::GetSystem()->editorState == SHEditor::State::STOP) - { - if (rigidBodyComponent) - { - auto* rp3dRigidBody = reinterpret_cast(physicsObject.rp3dBody); - rp3dRigidBody->resetForce(); - rp3dRigidBody->resetTorque(); - rp3dRigidBody->setLinearVelocity(SHVec3::Zero); - rp3dRigidBody->setAngularVelocity(SHVec3::Zero); - } - } - const auto* transformComponent = SHComponentManager::GetComponent_s(entityID); if (transformComponent && transformComponent->HasChanged()) { @@ -270,10 +255,21 @@ namespace SHADE physicsObject.SetPosition(WORLD_POS); physicsObject.SetOrientation(WORLD_ROT); + auto* rigidBodyComponent = SHComponentManager::GetComponent_s(entityID); if (rigidBodyComponent) { rigidBodyComponent->position = WORLD_POS; rigidBodyComponent->orientation = WORLD_ROT; + + // Clear all forces and velocities if editor is stopped + if (SHSystemManager::GetSystem()->editorState == SHEditor::State::STOP) + { + auto* rp3dRigidBody = reinterpret_cast(physicsObject.rp3dBody); + rp3dRigidBody->resetForce(); + rp3dRigidBody->resetTorque(); + rp3dRigidBody->setLinearVelocity(SHVec3::Zero); + rp3dRigidBody->setAngularVelocity(SHVec3::Zero); + } } auto* colliderComponent = SHComponentManager::GetComponent_s(entityID);