diff options
| author | Léo Lam <leo@leolam.fr> | 2021-12-21 02:31:14 +0100 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2021-12-22 15:43:43 +0100 |
| commit | 6b3799a3540548460f96deecf1002dffee0a9afc (patch) | |
| tree | 74e986554fdbf5597ef49400bdd54f0eb6aa2d73 /src | |
| parent | 38bd3db171291fc865694a3ac0517aad7912b036 (diff) | |
ksys/phys: Start adding GroupFilter
Diffstat (limited to 'src')
| -rw-r--r-- | src/KingSystem/Physics/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/KingSystem/Physics/System/physGroupFilter.cpp | 13 | ||||
| -rw-r--r-- | src/KingSystem/Physics/System/physGroupFilter.h | 44 | ||||
| -rw-r--r-- | src/KingSystem/Physics/System/physSystemData.h | 4 |
4 files changed, 61 insertions, 2 deletions
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 <Havok/Physics2012/Collide/Filter/Group/hkpGroupFilter.h> +#include <basis/seadTypes.h> +#include <container/seadOffsetList.h> +#include <prim/seadRuntimeTypeInfo.h> +#include <thread/seadCriticalSection.h> +#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<void*> _120; + sead::OffsetList<void*> _138; + sead::CriticalSection mCS; + sead::OffsetList<void*> _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<agl::utl::Parameter<int>, NumLayers> params; - void* table; - int idx = 0; + void* table; // FIXME: type GroupFilter + int idx = 0; // FIXME: ContactLayer int count; protected: |
