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() {
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()) {

View File

@ -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;

View File

@ -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();