ksys/phys: Simplify calls to RigidBody::makeScopedLock

Add another overload which automatically determines whether the rigid
body world should also be locked.
This commit is contained in:
Léo Lam 2022-03-23 01:18:10 +01:00
parent e10e8dcac7
commit cc6527bb26
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
3 changed files with 7 additions and 6 deletions

View File

@ -452,7 +452,7 @@ void RigidBody::replaceMotionObject() {
} }
void RigidBody::x_10() { void RigidBody::x_10() {
auto lock = makeScopedLock(isAddedToWorld()); auto lock = makeScopedLock();
if (isEntity()) { if (isEntity()) {
if (mMotionAccessor && if (mMotionAccessor &&
@ -544,7 +544,7 @@ void RigidBody::resetFrozenState() {
} }
void RigidBody::updateCollidableQualityType(bool high_quality) { void RigidBody::updateCollidableQualityType(bool high_quality) {
auto lock = makeScopedLock(isAddedToWorld()); auto lock = makeScopedLock();
if (isCharacterControllerType()) { if (isCharacterControllerType()) {
setCollidableQualityType(HK_COLLIDABLE_QUALITY_CHARACTER); setCollidableQualityType(HK_COLLIDABLE_QUALITY_CHARACTER);
@ -712,7 +712,7 @@ static void resetCollisionFilterInfoForListShapes(const hkpShape* shape) {
void RigidBody::setCollisionFilterInfo(u32 info) { void RigidBody::setCollisionFilterInfo(u32 info) {
const auto current_layer = getContactLayer(); const auto current_layer = getContactLayer();
const auto lock = makeScopedLock(isAddedToWorld()); const auto lock = makeScopedLock();
if (getCollisionFilterInfo() != info) { if (getCollisionFilterInfo() != info) {
if (isAddedToWorld()) { if (isAddedToWorld()) {

View File

@ -513,6 +513,7 @@ public:
[[nodiscard]] auto makeScopedLock(bool also_lock_world) { [[nodiscard]] auto makeScopedLock(bool also_lock_world) {
return ScopedLock(this, also_lock_world); return ScopedLock(this, also_lock_world);
} }
[[nodiscard]] auto makeScopedLock() { return makeScopedLock(isAddedToWorld()); }
hkpMotion* getMotion() const; hkpMotion* getMotion() const;

View File

@ -270,7 +270,7 @@ float RigidBodyMotionSensor::getMaxAngularVelocity() {
} }
void RigidBodyMotionSensor::setLinkedRigidBody(RigidBody* body) { void RigidBodyMotionSensor::setLinkedRigidBody(RigidBody* body) {
auto lock = mBody->makeScopedLock(mBody->isAddedToWorld()); auto lock = mBody->makeScopedLock();
if (mLinkedRigidBody == body) if (mLinkedRigidBody == body)
return; return;
@ -302,7 +302,7 @@ void RigidBodyMotionSensor::resetLinkedRigidBody() {
if (!mLinkedRigidBody) if (!mLinkedRigidBody)
return; return;
auto lock = mBody->makeScopedLock(mBody->isAddedToWorld()); auto lock = mBody->makeScopedLock();
if (mLinkedRigidBody) { if (mLinkedRigidBody) {
mLinkedRigidBody->getEntityMotionAccessorForSensor()->deregisterAccessor(this); mLinkedRigidBody->getEntityMotionAccessorForSensor()->deregisterAccessor(this);
mLinkedRigidBody = nullptr; mLinkedRigidBody = nullptr;
@ -319,7 +319,7 @@ bool RigidBodyMotionSensor::isFlag40000Set() const {
} }
void RigidBodyMotionSensor::copyMotionFromLinkedRigidBody() { void RigidBodyMotionSensor::copyMotionFromLinkedRigidBody() {
auto lock = mBody->makeScopedLock(mBody->isAddedToWorld()); auto lock = mBody->makeScopedLock();
auto* accessor = mLinkedRigidBody->getEntityMotionAccessorForSensor(); auto* accessor = mLinkedRigidBody->getEntityMotionAccessorForSensor();
auto* linked_hk_body = mLinkedRigidBody->getHkBody(); auto* linked_hk_body = mLinkedRigidBody->getHkBody();