ksys/phys: Add RigidBody::isEntity to make certain checks clearer

The pattern we want to use is:

```
if (isEntity())
  do entity stuff (e.g. get entity motion accessor)
```

or

```
if (!isEntity())
  return;

do entity stuff
```

That's clearer than

```
if (isSensor())
  return;

do entity stuff
```

because the fact that !isSensor() is equivalent to isEntity() is not
always immediately clear.
This commit is contained in:
Léo Lam 2022-01-17 17:22:15 +01:00
parent a2cba75b19
commit ddef936b26
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
3 changed files with 9 additions and 8 deletions

View File

@ -326,7 +326,7 @@ bool RigidBody::setLinearVelocity(const sead::Vector3f& velocity, float epsilon)
return false;
}
if (!isSensor() && RigidBodyRequestMgr::Config::isLinearVelocityTooHigh(velocity)) {
if (isEntity() && RigidBodyRequestMgr::Config::isLinearVelocityTooHigh(velocity)) {
onInvalidParameter(1);
return false;
}
@ -443,7 +443,7 @@ void RigidBody::applyLinearImpulse(const sead::Vector3f& impulse) {
return;
}
if (!isSensor())
if (isEntity())
getEntityMotionAccessor()->applyLinearImpulse(impulse);
}
@ -459,7 +459,7 @@ void RigidBody::applyAngularImpulse(const sead::Vector3f& impulse) {
return;
}
if (!isSensor())
if (isEntity())
getEntityMotionAccessor()->applyAngularImpulse(impulse);
}
@ -480,24 +480,24 @@ void RigidBody::applyPointImpulse(const sead::Vector3f& impulse, const sead::Vec
return;
}
if (!isSensor())
if (isEntity())
getEntityMotionAccessor()->applyPointImpulse(impulse, point);
}
void RigidBody::setMass(float mass) {
if (isSensor())
if (!isEntity())
return;
getEntityMotionAccessor()->setMass(mass);
}
float RigidBody::getMass() const {
if (isSensor())
if (!isEntity())
return 0.0;
return getEntityMotionAccessor()->getMass();
}
float RigidBody::getMassInv() const {
if (isSensor())
if (!isEntity())
return 0.0;
return getEntityMotionAccessor()->getMassInv();
}

View File

@ -260,6 +260,7 @@ public:
float getGravityFactor() const;
bool isSensor() const { return mFlags.isOn(Flag::IsSensor); }
bool isEntity() const { return !mFlags.isOn(Flag::IsSensor); }
ContactLayerType getLayerType() const {
return isSensor() ? ContactLayerType::Sensor : ContactLayerType::Entity;
}

View File

@ -286,7 +286,7 @@ void RigidBodyMotionSensor::setLinkedRigidBody(RigidBody* body) {
}
if (body) {
if (!body->isSensor() && mFlags.isOff(Flag::HasLinkedRigidBodyWithoutFlag10)) {
if (body->isEntity() && mFlags.isOff(Flag::HasLinkedRigidBodyWithoutFlag10)) {
RigidBodyMotionEntity* accessor = body->getEntityMotionAccessorForSensor();
if (accessor && accessor->registerAccessor(this)) {
mLinkedRigidBody = body;