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