From cc6527bb26501c3c8572f1c71a1161dcf5bd0f14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Wed, 23 Mar 2022 01:18:10 +0100 Subject: [PATCH] ksys/phys: Simplify calls to RigidBody::makeScopedLock Add another overload which automatically determines whether the rigid body world should also be locked. --- src/KingSystem/Physics/RigidBody/physRigidBody.cpp | 6 +++--- src/KingSystem/Physics/RigidBody/physRigidBody.h | 1 + .../Physics/RigidBody/physRigidBodyMotionSensor.cpp | 6 +++--- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/KingSystem/Physics/RigidBody/physRigidBody.cpp b/src/KingSystem/Physics/RigidBody/physRigidBody.cpp index 0b1965eb..a7e506dc 100644 --- a/src/KingSystem/Physics/RigidBody/physRigidBody.cpp +++ b/src/KingSystem/Physics/RigidBody/physRigidBody.cpp @@ -452,7 +452,7 @@ void RigidBody::replaceMotionObject() { } void RigidBody::x_10() { - auto lock = makeScopedLock(isAddedToWorld()); + auto lock = makeScopedLock(); if (isEntity()) { if (mMotionAccessor && @@ -544,7 +544,7 @@ void RigidBody::resetFrozenState() { } void RigidBody::updateCollidableQualityType(bool high_quality) { - auto lock = makeScopedLock(isAddedToWorld()); + auto lock = makeScopedLock(); if (isCharacterControllerType()) { setCollidableQualityType(HK_COLLIDABLE_QUALITY_CHARACTER); @@ -712,7 +712,7 @@ static void resetCollisionFilterInfoForListShapes(const hkpShape* shape) { void RigidBody::setCollisionFilterInfo(u32 info) { const auto current_layer = getContactLayer(); - const auto lock = makeScopedLock(isAddedToWorld()); + const auto lock = makeScopedLock(); if (getCollisionFilterInfo() != info) { if (isAddedToWorld()) { diff --git a/src/KingSystem/Physics/RigidBody/physRigidBody.h b/src/KingSystem/Physics/RigidBody/physRigidBody.h index 3ecde253..0d85df51 100644 --- a/src/KingSystem/Physics/RigidBody/physRigidBody.h +++ b/src/KingSystem/Physics/RigidBody/physRigidBody.h @@ -513,6 +513,7 @@ public: [[nodiscard]] auto makeScopedLock(bool also_lock_world) { return ScopedLock(this, also_lock_world); } + [[nodiscard]] auto makeScopedLock() { return makeScopedLock(isAddedToWorld()); } hkpMotion* getMotion() const; diff --git a/src/KingSystem/Physics/RigidBody/physRigidBodyMotionSensor.cpp b/src/KingSystem/Physics/RigidBody/physRigidBodyMotionSensor.cpp index a31f019f..76a9b923 100644 --- a/src/KingSystem/Physics/RigidBody/physRigidBodyMotionSensor.cpp +++ b/src/KingSystem/Physics/RigidBody/physRigidBodyMotionSensor.cpp @@ -270,7 +270,7 @@ float RigidBodyMotionSensor::getMaxAngularVelocity() { } void RigidBodyMotionSensor::setLinkedRigidBody(RigidBody* body) { - auto lock = mBody->makeScopedLock(mBody->isAddedToWorld()); + auto lock = mBody->makeScopedLock(); if (mLinkedRigidBody == body) return; @@ -302,7 +302,7 @@ void RigidBodyMotionSensor::resetLinkedRigidBody() { if (!mLinkedRigidBody) return; - auto lock = mBody->makeScopedLock(mBody->isAddedToWorld()); + auto lock = mBody->makeScopedLock(); if (mLinkedRigidBody) { mLinkedRigidBody->getEntityMotionAccessorForSensor()->deregisterAccessor(this); mLinkedRigidBody = nullptr; @@ -319,7 +319,7 @@ bool RigidBodyMotionSensor::isFlag40000Set() const { } void RigidBodyMotionSensor::copyMotionFromLinkedRigidBody() { - auto lock = mBody->makeScopedLock(mBody->isAddedToWorld()); + auto lock = mBody->makeScopedLock(); auto* accessor = mLinkedRigidBody->getEntityMotionAccessorForSensor(); auto* linked_hk_body = mLinkedRigidBody->getHkBody();