summaryrefslogtreecommitdiff
path: root/src/KingSystem
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2022-01-23 16:54:18 +0100
committerLéo Lam <leo@leolam.fr>2022-01-23 17:00:44 +0100
commita33ebd2130c4bf9db26dff640503c2e0f82fe7e0 (patch)
tree75221b76e417bdd54694add31a79cd6ad815e5fc /src/KingSystem
parentbf09eea7a87e7b5410d48650c0aa18a6c25cf45d (diff)
ksys/phys: Introduce {First,Last}{Entity,Sensor} constants to improve clarity
Diffstat (limited to 'src/KingSystem')
-rw-r--r--src/KingSystem/Physics/RigidBody/physRigidBody.cpp2
-rw-r--r--src/KingSystem/Physics/System/physDefines.cpp11
-rw-r--r--src/KingSystem/Physics/System/physDefines.h8
-rw-r--r--src/KingSystem/Physics/System/physSystem.cpp5
4 files changed, 15 insertions, 11 deletions
diff --git a/src/KingSystem/Physics/RigidBody/physRigidBody.cpp b/src/KingSystem/Physics/RigidBody/physRigidBody.cpp
index f5112ace..518c256d 100644
--- a/src/KingSystem/Physics/RigidBody/physRigidBody.cpp
+++ b/src/KingSystem/Physics/RigidBody/physRigidBody.cpp
@@ -555,7 +555,7 @@ void RigidBody::setCollidableQualityType(hkpCollidableQualityType quality) {
static int getLayerBit(int layer, ContactLayerType type) {
// This is layer for Entity layers and layer - 0x20 for Sensor layers.
// XXX: this should be using makeContactLayerMask.
- return layer - ContactLayer::SensorObject * int(type);
+ return layer - FirstSensor * int(type);
}
void RigidBody::addContactLayer(ContactLayer layer) {
diff --git a/src/KingSystem/Physics/System/physDefines.cpp b/src/KingSystem/Physics/System/physDefines.cpp
index beebbc5b..2b75af66 100644
--- a/src/KingSystem/Physics/System/physDefines.cpp
+++ b/src/KingSystem/Physics/System/physDefines.cpp
@@ -9,20 +9,19 @@ ContactLayerType getContactLayerType(ContactLayer layer) {
}
u32 makeContactLayerMask(ContactLayer layer) {
- if (layer < ContactLayer::SensorObject)
+ if (layer < FirstSensor)
return 1 << layer;
- return 1 << (layer - ContactLayer::SensorObject);
+ return 1 << (layer - FirstSensor);
}
u32 getContactLayerBase(ContactLayerType type) {
if (type == ContactLayerType::Entity)
- return ContactLayer::EntityObject;
- return ContactLayer::SensorObject;
+ return FirstEntity;
+ return FirstSensor;
}
u32 getContactLayerBaseRelativeValue(ContactLayer layer) {
- return layer - (layer < ContactLayer::SensorObject ? ContactLayer::EntityObject :
- ContactLayer::SensorObject);
+ return layer - (layer < FirstSensor ? FirstEntity : FirstSensor);
}
const char* contactLayerToText(ContactLayer layer) {
diff --git a/src/KingSystem/Physics/System/physDefines.h b/src/KingSystem/Physics/System/physDefines.h
index e5bd72ba..08b2cc46 100644
--- a/src/KingSystem/Physics/System/physDefines.h
+++ b/src/KingSystem/Physics/System/physDefines.h
@@ -74,6 +74,12 @@ SensorEnd)
constexpr int MaxNumLayersPerType = 32;
+constexpr auto FirstEntity = ContactLayer::EntityObject;
+constexpr auto LastEntity = ContactLayer::EntityMeshVisualizer;
+
+constexpr auto FirstSensor = ContactLayer::SensorObject;
+constexpr auto LastSensor = ContactLayer::SensorCustomReceiver;
+
SEAD_ENUM(Material,
Undefined,\
Soil,\
@@ -192,7 +198,7 @@ union ReceiverMask {
union EntityCollisionFilterInfo {
union Data {
ContactLayer getLayer() const { return int(layer); }
- ContactLayer getLayerSensor() const { return int(layer + ContactLayer::SensorObject); }
+ ContactLayer getLayerSensor() const { return int(layer + FirstSensor); }
GroundHit getGroundHit() const { return int(ground_hit); }
util::BitField<0, 5, u32> layer;
diff --git a/src/KingSystem/Physics/System/physSystem.cpp b/src/KingSystem/Physics/System/physSystem.cpp
index df841497..ad87f567 100644
--- a/src/KingSystem/Physics/System/physSystem.cpp
+++ b/src/KingSystem/Physics/System/physSystem.cpp
@@ -31,9 +31,8 @@ void System::initSystemData(sead::Heap* heap) {
res::registerEntryFactory(new (heap) res::EntryFactory<RagdollControllerKeyList>(1.0, 0x4000),
"brgcon");
- mEntityGroupFilter = EntityGroupFilter::make(ContactLayer::EntityObject,
- ContactLayer::EntityMeshVisualizer, heap);
- mSensorGroupFilter = SensorGroupFilter::make(ContactLayer::SensorCustomReceiver, heap);
+ mEntityGroupFilter = EntityGroupFilter::make(FirstEntity, LastEntity, heap);
+ mSensorGroupFilter = SensorGroupFilter::make(LastSensor, heap);
mGroupFilters.pushBack(mEntityGroupFilter);
mGroupFilters.pushBack(mSensorGroupFilter);