ksys/phys: Rename RagdollController to RagdollInstance

RagdollController is a different thing!
This commit is contained in:
Léo Lam 2022-12-20 19:22:02 +01:00
parent d1d4bf3c29
commit 27ef71eff7
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
12 changed files with 233 additions and 233 deletions

View File

@ -93575,66 +93575,66 @@ Address,Quality,Size,Name
0x000000710121d4c8,U,003172,
0x000000710121e12c,U,000088,
0x000000710121e184,U,000304,
0x000000710121e2b4,O,000164,_ZN4ksys4phys17RagdollControllerC1EPNS0_18SystemGroupHandlerE
0x000000710121e358,O,000020,_ZN4ksys4phys17RagdollControllerD1Ev
0x000000710121e36c,O,000572,_ZN4ksys4phys17RagdollController8finalizeEv
0x000000710121e5a8,O,000052,_ZN4ksys4phys17RagdollControllerD0Ev
0x000000710121e5dc,O,000004,_ZN4ksys4phys17RagdollController4initEPKNS0_12RagdollParamEPN4sead14DirectResourceEPN4gsys5ModelEPNS5_4HeapE
0x000000710121e5e0,O,001656,_ZN4ksys4phys17RagdollController6doInitEPKNS0_12RagdollParamEPN4sead14DirectResourceEPN4gsys5ModelEPNS5_4HeapE
0x000000710121ec58,O,000032,_ZNK4ksys4phys17RagdollController14isAddedToWorldEv
0x000000710121ec78,O,000512,_ZN4ksys4phys17RagdollController26removeFromWorldImmediatelyEv
0x000000710121ee78,O,000120,_ZN4ksys4phys17RagdollController15removeFromWorldEv
0x000000710121eef0,O,000192,_ZN4ksys4phys17RagdollController28removeFromWorldAndResetLinksEv
0x000000710121efb0,O,000032,_ZNK4ksys4phys17RagdollController15isAddingToWorldEv
0x000000710121efd0,O,000260,_ZN4ksys4phys17RagdollController12setTransformERKN4sead8Matrix34IfEE
0x000000710121f0d4,O,000512,_ZN4ksys4phys17RagdollController12setTransformERK14hkQsTransformf
0x000000710121f2d4,O,000736,_ZN4ksys4phys17RagdollController8setScaleEf
0x000000710121f5b4,O,000076,_ZN4ksys4phys17RagdollController26setFixedAndPreserveImpulseENS0_5FixedENS0_20MarkLinearVelAsDirtyE
0x000000710121f600,O,000052,_ZN4ksys4phys17RagdollController16resetFrozenStateEv
0x000000710121f634,O,000108,_ZN4ksys4phys17RagdollController22setUseSystemTimeFactorEb
0x000000710121f6a0,O,000108,_ZN4ksys4phys17RagdollController15clearFlag400000Eb
0x000000710121f70c,O,000068,_ZN4ksys4phys17RagdollController22setEntityMotionFlag200Eb
0x000000710121f750,O,000076,_ZN4ksys4phys17RagdollController8setFixedENS0_5FixedENS0_18PreserveVelocitiesE
0x000000710121f79c,O,000024,_ZNK4ksys4phys17RagdollController20getModelBoneAccessorEv
0x000000710121e2b4,O,000164,_ZN4ksys4phys15RagdollInstanceC1EPNS0_18SystemGroupHandlerE
0x000000710121e358,O,000020,_ZN4ksys4phys15RagdollInstanceD1Ev
0x000000710121e36c,O,000572,_ZN4ksys4phys15RagdollInstance8finalizeEv
0x000000710121e5a8,O,000052,_ZN4ksys4phys15RagdollInstanceD0Ev
0x000000710121e5dc,O,000004,_ZN4ksys4phys15RagdollInstance4initEPKNS0_12RagdollParamEPN4sead14DirectResourceEPN4gsys5ModelEPNS5_4HeapE
0x000000710121e5e0,O,001656,_ZN4ksys4phys15RagdollInstance6doInitEPKNS0_12RagdollParamEPN4sead14DirectResourceEPN4gsys5ModelEPNS5_4HeapE
0x000000710121ec58,O,000032,_ZNK4ksys4phys15RagdollInstance14isAddedToWorldEv
0x000000710121ec78,O,000512,_ZN4ksys4phys15RagdollInstance26removeFromWorldImmediatelyEv
0x000000710121ee78,O,000120,_ZN4ksys4phys15RagdollInstance15removeFromWorldEv
0x000000710121eef0,O,000192,_ZN4ksys4phys15RagdollInstance28removeFromWorldAndResetLinksEv
0x000000710121efb0,O,000032,_ZNK4ksys4phys15RagdollInstance15isAddingToWorldEv
0x000000710121efd0,O,000260,_ZN4ksys4phys15RagdollInstance12setTransformERKN4sead8Matrix34IfEE
0x000000710121f0d4,O,000512,_ZN4ksys4phys15RagdollInstance12setTransformERK14hkQsTransformf
0x000000710121f2d4,O,000736,_ZN4ksys4phys15RagdollInstance8setScaleEf
0x000000710121f5b4,O,000076,_ZN4ksys4phys15RagdollInstance26setFixedAndPreserveImpulseENS0_5FixedENS0_20MarkLinearVelAsDirtyE
0x000000710121f600,O,000052,_ZN4ksys4phys15RagdollInstance16resetFrozenStateEv
0x000000710121f634,O,000108,_ZN4ksys4phys15RagdollInstance22setUseSystemTimeFactorEb
0x000000710121f6a0,O,000108,_ZN4ksys4phys15RagdollInstance15clearFlag400000Eb
0x000000710121f70c,O,000068,_ZN4ksys4phys15RagdollInstance22setEntityMotionFlag200Eb
0x000000710121f750,O,000076,_ZN4ksys4phys15RagdollInstance8setFixedENS0_5FixedENS0_18PreserveVelocitiesE
0x000000710121f79c,O,000024,_ZNK4ksys4phys15RagdollInstance20getModelBoneAccessorEv
0x000000710121f7b4,U,000740,
0x000000710121fa98,U,001604,
0x00000071012200dc,U,001728,
0x000000710122079c,U,000948,
0x0000007101220b50,U,000604,
0x0000007101220dac,U,001460,
0x0000007101221360,O,000004,_ZN4ksys4phys17RagdollController2m3Ev
0x0000007101221364,O,000116,_ZN4ksys4phys17RagdollController10setUserTagEPNS0_7UserTagE
0x00000071012213d8,O,000076,_ZN4ksys4phys17RagdollController21setSystemGroupHandlerEPNS0_18SystemGroupHandlerE
0x0000007101221360,O,000004,_ZN4ksys4phys15RagdollInstance2m3Ev
0x0000007101221364,O,000116,_ZN4ksys4phys15RagdollInstance10setUserTagEPNS0_7UserTagE
0x00000071012213d8,O,000076,_ZN4ksys4phys15RagdollInstance21setSystemGroupHandlerEPNS0_18SystemGroupHandlerE
0x0000007101221424,U,000632,
0x000000710122169c,O,000068,_ZN4ksys4phys17RagdollController19setContactPointInfoEPNS0_16ContactPointInfoE
0x00000071012216e0,O,000072,_ZN4ksys4phys17RagdollController18enableContactLayerENS0_12ContactLayerE
0x0000007101221728,O,000072,_ZN4ksys4phys17RagdollController19disableContactLayerENS0_12ContactLayerE
0x0000007101221770,O,000056,_ZN4ksys4phys17RagdollController13setContactAllEv
0x00000071012217a8,O,000056,_ZN4ksys4phys17RagdollController14setContactNoneEv
0x00000071012217e0,O,000032,_ZN4ksys4phys17RagdollController13setContactAllEi
0x0000007101221800,O,000032,_ZN4ksys4phys17RagdollController14setContactNoneEi
0x0000007101221820,O,001188,_ZN4ksys4phys17RagdollController16changeWorldStateENS1_10WorldStateE
0x0000007101221cc4,O,000016,_ZNK4ksys4phys17RagdollController13getWorldStateEv
0x0000007101221cd4,O,000012,_ZN4ksys4phys17RagdollController17setExtraRigidBodyEPNS0_9RigidBodyEi
0x0000007101221ce0,O,000068,_ZN4ksys4phys17RagdollController16setGravityFactorEf
0x000000710122169c,O,000068,_ZN4ksys4phys15RagdollInstance19setContactPointInfoEPNS0_16ContactPointInfoE
0x00000071012216e0,O,000072,_ZN4ksys4phys15RagdollInstance18enableContactLayerENS0_12ContactLayerE
0x0000007101221728,O,000072,_ZN4ksys4phys15RagdollInstance19disableContactLayerENS0_12ContactLayerE
0x0000007101221770,O,000056,_ZN4ksys4phys15RagdollInstance13setContactAllEv
0x00000071012217a8,O,000056,_ZN4ksys4phys15RagdollInstance14setContactNoneEv
0x00000071012217e0,O,000032,_ZN4ksys4phys15RagdollInstance13setContactAllEi
0x0000007101221800,O,000032,_ZN4ksys4phys15RagdollInstance14setContactNoneEi
0x0000007101221820,O,001188,_ZN4ksys4phys15RagdollInstance16changeWorldStateENS1_10WorldStateE
0x0000007101221cc4,O,000016,_ZNK4ksys4phys15RagdollInstance13getWorldStateEv
0x0000007101221cd4,O,000012,_ZN4ksys4phys15RagdollInstance17setExtraRigidBodyEPNS0_9RigidBodyEi
0x0000007101221ce0,O,000068,_ZN4ksys4phys15RagdollInstance16setGravityFactorEf
0x0000007101221d24,U,000032,
0x0000007101221d44,O,000324,_ZNK4ksys4phys17RagdollController22getBoneRigidBodyByNameERKN4sead14SafeStringBaseIcEE
0x0000007101221e88,O,000300,_ZNK4ksys4phys17RagdollController18getBoneIndexByNameERKN4sead14SafeStringBaseIcEE
0x0000007101221fb4,O,000380,_ZNK4ksys4phys17RagdollController22getBoneIndexByModelKeyERKN4gsys13BoneAccessKeyE
0x0000007101222130,O,000020,_ZNK4ksys4phys17RagdollController15getParentOfBoneEi
0x0000007101222144,O,000132,_ZNK4ksys4phys17RagdollController22getParentBoneRigidBodyEPKNS0_9RigidBodyE
0x00000071012221c8,O,000132,_ZNK4ksys4phys17RagdollController16getNumChildBonesEPKNS0_9RigidBodyE
0x000000710122224c,O,000156,_ZNK4ksys4phys17RagdollController21getChildBoneRigidBodyEPKNS0_9RigidBodyEi
0x00000071012222e8,O,001268,_ZNK4ksys4phys17RagdollController12getTransformEi
0x00000071012227dc,O,001844,_ZNK4ksys4phys17RagdollController27getTransformWithCustomYAxisEiRKN4sead7Vector3IfEE
0x0000007101222f10,O,000340,_ZNK4ksys4phys17RagdollController24getConstraintIndexByNameERKN4sead14SafeStringBaseIcEE
0x0000007101223064,O,000012,_ZNK4ksys4phys17RagdollController17getNumConstraintsEv
0x0000007101223070,O,000044,_ZN4ksys4phys17RagdollController16enableConstraintEib
0x000000710122309c,O,000176,_ZN4ksys4phys17RagdollController15setContactLayerENS0_12ContactLayerE
0x000000710122314c,O,000228,_ZN4ksys4phys17RagdollController12setKeyframedEibNS1_14SyncToThisBoneE
0x0000007101223230,O,000032,_ZN4ksys4phys17RagdollController7setUnk1Eh
0x0000007101223250,O,000208,_ZN4ksys4phys17RagdollController21stopForcingKeyframingEv
0x0000007101223320,O,000536,_ZN4ksys4phys17RagdollController6updateEv
0x0000007101221d44,O,000324,_ZNK4ksys4phys15RagdollInstance22getBoneRigidBodyByNameERKN4sead14SafeStringBaseIcEE
0x0000007101221e88,O,000300,_ZNK4ksys4phys15RagdollInstance18getBoneIndexByNameERKN4sead14SafeStringBaseIcEE
0x0000007101221fb4,O,000380,_ZNK4ksys4phys15RagdollInstance22getBoneIndexByModelKeyERKN4gsys13BoneAccessKeyE
0x0000007101222130,O,000020,_ZNK4ksys4phys15RagdollInstance15getParentOfBoneEi
0x0000007101222144,O,000132,_ZNK4ksys4phys15RagdollInstance22getParentBoneRigidBodyEPKNS0_9RigidBodyE
0x00000071012221c8,O,000132,_ZNK4ksys4phys15RagdollInstance16getNumChildBonesEPKNS0_9RigidBodyE
0x000000710122224c,O,000156,_ZNK4ksys4phys15RagdollInstance21getChildBoneRigidBodyEPKNS0_9RigidBodyEi
0x00000071012222e8,O,001268,_ZNK4ksys4phys15RagdollInstance12getTransformEi
0x00000071012227dc,O,001844,_ZNK4ksys4phys15RagdollInstance27getTransformWithCustomYAxisEiRKN4sead7Vector3IfEE
0x0000007101222f10,O,000340,_ZNK4ksys4phys15RagdollInstance24getConstraintIndexByNameERKN4sead14SafeStringBaseIcEE
0x0000007101223064,O,000012,_ZNK4ksys4phys15RagdollInstance17getNumConstraintsEv
0x0000007101223070,O,000044,_ZN4ksys4phys15RagdollInstance16enableConstraintEib
0x000000710122309c,O,000176,_ZN4ksys4phys15RagdollInstance15setContactLayerENS0_12ContactLayerE
0x000000710122314c,O,000228,_ZN4ksys4phys15RagdollInstance12setKeyframedEibNS1_14SyncToThisBoneE
0x0000007101223230,O,000032,_ZN4ksys4phys15RagdollInstance7setUnk1Eh
0x0000007101223250,O,000208,_ZN4ksys4phys15RagdollInstance21stopForcingKeyframingEv
0x0000007101223320,O,000536,_ZN4ksys4phys15RagdollInstance6updateEv
0x0000007101223538,O,000440,_ZN4ksys4phys12RagdollParamC1Ev
0x00000071012236f0,O,000044,_ZN4ksys4phys12RagdollParamD1Ev
0x000000710122371c,O,000004,_ZN4ksys4phys12RagdollParamD0Ev
@ -95332,19 +95332,19 @@ Address,Quality,Size,Name
0x00000071012ac688,O,000084,_ZN4ksys4phys24RagdollControllerKeyList20RagdollControllerKeyD2Ev
0x00000071012ac6dc,O,000004,_ZN4ksys4phys24RagdollControllerKeyList20RagdollControllerKeyD0Ev
0x00000071012ac6e0,O,000372,_ZN4ksys4phys24RagdollControllerKeyList33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE
0x00000071012ac854,O,000040,_ZN4ksys4phys20RagdollControllerMgrC1Ev
0x00000071012ac87c,O,000068,_ZN4ksys4phys20RagdollControllerMgrD1Ev
0x00000071012ac8c0,O,000076,_ZN4ksys4phys20RagdollControllerMgrD0Ev
0x00000071012ac90c,O,000188,_ZN4ksys4phys20RagdollControllerMgr4initEPN4sead4HeapE
0x00000071012ac9c8,O,000148,_ZN4ksys4phys20RagdollControllerMgr13addControllerEPNS0_17RagdollControllerE
0x00000071012aca5c,O,000128,_ZN4ksys4phys20RagdollControllerMgr16removeControllerEPNS0_17RagdollControllerE
0x00000071012acadc,M,000348,_ZN4ksys4phys20RagdollControllerMgr4calcEv
0x00000071012acc38,O,000004,_ZN4ksys4phys20RagdollControllerMgr5calc1Ev
0x00000071012ac854,O,000040,_ZN4ksys4phys18RagdollInstanceMgrC1Ev
0x00000071012ac87c,O,000068,_ZN4ksys4phys18RagdollInstanceMgrD1Ev
0x00000071012ac8c0,O,000076,_ZN4ksys4phys18RagdollInstanceMgrD0Ev
0x00000071012ac90c,O,000188,_ZN4ksys4phys18RagdollInstanceMgr4initEPN4sead4HeapE
0x00000071012ac9c8,O,000148,_ZN4ksys4phys18RagdollInstanceMgr11addInstanceEPNS0_15RagdollInstanceE
0x00000071012aca5c,O,000128,_ZN4ksys4phys18RagdollInstanceMgr14removeInstanceEPNS0_15RagdollInstanceE
0x00000071012acadc,M,000348,_ZN4ksys4phys18RagdollInstanceMgr4calcEv
0x00000071012acc38,O,000004,_ZN4ksys4phys18RagdollInstanceMgr5calc1Ev
0x00000071012acc3c,O,000048,_ZN4ksys4phys15RagdollResourceC1Ev
0x00000071012acc6c,O,000004,_ZN4ksys4phys15RagdollResourceD1Ev
0x00000071012acc70,O,000036,_ZN4ksys4phys15RagdollResourceD0Ev
0x00000071012acc94,O,000004,_ZN4ksys4phys15RagdollResource9doCreate_EPhjPN4sead4HeapE
0x00000071012acc98,O,000148,_ZN4ksys4phys16RagdollRigidBodyC1ERKN4sead14SafeStringBaseIcEEPNS0_17RagdollControllerEiP12hkpRigidBodyPNS2_4HeapE
0x00000071012acc98,O,000148,_ZN4ksys4phys16RagdollRigidBodyC1ERKN4sead14SafeStringBaseIcEEPNS0_15RagdollInstanceEiP12hkpRigidBodyPNS2_4HeapE
0x00000071012acd2c,O,000076,_ZN4ksys4phys16RagdollRigidBodyD1Ev
0x00000071012acd78,O,000076,_ZThn32_N4ksys4phys16RagdollRigidBodyD1Ev
0x00000071012acdc4,O,000084,_ZN4ksys4phys16RagdollRigidBodyD0Ev

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

View File

@ -13,10 +13,10 @@ target_sources(uking PRIVATE
Ragdoll/physRagdollConfig.h
Ragdoll/physRagdollControllerKeyList.h
Ragdoll/physRagdollControllerKeyList.cpp
Ragdoll/physRagdollController.cpp
Ragdoll/physRagdollController.h
Ragdoll/physRagdollControllerMgr.cpp
Ragdoll/physRagdollControllerMgr.h
Ragdoll/physRagdollInstance.cpp
Ragdoll/physRagdollInstance.h
Ragdoll/physRagdollInstanceMgr.cpp
Ragdoll/physRagdollInstanceMgr.h
Ragdoll/physRagdollParam.cpp
Ragdoll/physRagdollParam.h
Ragdoll/physRagdollResource.cpp

View File

@ -1,49 +0,0 @@
#include "KingSystem/Physics/Ragdoll/physRagdollControllerMgr.h"
#include <prim/seadScopedLock.h>
#include "KingSystem/Physics/Ragdoll/physRagdollController.h"
#include "KingSystem/Physics/System/physSystem.h"
namespace ksys::phys {
RagdollControllerMgr::RagdollControllerMgr() = default;
RagdollControllerMgr::~RagdollControllerMgr() {
mControllers.freeBuffer();
}
void RagdollControllerMgr::init(sead::Heap* heap) {
mControllers.alloc(0x400, heap);
}
bool RagdollControllerMgr::addController(RagdollController* controller) {
return mControllers.push(controller);
}
void RagdollControllerMgr::removeController(RagdollController* controller) {
auto lock = sead::makeScopedLock(mCS);
mControllers.erase(controller);
}
void RagdollControllerMgr::calc() {
ScopedWorldLock world_lock{ContactLayerType::Entity};
auto lock = sead::makeScopedLock(mCS);
RagdollController* first_processed = nullptr;
while (auto* ctrl = mControllers.pop()) {
mControllers.push(ctrl);
// If we have processed the entire buffer and wrapped around, stop.
if (first_processed == ctrl)
break;
ctrl->update();
if (first_processed == nullptr)
first_processed = ctrl;
}
}
void RagdollControllerMgr::calc1() {}
} // namespace ksys::phys

View File

@ -1,4 +1,4 @@
#include "KingSystem/Physics/Ragdoll/physRagdollController.h"
#include "KingSystem/Physics/Ragdoll/physRagdollInstance.h"
#include <Havok/Animation/Animation/Mapper/hkaSkeletonMapper.h>
#include <Havok/Animation/Animation/Rig/hkaPose.h>
#include <Havok/Animation/Physics2012Bridge/Instance/hkaRagdollInstance.h>
@ -14,7 +14,7 @@
#include <math/seadMathCalcCommon.h>
#include <memory>
#include <resource/seadResource.h>
#include "KingSystem/Physics/Ragdoll/physRagdollControllerMgr.h"
#include "KingSystem/Physics/Ragdoll/physRagdollInstanceMgr.h"
#include "KingSystem/Physics/Ragdoll/physRagdollRigidBody.h"
#include "KingSystem/Physics/Rig/physModelBoneAccessor.h"
#include "KingSystem/Physics/Rig/physSkeletonMapper.h"
@ -30,23 +30,23 @@
namespace ksys::phys {
static u8 sRagdollCtrlUnk1 = 15;
static RagdollController::Config sRagdollCtrlConfig;
static u8 sRagdollInstanceUnk1 = 15;
static RagdollInstance::Config sRagdollInstanceConfig;
RagdollController::RagdollController(SystemGroupHandler* handler)
: mGroupHandler(handler), _e8(sRagdollCtrlUnk1), _e9(sRagdollCtrlUnk1) {}
RagdollInstance::RagdollInstance(SystemGroupHandler* handler)
: mGroupHandler(handler), _e8(sRagdollInstanceUnk1), _e9(sRagdollInstanceUnk1) {}
RagdollController::~RagdollController() {
RagdollInstance::~RagdollInstance() {
finalize();
}
bool RagdollController::init(const RagdollParam* param, sead::DirectResource* res,
gsys::Model* model, sead::Heap* heap) {
bool RagdollInstance::init(const RagdollParam* param, sead::DirectResource* res, gsys::Model* model,
sead::Heap* heap) {
return doInit(param, res, model, heap);
}
bool RagdollController::doInit(const RagdollParam* param, sead::DirectResource* res,
gsys::Model* model, sead::Heap* heap) {
bool RagdollInstance::doInit(const RagdollParam* param, sead::DirectResource* res,
gsys::Model* model, sead::Heap* heap) {
if (!res)
return false;
@ -152,7 +152,7 @@ bool RagdollController::doInit(const RagdollParam* param, sead::DirectResource*
return true;
}
void RagdollController::allocateBoneTransforms(int num_bones, sead::Heap* heap) {
void RagdollInstance::allocateBoneTransforms(int num_bones, sead::Heap* heap) {
static constexpr size_t Alignment = 0x20;
mBoneTransformsByteSize =
sead::Mathu::roundUpPow2(sizeof(hkQsTransformf) * num_bones, Alignment);
@ -160,19 +160,19 @@ void RagdollController::allocateBoneTransforms(int num_bones, sead::Heap* heap)
mBoneTransforms.setBuffer(num_bones, new (buffer) hkQsTransformf[num_bones]);
}
void RagdollController::registerSelf() {
const bool registered = System::instance()->getRagdollControllerMgr()->addController(this);
void RagdollInstance::registerSelf() {
const bool registered = System::instance()->getRagdollInstanceMgr()->addInstance(this);
mFlags.change(Flag::IsRegistered, registered);
}
void RagdollController::unregisterSelf() {
void RagdollInstance::unregisterSelf() {
if (mFlags.isOn(Flag::IsRegistered)) {
System::instance()->getRagdollControllerMgr()->removeController(this);
System::instance()->getRagdollInstanceMgr()->removeInstance(this);
mFlags.reset(Flag::IsRegistered);
}
}
void RagdollController::finalize() {
void RagdollInstance::finalize() {
for (auto body : util::indexIter(mBoneRigidBodies)) {
body.get()->setCollisionInfo(nullptr);
body.get()->setContactPointInfo(nullptr);
@ -217,7 +217,7 @@ void RagdollController::finalize() {
}
}
void RagdollController::removeConstraints() {
void RagdollInstance::removeConstraints() {
for (int i = 0, n = mRagdollInstance->m_constraints.getSize(); i < n; ++i) {
auto* constraint = mRagdollInstance->m_constraints[i];
if (constraint->getOwner() != nullptr) {
@ -227,11 +227,11 @@ void RagdollController::removeConstraints() {
}
}
bool RagdollController::isAddedToWorld() const {
bool RagdollInstance::isAddedToWorld() const {
return mBoneRigidBodies.size() > 0 && mBoneRigidBodies.back()->isAddedToWorld();
}
void RagdollController::removeFromWorldImmediately() {
void RagdollInstance::removeFromWorldImmediately() {
ScopedPhysicsLock lock{this};
removeConstraints();
@ -239,12 +239,12 @@ void RagdollController::removeFromWorldImmediately() {
body.get()->removeFromWorldImmediately();
}
void RagdollController::removeFromWorld() {
void RagdollInstance::removeFromWorld() {
for (auto body : util::indexIter(mBoneRigidBodies))
body.get()->removeFromWorld();
}
bool RagdollController::removeFromWorldAndResetLinks() {
bool RagdollInstance::removeFromWorldAndResetLinks() {
bool removed = true;
for (auto body : util::indexIter(mBoneRigidBodies))
removed &= body.get()->removeFromWorldAndResetLinks();
@ -254,17 +254,17 @@ bool RagdollController::removeFromWorldAndResetLinks() {
return removed;
}
bool RagdollController::isAddingToWorld() const {
bool RagdollInstance::isAddingToWorld() const {
return mBoneRigidBodies.size() > 0 && mBoneRigidBodies.back()->isAddingBodyToWorld();
}
void RagdollController::setTransform(const sead::Matrix34f& transform) {
void RagdollInstance::setTransform(const sead::Matrix34f& transform) {
hkQsTransformf hk_transform;
toHkQsTransform(&hk_transform, transform, sead::Vector3f::ones);
setTransform(hk_transform);
}
void RagdollController::setTransform(const hkQsTransformf& transform) {
void RagdollInstance::setTransform(const hkQsTransformf& transform) {
ScopedPhysicsLock lock{this};
if (mSkeletonMapper)
@ -285,7 +285,7 @@ void RagdollController::setTransform(const hkQsTransformf& transform) {
}
}
void RagdollController::setScale(float scale) {
void RagdollInstance::setScale(float scale) {
if (sead::Mathf::equalsEpsilon(scale, 1.0))
return;
@ -332,92 +332,92 @@ void RagdollController::setScale(float scale) {
mSkeletonMapper->getBoneAccessor().setScale(scale);
}
void RagdollController::setFixedAndPreserveImpulse(Fixed fixed,
MarkLinearVelAsDirty mark_linear_vel_as_dirty) {
void RagdollInstance::setFixedAndPreserveImpulse(Fixed fixed,
MarkLinearVelAsDirty mark_linear_vel_as_dirty) {
for (auto* body : mBoneRigidBodies)
body->setFixedAndPreserveImpulse(fixed, mark_linear_vel_as_dirty);
}
void RagdollController::resetFrozenState() {
void RagdollInstance::resetFrozenState() {
for (auto* body : mBoneRigidBodies)
body->resetFrozenState();
}
void RagdollController::setUseSystemTimeFactor(bool use) {
void RagdollInstance::setUseSystemTimeFactor(bool use) {
for (auto* body : mBoneRigidBodies)
body->setUseSystemTimeFactor(use);
}
void RagdollController::clearFlag400000(bool clear) {
void RagdollInstance::clearFlag400000(bool clear) {
for (auto* body : mBoneRigidBodies)
body->clearFlag400000(clear);
}
void RagdollController::setEntityMotionFlag200(bool set) {
void RagdollInstance::setEntityMotionFlag200(bool set) {
for (auto* body : mBoneRigidBodies)
body->setEntityMotionFlag200(set);
}
void RagdollController::setFixed(Fixed fixed, PreserveVelocities preserve_velocities) {
void RagdollInstance::setFixed(Fixed fixed, PreserveVelocities preserve_velocities) {
for (auto* body : mBoneRigidBodies)
body->setFixed(fixed, preserve_velocities);
}
ModelBoneAccessor* RagdollController::getModelBoneAccessor() const {
ModelBoneAccessor* RagdollInstance::getModelBoneAccessor() const {
if (mSkeletonMapper)
return &mSkeletonMapper->getModelBoneAccessor();
return mModelBoneAccessor;
}
void RagdollController::m3() {}
void RagdollInstance::m3() {}
void RagdollController::setUserTag(UserTag* tag) {
void RagdollInstance::setUserTag(UserTag* tag) {
for (auto* body : mBoneRigidBodies)
body->setUserTag(tag);
}
void RagdollController::setSystemGroupHandler(SystemGroupHandler* handler) {
void RagdollInstance::setSystemGroupHandler(SystemGroupHandler* handler) {
for (auto* body : mBoneRigidBodies)
body->setSystemGroupHandler(handler);
mGroupHandler = handler;
}
void RagdollController::setContactPointInfo(ContactPointInfo* info) {
void RagdollInstance::setContactPointInfo(ContactPointInfo* info) {
for (auto* body : mBoneRigidBodies)
body->setContactPointInfo(info);
}
void RagdollController::enableContactLayer(ContactLayer layer) {
void RagdollInstance::enableContactLayer(ContactLayer layer) {
for (auto* body : mBoneRigidBodies)
body->enableContactLayer(layer, false);
}
void RagdollController::disableContactLayer(ContactLayer layer) {
void RagdollInstance::disableContactLayer(ContactLayer layer) {
for (auto* body : mBoneRigidBodies)
body->disableContactLayer(layer, false);
}
void RagdollController::setContactAll() {
void RagdollInstance::setContactAll() {
for (auto* body : mBoneRigidBodies)
body->setContactAll(false);
}
void RagdollController::setContactNone() {
void RagdollInstance::setContactNone() {
for (auto* body : mBoneRigidBodies)
body->setContactNone(false);
}
void RagdollController::setContactAll(int bone_index) {
void RagdollInstance::setContactAll(int bone_index) {
mBoneRigidBodies[bone_index]->setContactAll(false);
}
void RagdollController::setContactNone(int bone_index) {
void RagdollInstance::setContactNone(int bone_index) {
mBoneRigidBodies[bone_index]->setContactNone(false);
}
void RagdollController::changeWorldState(RagdollController::WorldState state) {
void RagdollInstance::changeWorldState(RagdollInstance::WorldState state) {
if (getWorldState() == state)
return;
@ -471,21 +471,21 @@ void RagdollController::changeWorldState(RagdollController::WorldState state) {
}
}
RagdollController::WorldState RagdollController::getWorldState() const {
RagdollInstance::WorldState RagdollInstance::getWorldState() const {
return mFlags.isOn(Flag::AddedToWorld) ? WorldState::AddedToWorld : WorldState::NotAddedToWorld;
}
void RagdollController::setExtraRigidBody(RigidBody* body, int bone_index) {
void RagdollInstance::setExtraRigidBody(RigidBody* body, int bone_index) {
mExtraRigidBody = body;
mBoneIndexForExtraRigidBody = bone_index;
}
void RagdollController::setGravityFactor(float factor) {
void RagdollInstance::setGravityFactor(float factor) {
for (auto* body : mBoneRigidBodies)
body->setGravityFactor(factor);
}
RagdollRigidBody* RagdollController::getBoneRigidBodyByName(const sead::SafeString& name) const {
RagdollRigidBody* RagdollInstance::getBoneRigidBodyByName(const sead::SafeString& name) const {
const int index = getBoneIndexByName(name);
if (index < 0)
return nullptr;
@ -493,7 +493,7 @@ RagdollRigidBody* RagdollController::getBoneRigidBodyByName(const sead::SafeStri
return mBoneRigidBodies[index];
}
int RagdollController::getBoneIndexByModelKey(const gsys::BoneAccessKey& key) const {
int RagdollInstance::getBoneIndexByModelKey(const gsys::BoneAccessKey& key) const {
const int model_bone_index = getModelBoneAccessor()->findBoneIndex(key);
const char* bone_name = getModelBoneAccessor()->getBoneName(model_bone_index);
@ -503,7 +503,7 @@ int RagdollController::getBoneIndexByModelKey(const gsys::BoneAccessKey& key) co
return getBoneIndexByName(sead::FormatFixedSafeString<256>("Ragdoll_%s", bone_name));
}
int RagdollController::getBoneIndexByName(const sead::SafeString& name) const {
int RagdollInstance::getBoneIndexByName(const sead::SafeString& name) const {
int index = 0;
for (auto* body : mBoneRigidBodies) {
if (name == body->getHkBodyName())
@ -513,23 +513,23 @@ int RagdollController::getBoneIndexByName(const sead::SafeString& name) const {
return -1;
}
int RagdollController::getParentOfBone(int index) const {
int RagdollInstance::getParentOfBone(int index) const {
return mRagdollInstance->getParentOfBone(index);
}
RagdollRigidBody* RagdollController::getParentBoneRigidBody(const RigidBody* body) const {
RagdollRigidBody* RagdollInstance::getParentBoneRigidBody(const RigidBody* body) const {
return sead::DynamicCast<const RagdollRigidBody>(body)->getParentBody_();
}
int RagdollController::getNumChildBones(const RigidBody* body) const {
int RagdollInstance::getNumChildBones(const RigidBody* body) const {
return sead::DynamicCast<const RagdollRigidBody>(body)->getChildBodies_().size();
}
RagdollRigidBody* RagdollController::getChildBoneRigidBody(const RigidBody* body, int index) const {
RagdollRigidBody* RagdollInstance::getChildBoneRigidBody(const RigidBody* body, int index) const {
return sead::DynamicCast<const RagdollRigidBody>(body)->getChildBodies_()[index];
}
sead::Matrix34f RagdollController::getTransform(int bone_index) const {
sead::Matrix34f RagdollInstance::getTransform(int bone_index) const {
if (mFlags.isOff(Flag::_40)) {
if (util::isMatrixInvalid(mModel->getMatrix()))
return sead::Matrix34f::ident;
@ -556,8 +556,8 @@ sead::Matrix34f RagdollController::getTransform(int bone_index) const {
return out;
}
sead::Matrix34f RagdollController::getTransformWithCustomYAxis(int bone_index,
const sead::Vector3f& y_axis) const {
sead::Matrix34f RagdollInstance::getTransformWithCustomYAxis(int bone_index,
const sead::Vector3f& y_axis) const {
if (mFlags.isOff(Flag::_40)) {
if (util::isMatrixInvalid(mModel->getMatrix()))
return sead::Matrix34f::ident;
@ -611,7 +611,7 @@ sead::Matrix34f RagdollController::getTransformWithCustomYAxis(int bone_index,
return out;
}
int RagdollController::getConstraintIndexByName(const sead::SafeString& name) const {
int RagdollInstance::getConstraintIndexByName(const sead::SafeString& name) const {
for (int i = 0, n = getNumConstraints(); i < n; ++i) {
if (name == mRagdollInstance->m_constraints[i]->getName())
return i;
@ -619,19 +619,19 @@ int RagdollController::getConstraintIndexByName(const sead::SafeString& name) co
return -1;
}
int RagdollController::getNumConstraints() const {
int RagdollInstance::getNumConstraints() const {
return mRagdollInstance->m_constraints.size();
}
void RagdollController::enableConstraint(int index, bool enable) {
void RagdollInstance::enableConstraint(int index, bool enable) {
mDisabledConstraints.changeBit(index, !enable);
}
bool RagdollController::isConstraintEnabled(int index) const {
bool RagdollInstance::isConstraintEnabled(int index) const {
return mDisabledConstraints.isOffBit(index);
}
void RagdollController::setContactLayer(ContactLayer layer) {
void RagdollInstance::setContactLayer(ContactLayer layer) {
if (mContactLayer.value() == layer)
return;
@ -645,8 +645,8 @@ void RagdollController::setContactLayer(ContactLayer layer) {
mContactLayer = layer;
}
void RagdollController::setKeyframed(int bone_index, bool keyframed,
SyncToThisBone sync_to_this_bone) {
void RagdollInstance::setKeyframed(int bone_index, bool keyframed,
SyncToThisBone sync_to_this_bone) {
mKeyframedBones.changeBit(bone_index, keyframed);
if (keyframed) {
@ -660,17 +660,17 @@ void RagdollController::setKeyframed(int bone_index, bool keyframed,
mKeyframedBonesToSyncTo.changeBit(bone_index, keyframed && bool(sync_to_this_bone));
}
void RagdollController::setUnk1(u8 value) {
value = sead::Mathi::clamp(value, 0, sRagdollCtrlUnk1);
void RagdollInstance::setUnk1(u8 value) {
value = sead::Mathi::clamp(value, 0, sRagdollInstanceUnk1);
_e9 = value;
_e8 = value;
}
void RagdollController::setMaximumUnk1(u8 value) {
sRagdollCtrlUnk1 = value;
void RagdollInstance::setMaximumUnk1(u8 value) {
sRagdollInstanceUnk1 = value;
}
void RagdollController::stopForcingKeyframing() {
void RagdollInstance::stopForcingKeyframing() {
if (mFlags.isOn(Flag::AddedToWorld)) {
for (int i = 0, n = mBoneRigidBodies.size(); i < n; ++i) {
setKeyframed(i, false, {});
@ -681,7 +681,7 @@ void RagdollController::stopForcingKeyframing() {
}
}
void RagdollController::update() {
void RagdollInstance::update() {
if (!isAddedToWorld()) {
for (int i = 0, n = getNumConstraints(); i < n; ++i) {
auto* constraint = mRagdollInstance->m_constraints[i];
@ -715,11 +715,11 @@ void RagdollController::update() {
updateGravityFactorOverride();
}
RagdollController::Config& RagdollController::getConfig() {
return sRagdollCtrlConfig;
RagdollInstance::Config& RagdollInstance::getConfig() {
return sRagdollInstanceConfig;
}
void RagdollController::updateGravityFactorOverride() {
void RagdollInstance::updateGravityFactorOverride() {
if (mFlags.isOff(Flag::_200))
return;
@ -732,18 +732,18 @@ void RagdollController::updateGravityFactorOverride() {
}
}
RagdollController::ScopedPhysicsLock::ScopedPhysicsLock(const RagdollController* ctrl)
: mCtrl{ctrl}, mWorldLock{ctrl->isAddedToWorld(), ContactLayerType::Entity} {
for (auto body : util::indexIter(ctrl->mBoneRigidBodies))
RagdollInstance::ScopedPhysicsLock::ScopedPhysicsLock(const RagdollInstance* instance)
: mInstance{instance}, mWorldLock{instance->isAddedToWorld(), ContactLayerType::Entity} {
for (auto body : util::indexIter(instance->mBoneRigidBodies))
body.get()->lock(RigidBody::AlsoLockWorld::No);
}
RagdollController::ScopedPhysicsLock::~ScopedPhysicsLock() {
for (auto body : util::indexIter(mCtrl->mBoneRigidBodies))
RagdollInstance::ScopedPhysicsLock::~ScopedPhysicsLock() {
for (auto body : util::indexIter(mInstance->mBoneRigidBodies))
body.get()->unlock(RigidBody::AlsoLockWorld::No);
}
BoneAccessor* RagdollController::getBoneAccessor() const {
BoneAccessor* RagdollInstance::getBoneAccessor() const {
if (mSkeletonMapper)
return &mSkeletonMapper->getBoneAccessor();

View File

@ -39,7 +39,7 @@ enum class MarkLinearVelAsDirty : bool;
enum class PreserveVelocities : bool;
// TODO
class RagdollController : public sead::hostio::Node {
class RagdollInstance : public sead::hostio::Node {
public:
enum class SyncToThisBone : bool;
@ -53,8 +53,8 @@ public:
hkpConstraintInstance::ConstraintPriority priority = hkpConstraintInstance::PRIORITY_TOI;
};
explicit RagdollController(SystemGroupHandler* handler);
virtual ~RagdollController();
explicit RagdollInstance(SystemGroupHandler* handler);
virtual ~RagdollInstance();
bool init(const RagdollParam* param, sead::DirectResource* res, gsys::Model* model,
sead::Heap* heap);
@ -134,11 +134,11 @@ public:
private:
class ScopedPhysicsLock {
public:
explicit ScopedPhysicsLock(const RagdollController* ctrl);
explicit ScopedPhysicsLock(const RagdollInstance* instance);
~ScopedPhysicsLock();
private:
const RagdollController* mCtrl;
const RagdollInstance* mInstance;
ScopedWorldLock mWorldLock;
};
@ -150,7 +150,7 @@ private:
_20 = 0x20,
_40 = 0x40,
_80 = 0x80,
/// Whether this controller has been registered with the RagdollControllerMgr.
/// Whether this instance has been registered with the RagdollInstanceMgr.
IsRegistered = 0x100,
_200 = 0x200,
};
@ -211,6 +211,6 @@ private:
u8 mBoneIndexForExtraRigidBody = 0;
ContactLayer mContactLayer = ContactLayer::EntityRagdoll;
};
KSYS_CHECK_SIZE_NX150(RagdollController, 0xf0);
KSYS_CHECK_SIZE_NX150(RagdollInstance, 0xf0);
} // namespace ksys::phys

View File

@ -0,0 +1,49 @@
#include "KingSystem/Physics/Ragdoll/physRagdollInstanceMgr.h"
#include <prim/seadScopedLock.h>
#include "KingSystem/Physics/Ragdoll/physRagdollInstance.h"
#include "KingSystem/Physics/System/physSystem.h"
namespace ksys::phys {
RagdollInstanceMgr::RagdollInstanceMgr() = default;
RagdollInstanceMgr::~RagdollInstanceMgr() {
mInstances.freeBuffer();
}
void RagdollInstanceMgr::init(sead::Heap* heap) {
mInstances.alloc(0x400, heap);
}
bool RagdollInstanceMgr::addInstance(RagdollInstance* instance) {
return mInstances.push(instance);
}
void RagdollInstanceMgr::removeInstance(RagdollInstance* instance) {
auto lock = sead::makeScopedLock(mCS);
mInstances.erase(instance);
}
void RagdollInstanceMgr::calc() {
ScopedWorldLock world_lock{ContactLayerType::Entity};
auto lock = sead::makeScopedLock(mCS);
RagdollInstance* first_processed = nullptr;
while (auto* instance = mInstances.pop()) {
mInstances.push(instance);
// If we have processed the entire buffer and wrapped around, stop.
if (first_processed == instance)
break;
instance->update();
if (first_processed == nullptr)
first_processed = instance;
}
}
void RagdollInstanceMgr::calc1() {}
} // namespace ksys::phys

View File

@ -9,23 +9,23 @@ class Heap;
namespace ksys::phys {
class RagdollController;
class RagdollInstance;
class RagdollControllerMgr {
class RagdollInstanceMgr {
public:
RagdollControllerMgr();
virtual ~RagdollControllerMgr();
RagdollInstanceMgr();
virtual ~RagdollInstanceMgr();
void init(sead::Heap* heap);
bool addController(RagdollController* controller);
void removeController(RagdollController* controller);
bool addInstance(RagdollInstance* instance);
void removeInstance(RagdollInstance* instance);
void calc();
void calc1();
private:
util::LockFreeQueue<RagdollController> mControllers;
util::LockFreeQueue<RagdollInstance> mInstances;
sead::CriticalSection mCS;
};

View File

@ -1,16 +1,16 @@
#include "KingSystem/Physics/Ragdoll/physRagdollRigidBody.h"
#include "Havok/Physics2012/Collide/Shape/Convex/Capsule/hkpCapsuleShape.h"
#include "Havok/Physics2012/Dynamics/Entity/hkpRigidBody.h"
#include "KingSystem/Physics/Ragdoll/physRagdollController.h"
#include "KingSystem/Physics/Ragdoll/physRagdollInstance.h"
#include "KingSystem/Physics/physMaterialMask.h"
namespace ksys::phys {
RagdollRigidBody::RagdollRigidBody(const sead::SafeString& name, RagdollController* ctrl,
RagdollRigidBody::RagdollRigidBody(const sead::SafeString& name, RagdollInstance* instance,
int bone_index, hkpRigidBody* hkp_rigid_body, sead::Heap* heap)
: RigidBody(RigidBody::Type::Ragdoll, ContactLayerType::Entity, hkp_rigid_body, name, heap,
true),
mCtrl(ctrl), mBoneIndex(bone_index) {
mInstance(instance), mBoneIndex(bone_index) {
updateCollidableQualityType(true);
mFlags.set(Flag::NoCharStandingOn);
}
@ -20,22 +20,22 @@ RagdollRigidBody::~RagdollRigidBody() {
}
void RagdollRigidBody::init(sead::Heap* heap) {
const int parent_index = mCtrl->getParentOfBone(mBoneIndex);
const int parent_index = mInstance->getParentOfBone(mBoneIndex);
if (parent_index >= 0)
mParentBody = mCtrl->getRigidBodies_()[parent_index];
mParentBody = mInstance->getRigidBodies_()[parent_index];
int num_children = 0;
for (int i = 0, n = mCtrl->getRigidBodies_().size(); i < n; ++i) {
if (mCtrl->getParentOfBone(i) == mBoneIndex)
for (int i = 0, n = mInstance->getRigidBodies_().size(); i < n; ++i) {
if (mInstance->getParentOfBone(i) == mBoneIndex)
++num_children;
}
if (num_children > 0) {
mChildBodies.allocBufferAssert(num_children, heap);
int child_index = 0;
for (int i = 0, n = mCtrl->getRigidBodies_().size(); i < n; ++i) {
if (mCtrl->getParentOfBone(i) == mBoneIndex) {
mChildBodies[child_index] = mCtrl->getRigidBodies_()[i];
for (int i = 0, n = mInstance->getRigidBodies_().size(); i < n; ++i) {
if (mInstance->getParentOfBone(i) == mBoneIndex) {
mChildBodies[child_index] = mInstance->getRigidBodies_()[i];
++child_index;
}
}

View File

@ -5,13 +5,13 @@
namespace ksys::phys {
class RagdollController;
class RagdollInstance;
/// The rigid body for a ragdoll bone.
class RagdollRigidBody : public RigidBody {
SEAD_RTTI_OVERRIDE(RagdollRigidBody, RigidBody)
public:
RagdollRigidBody(const sead::SafeString& name, RagdollController* ctrl, int bone_index,
RagdollRigidBody(const sead::SafeString& name, RagdollInstance* instance, int bone_index,
hkpRigidBody* hkp_rigid_body, sead::Heap* heap);
~RagdollRigidBody() override;
@ -32,7 +32,7 @@ public:
private:
void updateContactMask();
RagdollController* mCtrl{};
RagdollInstance* mInstance{};
int mBoneIndex{};
RagdollRigidBody* mParentBody{};
sead::Buffer<RagdollRigidBody*> mChildBodies{};

View File

@ -1,6 +1,6 @@
#include "KingSystem/Physics/System/physInstanceSet.h"
#include "KingSystem/Physics/CharacterController/physCharacterController.h"
#include "KingSystem/Physics/Ragdoll/physRagdollController.h"
#include "KingSystem/Physics/Ragdoll/physRagdollInstance.h"
#include "KingSystem/Physics/RigidBody/physRigidBodySet.h"
#include "KingSystem/Physics/System/physCollisionInfo.h"
#include "KingSystem/Physics/System/physContactPointInfo.h"
@ -103,8 +103,8 @@ void InstanceSet::sub_7100FBACE0(phys::ContactLayer layer) {
if (sensor)
return;
if (mRagdollController != nullptr)
mRagdollController->disableContactLayer(layer);
if (mRagdollInstance != nullptr)
mRagdollInstance->disableContactLayer(layer);
if (mCharacterController != nullptr)
mCharacterController->disableContactLayer(layer);
@ -114,8 +114,8 @@ void InstanceSet::sub_7100FBAD74() {
for (auto& rb : mRigidBodySets) {
rb.disableAllContactLayers();
}
if (mRagdollController != nullptr) {
mRagdollController->setContactNone();
if (mRagdollInstance != nullptr) {
mRagdollInstance->setContactNone();
}
if (mCharacterController != nullptr) {
mCharacterController->sub_7100F60604();
@ -189,10 +189,10 @@ void InstanceSet::sub_7100FBD284(const sead::Matrix34f& mtx) {
}
mFlags.reset(Flag::_80000000);
if (mRagdollController == nullptr)
if (mRagdollInstance == nullptr)
return;
if (mRagdollController->getWorldState() == RagdollController::WorldState::AddedToWorld)
if (mRagdollInstance->getWorldState() == RagdollInstance::WorldState::AddedToWorld)
sub_7100FBC890(mtx, false, false);
}

View File

@ -32,7 +32,7 @@ class CollisionInfo;
class ContactPointInfo;
class NavMeshCharacter;
class ParamSet;
class RagdollController;
class RagdollInstance;
class RigidBodySet;
class SystemGroupHandler;
class UserTag;
@ -102,7 +102,7 @@ private:
CharacterController* mCharacterController{};
CharacterFormSet* mCharacterFormSet{};
RagdollController* mRagdollController{};
RagdollInstance* mRagdollInstance{};
sead::Buffer<void*> _98;
ContactPointInfo* mRagdollContactPointInfo{};
res::Handle* mRagdollResHandle{};

View File

@ -20,7 +20,7 @@ class GroupFilter;
class LayerContactPointInfo;
class MaterialTable;
class RayCastForRequest;
class RagdollControllerMgr;
class RagdollInstanceMgr;
class RigidBody;
class RigidBodyRequestMgr;
class StaticCompoundMgr;
@ -47,7 +47,7 @@ public:
ContactMgr* getContactMgr() const { return mContactMgr; }
StaticCompoundMgr* getStaticCompoundMgr() const { return mStaticCompoundMgr; }
RigidBodyRequestMgr* getRigidBodyRequestMgr() const { return mRigidBodyRequestMgr; }
RagdollControllerMgr* getRagdollControllerMgr() const { return mRagdollControllerMgr; }
RagdollInstanceMgr* getRagdollInstanceMgr() const { return mRagdollInstanceMgr; }
SystemData* getSystemData() const { return mSystemData; }
MaterialTable* getMaterialTable() const { return mMaterialTable; }
@ -151,7 +151,7 @@ private:
void* _150;
StaticCompoundMgr* mStaticCompoundMgr;
RigidBodyRequestMgr* mRigidBodyRequestMgr;
RagdollControllerMgr* mRagdollControllerMgr;
RagdollInstanceMgr* mRagdollInstanceMgr;
void* mRigidBodyDividedMeshShapeMgr;
SystemData* mSystemData;
MaterialTable* mMaterialTable;