From a9e1568edc7a6276475926bfdc3941dc8380891e Mon Sep 17 00:00:00 2001 From: "Mr. Capybara" Date: Mon, 13 Nov 2023 14:26:42 -0400 Subject: [PATCH 1/3] Auto WakeUp rigidbodies when set "isKinematic" to false --- Source/Engine/Physics/Actors/RigidBody.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Source/Engine/Physics/Actors/RigidBody.cpp b/Source/Engine/Physics/Actors/RigidBody.cpp index a090104ff..da8006c7d 100644 --- a/Source/Engine/Physics/Actors/RigidBody.cpp +++ b/Source/Engine/Physics/Actors/RigidBody.cpp @@ -34,8 +34,12 @@ void RigidBody::SetIsKinematic(const bool value) if (value == GetIsKinematic()) return; _isKinematic = value; - if (_actor) + if (_actor && _isActive) + { PhysicsBackend::SetRigidDynamicActorFlag(_actor, PhysicsBackend::RigidDynamicFlags::Kinematic, value); + if (!value) + WakeUp(); + } } void RigidBody::SetLinearDamping(float value) From 4ceed361e254c155dfd2a79f73bfaad3ae3f2c81 Mon Sep 17 00:00:00 2001 From: "Mr. Capybara" Date: Mon, 13 Nov 2023 14:28:16 -0400 Subject: [PATCH 2/3] small fix --- Source/Engine/Physics/Actors/RigidBody.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Engine/Physics/Actors/RigidBody.cpp b/Source/Engine/Physics/Actors/RigidBody.cpp index da8006c7d..4aaf3d285 100644 --- a/Source/Engine/Physics/Actors/RigidBody.cpp +++ b/Source/Engine/Physics/Actors/RigidBody.cpp @@ -34,10 +34,10 @@ void RigidBody::SetIsKinematic(const bool value) if (value == GetIsKinematic()) return; _isKinematic = value; - if (_actor && _isActive) + if (_actor) { PhysicsBackend::SetRigidDynamicActorFlag(_actor, PhysicsBackend::RigidDynamicFlags::Kinematic, value); - if (!value) + if (!value && _isActive) WakeUp(); } } From 05ea803582a00cd407eec7d6497c57b520a7b7f0 Mon Sep 17 00:00:00 2001 From: "Mr. Capybara" Date: Mon, 13 Nov 2023 20:05:05 -0400 Subject: [PATCH 3/3] add check for GetStartAwake --- Source/Engine/Physics/Actors/RigidBody.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Engine/Physics/Actors/RigidBody.cpp b/Source/Engine/Physics/Actors/RigidBody.cpp index 4aaf3d285..afbac6611 100644 --- a/Source/Engine/Physics/Actors/RigidBody.cpp +++ b/Source/Engine/Physics/Actors/RigidBody.cpp @@ -37,7 +37,7 @@ void RigidBody::SetIsKinematic(const bool value) if (_actor) { PhysicsBackend::SetRigidDynamicActorFlag(_actor, PhysicsBackend::RigidDynamicFlags::Kinematic, value); - if (!value && _isActive) + if (!value && _isActive && _startAwake) WakeUp(); } }