Merge pull request #185 from RobbyV2/phys-system-heap-accessors

Match phys::System heap accessors
This commit is contained in:
Michael Zhao
2026-07-30 17:06:14 -07:00
committed by GitHub
3 changed files with 28 additions and 4 deletions
@@ -1,4 +1,6 @@
#include "KingSystem/Physics/System/physSystem.h"
#include <heap/seadHeap.h>
#include <thread/seadThread.h>
#include "KingSystem/Physics/Cloth/physClothResource.h"
#include "KingSystem/Physics/Ragdoll/physRagdollControllerKeyList.h"
#include "KingSystem/Physics/Ragdoll/physRagdollResource.h"
@@ -16,6 +18,7 @@
#include "KingSystem/Physics/System/physRayCastRequestMgr.h"
#include "KingSystem/Physics/System/physSensorGroupFilter.h"
#include "KingSystem/Physics/System/physSystemData.h"
#include "KingSystem/Physics/physHavokMemoryAllocator.h"
#include "KingSystem/Resource/resEntryFactory.h"
#include "KingSystem/Resource/resSystem.h"
@@ -133,4 +136,22 @@ RagdollControllerKeyList* System::getRagdollCtrlKeyList() const {
return mSystemData->getRagdollCtrlKeyList();
}
bool System::isHavokMainHeapOom() const {
return static_cast<f32>(mHavokAllocator->getHeapFreeSize()) /
static_cast<f32>(mHavokAllocator->getHeapSize()) <
0.05f;
}
sead::Heap* System::getPhysicsTempHeap(LowPriority low_priority) const {
if (low_priority != LowPriority::No ||
sead::ThreadMgr::instance()->getCurrentThread()->getPriority() >
sead::Thread::cDefaultPriority)
return mPhysicsTempLowHeap;
if (mPhysicsTempDefaultHeap->getMaxAllocatableSize(8) <= 0x2800)
mPhysicsTempDefaultHeap->dump();
return mPhysicsTempDefaultHeap;
}
} // namespace ksys::phys
+5 -2
View File
@@ -18,6 +18,7 @@ class ContactListener;
class ContactMgr;
class ContactPointInfo;
class GroupFilter;
class HavokMemoryAllocator;
class LayerContactPointInfo;
class MaterialTable;
class RayCastForRequest;
@@ -133,7 +134,8 @@ public:
// 0x000000710121684c
void decrementWorldUnkCounter(ContactLayerType layer_type);
// 0x0000007101216cec
bool isHavokMainHeapOom() const;
sead::Heap* getPhysicsTempHeap(LowPriority low_priority) const;
private:
@@ -145,7 +147,8 @@ private:
float _6c = 1.0;
float _70 = 1.0 / 30.0;
float mTimeFactor{};
u8 _78[0xa8 - 0x78];
HavokMemoryAllocator* mHavokAllocator{};
u8 _80[0xa8 - 0x80];
sead::CriticalSection mCS;
void* _e8{};
void* _f0{};