From 1e080b32ebdffedffcf2e7a5a3c002ce7bfe54f1 Mon Sep 17 00:00:00 2001 From: RobbyV2 Date: Wed, 29 Jul 2026 09:27:42 -0400 Subject: phys: match System contact listener and group handler functions --- src/KingSystem/Physics/System/physSystem.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/KingSystem/Physics/System/physSystem.cpp') diff --git a/src/KingSystem/Physics/System/physSystem.cpp b/src/KingSystem/Physics/System/physSystem.cpp index e9a1ffb5..ef55e1f1 100644 --- a/src/KingSystem/Physics/System/physSystem.cpp +++ b/src/KingSystem/Physics/System/physSystem.cpp @@ -6,10 +6,12 @@ #include "KingSystem/Physics/RigidBody/physRigidBodyResource.h" #include "KingSystem/Physics/StaticCompound/physStaticCompound.h" #include "KingSystem/Physics/SupportBone/physSupportBoneResource.h" +#include "KingSystem/Physics/System/physContactListener.h" #include "KingSystem/Physics/System/physContactMgr.h" #include "KingSystem/Physics/System/physContactPointInfo.h" #include "KingSystem/Physics/System/physEntityGroupFilter.h" #include "KingSystem/Physics/System/physGroupFilter.h" +#include "KingSystem/Physics/System/physLayerContactPointInfo.h" #include "KingSystem/Physics/System/physMaterialTable.h" #include "KingSystem/Physics/System/physRayCastRequestMgr.h" #include "KingSystem/Physics/System/physSensorGroupFilter.h" @@ -53,6 +55,10 @@ void System::initSystemData(sead::Heap* heap) { mContactMgr); } +void System::removeSystemGroupHandler(SystemGroupHandler* handler) { + mGroupFilters[static_cast(handler->getLayerType())]->removeSystemGroupHandler(handler); +} + ContactPointInfo* System::allocContactPointInfo(sead::Heap* heap, int num, const sead::SafeString& name, int a, int b, int c) const { @@ -100,10 +106,27 @@ LayerContactPointInfo* System::allocLayerContactPointInfo(sead::Heap* heap, int return mContactMgr->makeLayerContactPointInfo(heap, num, num2, name, a, b, c); } +void System::freeLayerContactPointInfo(LayerContactPointInfo* info) const { + mContactListeners[static_cast(info->getLayerType())]->removeLayerPairsForContactPointInfo( + info); + mContactMgr->freeContactPointInfo(info); +} + void System::registerContactPointInfo(ContactPointInfo* info) const { mContactMgr->registerContactPointInfo(info); } +void System::registerContactPointLayerPair(LayerContactPointInfo* info, ContactLayer layer1, + ContactLayer layer2, bool enabled) { + mContactListeners[static_cast(info->getLayerType())]->addLayerPairForContactPointInfo( + info, layer1, layer2, enabled); +} + +ContactLayerCollisionInfo* System::trackLayerPair(ContactLayer layer_a, ContactLayer layer_b) { + return mContactListeners[static_cast(getContactLayerType(layer_a))]->trackLayerPair( + layer_a, layer_b); +} + RagdollControllerKeyList* System::getRagdollCtrlKeyList() const { if (!mSystemData) return nullptr; -- cgit v1.2.3