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
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
5 changed files with 74 additions and 15 deletions

View File

@ -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,

Can't render this file because it is too large.

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

View File

@ -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

View File

@ -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

View File

@ -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: