diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 919d50e1..c3f4c05b 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -93355,25 +93355,25 @@ Address,Quality,Size,Name 0x00000071012135e8,U,000056, 0x0000007101213620,U,000092, 0x000000710121367c,U,000144,Hio::createInstance -0x000000710121370c,U,000168, -0x00000071012137b4,U,000080, -0x0000007101213804,U,000080, -0x0000007101213854,U,000080, -0x00000071012138a4,U,000076, -0x00000071012138f0,U,000080, -0x0000007101213940,U,000140, -0x00000071012139cc,U,000144, -0x0000007101213a5c,U,000144, -0x0000007101213aec,U,000144, -0x0000007101213b7c,U,000144, +0x000000710121370c,O,000168,_ZN4ksys4phys11GroupFilterC2ENS0_16ContactLayerTypeENS0_12ContactLayer9ValueTypeES4_ +0x00000071012137b4,O,000080,_ZN4ksys4phys11GroupFilterD1Ev +0x0000007101213804,O,000080,_ZThn16_N4ksys4phys11GroupFilterD1Ev +0x0000007101213854,O,000080,_ZThn24_N4ksys4phys11GroupFilterD1Ev +0x00000071012138a4,O,000076,_ZThn32_N4ksys4phys11GroupFilterD1Ev +0x00000071012138f0,O,000080,_ZThn40_N4ksys4phys11GroupFilterD1Ev +0x0000007101213940,O,000140,_ZN4ksys4phys11GroupFilterD0Ev +0x00000071012139cc,O,000144,_ZThn16_N4ksys4phys11GroupFilterD0Ev +0x0000007101213a5c,O,000144,_ZThn24_N4ksys4phys11GroupFilterD0Ev +0x0000007101213aec,O,000144,_ZThn32_N4ksys4phys11GroupFilterD0Ev +0x0000007101213b7c,O,000144,_ZThn40_N4ksys4phys11GroupFilterD0Ev 0x0000007101213c0c,U,000092, 0x0000007101213c68,U,000148, 0x0000007101213cfc,U,000160, 0x0000007101213d9c,U,000148, 0x0000007101213e30,U,000008, 0x0000007101213e38,U,000024, -0x0000007101213e50,U,000112, -0x0000007101213ec0,U,000092, +0x0000007101213e50,O,000112,_ZNK4ksys4phys11GroupFilter27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x0000007101213ec0,O,000092,_ZNK4ksys4phys11GroupFilter18getRuntimeTypeInfoEv 0x0000007101213f1c,U,000004,nullsub_4710 0x0000007101213f20,U,000100, 0x0000007101213f84,U,000108, diff --git a/src/KingSystem/Physics/CMakeLists.txt b/src/KingSystem/Physics/CMakeLists.txt index 1d755e79..72dbd059 100644 --- a/src/KingSystem/Physics/CMakeLists.txt +++ b/src/KingSystem/Physics/CMakeLists.txt @@ -44,6 +44,8 @@ target_sources(uking PRIVATE System/physContactInfoTable.h System/physDefines.cpp System/physDefines.h + System/physGroupFilter.cpp + System/physGroupFilter.h System/physMaterialTable.cpp System/physMaterialTable.h System/physMemSystem.cpp diff --git a/src/KingSystem/Physics/System/physGroupFilter.cpp b/src/KingSystem/Physics/System/physGroupFilter.cpp new file mode 100644 index 00000000..ee698581 --- /dev/null +++ b/src/KingSystem/Physics/System/physGroupFilter.cpp @@ -0,0 +1,13 @@ +#include "KingSystem/Physics/System/physGroupFilter.h" + +namespace ksys::phys { + +GroupFilter::GroupFilter(ContactLayerType type, ContactLayer::ValueType layer_first, + ContactLayer::ValueType layer_last) + : mIdxLayerFirst(layer_first), mIdxLayerLast(layer_last), mLayerType(type) {} + +GroupFilter::~GroupFilter() = default; + +void GroupFilter::m13() {} + +} // namespace ksys::phys diff --git a/src/KingSystem/Physics/System/physGroupFilter.h b/src/KingSystem/Physics/System/physGroupFilter.h new file mode 100644 index 00000000..08a17ae2 --- /dev/null +++ b/src/KingSystem/Physics/System/physGroupFilter.h @@ -0,0 +1,44 @@ +#pragma once + +#include +#include +#include +#include +#include +#include "KingSystem/Physics/System/physDefines.h" + +namespace ksys::phys { + +class GroupFilter : public hkpGroupFilter { + SEAD_RTTI_BASE(GroupFilter) +public: + GroupFilter(ContactLayerType type, ContactLayer::ValueType layer_first, + ContactLayer::ValueType layer_last); + ~GroupFilter() override; + +protected: + virtual bool m2() { return true; } + virtual void m3() = 0; + virtual void m4() = 0; + virtual void m5() = 0; + virtual void m6() = 0; + virtual void m7() = 0; + virtual void m8() = 0; + virtual void m9() {} + virtual void m10() = 0; + virtual void m11() = 0; + virtual void m12() = 0; + virtual void m13(); + + u32 mIdxLayerFirst{}; + u32 mIdxLayerLast{}; + ContactLayerType mLayerType{}; + u8 _11c{}; + // FIXME: types + sead::OffsetList _120; + sead::OffsetList _138; + sead::CriticalSection mCS; + sead::OffsetList _190; +}; + +} // namespace ksys::phys diff --git a/src/KingSystem/Physics/System/physSystemData.h b/src/KingSystem/Physics/System/physSystemData.h index 4392727b..38d7b7ff 100644 --- a/src/KingSystem/Physics/System/physSystemData.h +++ b/src/KingSystem/Physics/System/physSystemData.h @@ -25,8 +25,8 @@ constexpr int NumLayers = 32; struct LayerTableInfo : agl::utl::IParameterObj { sead::SafeArray, NumLayers> params; - void* table; - int idx = 0; + void* table; // FIXME: type GroupFilter + int idx = 0; // FIXME: ContactLayer int count; protected: