mirror of https://github.com/zeldaret/botw.git
ksys/phys: Introduce {First,Last}{Entity,Sensor} constants to improve clarity
This commit is contained in:
parent
bf09eea7a8
commit
a33ebd2130
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue