mirror of https://github.com/zeldaret/botw.git
ksys/phys: Add CollisionInfo
This commit is contained in:
parent
1ee012858c
commit
11dafc6ac3
|
@ -63646,7 +63646,7 @@ Address,Quality,Size,Name
|
|||
0x0000007100b18994,O,000008,_ZN4sead15CriticalSection7tryLockEv
|
||||
0x0000007100b1899c,O,000008,_ZN4sead15CriticalSection6unlockEv
|
||||
0x0000007100b189a4,O,000060,_ZN4sead5MutexC1Ev
|
||||
0x0000007100b189e0,U,000060,_ZN4sead5MutexC1EPNS_4HeapE
|
||||
0x0000007100b189e0,O,000060,_ZN4sead5MutexC1EPNS_4HeapENS_9IDisposer14HeapNullOptionE
|
||||
0x0000007100b18a1c,O,000052,_ZN4sead5MutexD1Ev
|
||||
0x0000007100b18a50,O,000060,_ZN4sead5MutexD0Ev
|
||||
0x0000007100b18a8c,O,000008,_ZN4sead5Mutex4lockEv
|
||||
|
@ -84099,13 +84099,13 @@ Address,Quality,Size,Name
|
|||
0x0000007100fc7348,U,000224,
|
||||
0x0000007100fc7428,U,000036,
|
||||
0x0000007100fc744c,U,000096,_ZN3aal6System8postCalcEi
|
||||
0x0000007100fc74ac,U,000032,physicsAllocCollisionStuff
|
||||
0x0000007100fc74cc,U,000024,
|
||||
0x0000007100fc74e4,U,000128,
|
||||
0x0000007100fc7564,U,000068,
|
||||
0x0000007100fc75a8,U,000076,
|
||||
0x0000007100fc75f4,U,000020,
|
||||
0x0000007100fc7608,U,000052,
|
||||
0x0000007100fc74ac,O,000032,_ZN4ksys4phys13CollisionInfo4makeEPN4sead4HeapERKNS2_14SafeStringBaseIcEE
|
||||
0x0000007100fc74cc,O,000024,_ZN4ksys4phys13CollisionInfo4freeEPS1_
|
||||
0x0000007100fc74e4,O,000128,_ZN4ksys4phys13CollisionInfoC1ERKN4sead14SafeStringBaseIcEE
|
||||
0x0000007100fc7564,O,000068,_ZN4ksys4phys13CollisionInfoD1Ev
|
||||
0x0000007100fc75a8,O,000076,_ZN4ksys4phys13CollisionInfoD0Ev
|
||||
0x0000007100fc75f4,O,000020,_ZN4ksys4phys17CollisionInfoBaseD2Ev
|
||||
0x0000007100fc7608,O,000052,_ZN4ksys4phys17CollisionInfoBaseD0Ev
|
||||
0x0000007100fc763c,O,000064,_ZN4ksys4phys16ContactPointInfo4makeEPN4sead4HeapEiRKNS2_14SafeStringBaseIcEEiii
|
||||
0x0000007100fc767c,O,000024,_ZN4ksys4phys16ContactPointInfo4freeEPS1_
|
||||
0x0000007100fc7694,O,000076,_ZN4ksys4phys16ContactPointInfoC1ERKN4sead14SafeStringBaseIcEEiii
|
||||
|
|
Can't render this file because it is too large.
|
|
@ -99,6 +99,7 @@ target_sources(uking PRIVATE
|
|||
|
||||
System/physCharacterControllerParam.cpp
|
||||
System/physCharacterControllerParam.h
|
||||
System/physCollisionInfo.cpp
|
||||
System/physCollisionInfo.h
|
||||
System/physConstraint.cpp
|
||||
System/physConstraint.h
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
#include "KingSystem/Physics/System/physCollisionInfo.h"
|
||||
#include "KingSystem/Physics/System/physSystem.h"
|
||||
|
||||
namespace ksys::phys {
|
||||
|
||||
CollisionInfo* CollisionInfo::make(sead::Heap* heap, const sead::SafeString& name) {
|
||||
return System::instance()->allocCollisionInfo(heap, name);
|
||||
}
|
||||
|
||||
void CollisionInfo::free(CollisionInfo* info) {
|
||||
System::instance()->freeCollisionInfo(info);
|
||||
}
|
||||
|
||||
CollisionInfo::CollisionInfo(const sead::SafeString& name) : sead::INamable(name) {
|
||||
// FIXME: figure out what this is
|
||||
mList.initOffset(0x10);
|
||||
}
|
||||
|
||||
CollisionInfo::~CollisionInfo() {
|
||||
mList.clear();
|
||||
}
|
||||
|
||||
} // namespace ksys::phys
|
|
@ -1,7 +1,10 @@
|
|||
#pragma once
|
||||
|
||||
#include <container/seadOffsetList.h>
|
||||
#include <container/seadSafeArray.h>
|
||||
#include <prim/seadBitFlag.h>
|
||||
#include <prim/seadNamable.h>
|
||||
#include <prim/seadSafeString.h>
|
||||
#include <thread/seadMutex.h>
|
||||
#include "KingSystem/Physics/physDefines.h"
|
||||
|
||||
|
@ -21,7 +24,24 @@ public:
|
|||
private:
|
||||
// One layer mask for layer type (entity/sensor).
|
||||
sead::SafeArray<sead::BitFlag32, 2> mLayerMasks;
|
||||
sead::Mutex mMutex;
|
||||
sead::Mutex mMutex{nullptr,
|
||||
sead::IDisposer::HeapNullOption::DoNotAppendDisposerIfNoHeapSpecified};
|
||||
};
|
||||
|
||||
class CollisionInfo : public CollisionInfoBase, public sead::INamable {
|
||||
public:
|
||||
static CollisionInfo* make(sead::Heap* heap, const sead::SafeString& name);
|
||||
static void free(CollisionInfo* info);
|
||||
|
||||
explicit CollisionInfo(const sead::SafeString& name);
|
||||
~CollisionInfo() override;
|
||||
|
||||
static constexpr size_t getListNodeOffset() { return offsetof(CollisionInfo, mListNode); }
|
||||
|
||||
private:
|
||||
// FIXME: type
|
||||
sead::OffsetList<void*> mList;
|
||||
sead::ListNode mListNode;
|
||||
};
|
||||
|
||||
inline sead::BitFlag32& CollisionInfoBase::getLayerMask(ContactLayerType layer_type) {
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
namespace ksys::phys {
|
||||
|
||||
class CollisionInfo;
|
||||
class ContactMgr;
|
||||
class GroupFilter;
|
||||
class MaterialTable;
|
||||
|
@ -55,6 +56,11 @@ public:
|
|||
void registerContactPointLayerPair(ContactPointInfoEx* info, ContactLayer layer1,
|
||||
ContactLayer layer2, bool enabled);
|
||||
|
||||
// 0x00000071012169a4
|
||||
CollisionInfo* allocCollisionInfo(sead::Heap* heap, const sead::SafeString& name) const;
|
||||
// 0x00000071012169ac
|
||||
void freeCollisionInfo(CollisionInfo* info) const;
|
||||
|
||||
// 0x0000007101216a20
|
||||
void registerRigidBodyForContactSystem(RigidBody* body);
|
||||
|
||||
|
|
Loading…
Reference in New Issue