ksys/phys: Start adding GroupFilter

This commit is contained in:
Léo Lam
2021-12-21 02:31:14 +01:00
parent 38bd3db171
commit 6b3799a354
5 changed files with 74 additions and 15 deletions
+2
View File
@@ -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
@@ -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
@@ -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
@@ -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: