mirror of https://github.com/zeldaret/botw.git
ksys/phys: Rename RagdollController to RagdollInstance
RagdollController is a different thing!
This commit is contained in:
parent
d1d4bf3c29
commit
27ef71eff7
|
@ -93575,66 +93575,66 @@ Address,Quality,Size,Name
|
||||||
0x000000710121d4c8,U,003172,
|
0x000000710121d4c8,U,003172,
|
||||||
0x000000710121e12c,U,000088,
|
0x000000710121e12c,U,000088,
|
||||||
0x000000710121e184,U,000304,
|
0x000000710121e184,U,000304,
|
||||||
0x000000710121e2b4,O,000164,_ZN4ksys4phys17RagdollControllerC1EPNS0_18SystemGroupHandlerE
|
0x000000710121e2b4,O,000164,_ZN4ksys4phys15RagdollInstanceC1EPNS0_18SystemGroupHandlerE
|
||||||
0x000000710121e358,O,000020,_ZN4ksys4phys17RagdollControllerD1Ev
|
0x000000710121e358,O,000020,_ZN4ksys4phys15RagdollInstanceD1Ev
|
||||||
0x000000710121e36c,O,000572,_ZN4ksys4phys17RagdollController8finalizeEv
|
0x000000710121e36c,O,000572,_ZN4ksys4phys15RagdollInstance8finalizeEv
|
||||||
0x000000710121e5a8,O,000052,_ZN4ksys4phys17RagdollControllerD0Ev
|
0x000000710121e5a8,O,000052,_ZN4ksys4phys15RagdollInstanceD0Ev
|
||||||
0x000000710121e5dc,O,000004,_ZN4ksys4phys17RagdollController4initEPKNS0_12RagdollParamEPN4sead14DirectResourceEPN4gsys5ModelEPNS5_4HeapE
|
0x000000710121e5dc,O,000004,_ZN4ksys4phys15RagdollInstance4initEPKNS0_12RagdollParamEPN4sead14DirectResourceEPN4gsys5ModelEPNS5_4HeapE
|
||||||
0x000000710121e5e0,O,001656,_ZN4ksys4phys17RagdollController6doInitEPKNS0_12RagdollParamEPN4sead14DirectResourceEPN4gsys5ModelEPNS5_4HeapE
|
0x000000710121e5e0,O,001656,_ZN4ksys4phys15RagdollInstance6doInitEPKNS0_12RagdollParamEPN4sead14DirectResourceEPN4gsys5ModelEPNS5_4HeapE
|
||||||
0x000000710121ec58,O,000032,_ZNK4ksys4phys17RagdollController14isAddedToWorldEv
|
0x000000710121ec58,O,000032,_ZNK4ksys4phys15RagdollInstance14isAddedToWorldEv
|
||||||
0x000000710121ec78,O,000512,_ZN4ksys4phys17RagdollController26removeFromWorldImmediatelyEv
|
0x000000710121ec78,O,000512,_ZN4ksys4phys15RagdollInstance26removeFromWorldImmediatelyEv
|
||||||
0x000000710121ee78,O,000120,_ZN4ksys4phys17RagdollController15removeFromWorldEv
|
0x000000710121ee78,O,000120,_ZN4ksys4phys15RagdollInstance15removeFromWorldEv
|
||||||
0x000000710121eef0,O,000192,_ZN4ksys4phys17RagdollController28removeFromWorldAndResetLinksEv
|
0x000000710121eef0,O,000192,_ZN4ksys4phys15RagdollInstance28removeFromWorldAndResetLinksEv
|
||||||
0x000000710121efb0,O,000032,_ZNK4ksys4phys17RagdollController15isAddingToWorldEv
|
0x000000710121efb0,O,000032,_ZNK4ksys4phys15RagdollInstance15isAddingToWorldEv
|
||||||
0x000000710121efd0,O,000260,_ZN4ksys4phys17RagdollController12setTransformERKN4sead8Matrix34IfEE
|
0x000000710121efd0,O,000260,_ZN4ksys4phys15RagdollInstance12setTransformERKN4sead8Matrix34IfEE
|
||||||
0x000000710121f0d4,O,000512,_ZN4ksys4phys17RagdollController12setTransformERK14hkQsTransformf
|
0x000000710121f0d4,O,000512,_ZN4ksys4phys15RagdollInstance12setTransformERK14hkQsTransformf
|
||||||
0x000000710121f2d4,O,000736,_ZN4ksys4phys17RagdollController8setScaleEf
|
0x000000710121f2d4,O,000736,_ZN4ksys4phys15RagdollInstance8setScaleEf
|
||||||
0x000000710121f5b4,O,000076,_ZN4ksys4phys17RagdollController26setFixedAndPreserveImpulseENS0_5FixedENS0_20MarkLinearVelAsDirtyE
|
0x000000710121f5b4,O,000076,_ZN4ksys4phys15RagdollInstance26setFixedAndPreserveImpulseENS0_5FixedENS0_20MarkLinearVelAsDirtyE
|
||||||
0x000000710121f600,O,000052,_ZN4ksys4phys17RagdollController16resetFrozenStateEv
|
0x000000710121f600,O,000052,_ZN4ksys4phys15RagdollInstance16resetFrozenStateEv
|
||||||
0x000000710121f634,O,000108,_ZN4ksys4phys17RagdollController22setUseSystemTimeFactorEb
|
0x000000710121f634,O,000108,_ZN4ksys4phys15RagdollInstance22setUseSystemTimeFactorEb
|
||||||
0x000000710121f6a0,O,000108,_ZN4ksys4phys17RagdollController15clearFlag400000Eb
|
0x000000710121f6a0,O,000108,_ZN4ksys4phys15RagdollInstance15clearFlag400000Eb
|
||||||
0x000000710121f70c,O,000068,_ZN4ksys4phys17RagdollController22setEntityMotionFlag200Eb
|
0x000000710121f70c,O,000068,_ZN4ksys4phys15RagdollInstance22setEntityMotionFlag200Eb
|
||||||
0x000000710121f750,O,000076,_ZN4ksys4phys17RagdollController8setFixedENS0_5FixedENS0_18PreserveVelocitiesE
|
0x000000710121f750,O,000076,_ZN4ksys4phys15RagdollInstance8setFixedENS0_5FixedENS0_18PreserveVelocitiesE
|
||||||
0x000000710121f79c,O,000024,_ZNK4ksys4phys17RagdollController20getModelBoneAccessorEv
|
0x000000710121f79c,O,000024,_ZNK4ksys4phys15RagdollInstance20getModelBoneAccessorEv
|
||||||
0x000000710121f7b4,U,000740,
|
0x000000710121f7b4,U,000740,
|
||||||
0x000000710121fa98,U,001604,
|
0x000000710121fa98,U,001604,
|
||||||
0x00000071012200dc,U,001728,
|
0x00000071012200dc,U,001728,
|
||||||
0x000000710122079c,U,000948,
|
0x000000710122079c,U,000948,
|
||||||
0x0000007101220b50,U,000604,
|
0x0000007101220b50,U,000604,
|
||||||
0x0000007101220dac,U,001460,
|
0x0000007101220dac,U,001460,
|
||||||
0x0000007101221360,O,000004,_ZN4ksys4phys17RagdollController2m3Ev
|
0x0000007101221360,O,000004,_ZN4ksys4phys15RagdollInstance2m3Ev
|
||||||
0x0000007101221364,O,000116,_ZN4ksys4phys17RagdollController10setUserTagEPNS0_7UserTagE
|
0x0000007101221364,O,000116,_ZN4ksys4phys15RagdollInstance10setUserTagEPNS0_7UserTagE
|
||||||
0x00000071012213d8,O,000076,_ZN4ksys4phys17RagdollController21setSystemGroupHandlerEPNS0_18SystemGroupHandlerE
|
0x00000071012213d8,O,000076,_ZN4ksys4phys15RagdollInstance21setSystemGroupHandlerEPNS0_18SystemGroupHandlerE
|
||||||
0x0000007101221424,U,000632,
|
0x0000007101221424,U,000632,
|
||||||
0x000000710122169c,O,000068,_ZN4ksys4phys17RagdollController19setContactPointInfoEPNS0_16ContactPointInfoE
|
0x000000710122169c,O,000068,_ZN4ksys4phys15RagdollInstance19setContactPointInfoEPNS0_16ContactPointInfoE
|
||||||
0x00000071012216e0,O,000072,_ZN4ksys4phys17RagdollController18enableContactLayerENS0_12ContactLayerE
|
0x00000071012216e0,O,000072,_ZN4ksys4phys15RagdollInstance18enableContactLayerENS0_12ContactLayerE
|
||||||
0x0000007101221728,O,000072,_ZN4ksys4phys17RagdollController19disableContactLayerENS0_12ContactLayerE
|
0x0000007101221728,O,000072,_ZN4ksys4phys15RagdollInstance19disableContactLayerENS0_12ContactLayerE
|
||||||
0x0000007101221770,O,000056,_ZN4ksys4phys17RagdollController13setContactAllEv
|
0x0000007101221770,O,000056,_ZN4ksys4phys15RagdollInstance13setContactAllEv
|
||||||
0x00000071012217a8,O,000056,_ZN4ksys4phys17RagdollController14setContactNoneEv
|
0x00000071012217a8,O,000056,_ZN4ksys4phys15RagdollInstance14setContactNoneEv
|
||||||
0x00000071012217e0,O,000032,_ZN4ksys4phys17RagdollController13setContactAllEi
|
0x00000071012217e0,O,000032,_ZN4ksys4phys15RagdollInstance13setContactAllEi
|
||||||
0x0000007101221800,O,000032,_ZN4ksys4phys17RagdollController14setContactNoneEi
|
0x0000007101221800,O,000032,_ZN4ksys4phys15RagdollInstance14setContactNoneEi
|
||||||
0x0000007101221820,O,001188,_ZN4ksys4phys17RagdollController16changeWorldStateENS1_10WorldStateE
|
0x0000007101221820,O,001188,_ZN4ksys4phys15RagdollInstance16changeWorldStateENS1_10WorldStateE
|
||||||
0x0000007101221cc4,O,000016,_ZNK4ksys4phys17RagdollController13getWorldStateEv
|
0x0000007101221cc4,O,000016,_ZNK4ksys4phys15RagdollInstance13getWorldStateEv
|
||||||
0x0000007101221cd4,O,000012,_ZN4ksys4phys17RagdollController17setExtraRigidBodyEPNS0_9RigidBodyEi
|
0x0000007101221cd4,O,000012,_ZN4ksys4phys15RagdollInstance17setExtraRigidBodyEPNS0_9RigidBodyEi
|
||||||
0x0000007101221ce0,O,000068,_ZN4ksys4phys17RagdollController16setGravityFactorEf
|
0x0000007101221ce0,O,000068,_ZN4ksys4phys15RagdollInstance16setGravityFactorEf
|
||||||
0x0000007101221d24,U,000032,
|
0x0000007101221d24,U,000032,
|
||||||
0x0000007101221d44,O,000324,_ZNK4ksys4phys17RagdollController22getBoneRigidBodyByNameERKN4sead14SafeStringBaseIcEE
|
0x0000007101221d44,O,000324,_ZNK4ksys4phys15RagdollInstance22getBoneRigidBodyByNameERKN4sead14SafeStringBaseIcEE
|
||||||
0x0000007101221e88,O,000300,_ZNK4ksys4phys17RagdollController18getBoneIndexByNameERKN4sead14SafeStringBaseIcEE
|
0x0000007101221e88,O,000300,_ZNK4ksys4phys15RagdollInstance18getBoneIndexByNameERKN4sead14SafeStringBaseIcEE
|
||||||
0x0000007101221fb4,O,000380,_ZNK4ksys4phys17RagdollController22getBoneIndexByModelKeyERKN4gsys13BoneAccessKeyE
|
0x0000007101221fb4,O,000380,_ZNK4ksys4phys15RagdollInstance22getBoneIndexByModelKeyERKN4gsys13BoneAccessKeyE
|
||||||
0x0000007101222130,O,000020,_ZNK4ksys4phys17RagdollController15getParentOfBoneEi
|
0x0000007101222130,O,000020,_ZNK4ksys4phys15RagdollInstance15getParentOfBoneEi
|
||||||
0x0000007101222144,O,000132,_ZNK4ksys4phys17RagdollController22getParentBoneRigidBodyEPKNS0_9RigidBodyE
|
0x0000007101222144,O,000132,_ZNK4ksys4phys15RagdollInstance22getParentBoneRigidBodyEPKNS0_9RigidBodyE
|
||||||
0x00000071012221c8,O,000132,_ZNK4ksys4phys17RagdollController16getNumChildBonesEPKNS0_9RigidBodyE
|
0x00000071012221c8,O,000132,_ZNK4ksys4phys15RagdollInstance16getNumChildBonesEPKNS0_9RigidBodyE
|
||||||
0x000000710122224c,O,000156,_ZNK4ksys4phys17RagdollController21getChildBoneRigidBodyEPKNS0_9RigidBodyEi
|
0x000000710122224c,O,000156,_ZNK4ksys4phys15RagdollInstance21getChildBoneRigidBodyEPKNS0_9RigidBodyEi
|
||||||
0x00000071012222e8,O,001268,_ZNK4ksys4phys17RagdollController12getTransformEi
|
0x00000071012222e8,O,001268,_ZNK4ksys4phys15RagdollInstance12getTransformEi
|
||||||
0x00000071012227dc,O,001844,_ZNK4ksys4phys17RagdollController27getTransformWithCustomYAxisEiRKN4sead7Vector3IfEE
|
0x00000071012227dc,O,001844,_ZNK4ksys4phys15RagdollInstance27getTransformWithCustomYAxisEiRKN4sead7Vector3IfEE
|
||||||
0x0000007101222f10,O,000340,_ZNK4ksys4phys17RagdollController24getConstraintIndexByNameERKN4sead14SafeStringBaseIcEE
|
0x0000007101222f10,O,000340,_ZNK4ksys4phys15RagdollInstance24getConstraintIndexByNameERKN4sead14SafeStringBaseIcEE
|
||||||
0x0000007101223064,O,000012,_ZNK4ksys4phys17RagdollController17getNumConstraintsEv
|
0x0000007101223064,O,000012,_ZNK4ksys4phys15RagdollInstance17getNumConstraintsEv
|
||||||
0x0000007101223070,O,000044,_ZN4ksys4phys17RagdollController16enableConstraintEib
|
0x0000007101223070,O,000044,_ZN4ksys4phys15RagdollInstance16enableConstraintEib
|
||||||
0x000000710122309c,O,000176,_ZN4ksys4phys17RagdollController15setContactLayerENS0_12ContactLayerE
|
0x000000710122309c,O,000176,_ZN4ksys4phys15RagdollInstance15setContactLayerENS0_12ContactLayerE
|
||||||
0x000000710122314c,O,000228,_ZN4ksys4phys17RagdollController12setKeyframedEibNS1_14SyncToThisBoneE
|
0x000000710122314c,O,000228,_ZN4ksys4phys15RagdollInstance12setKeyframedEibNS1_14SyncToThisBoneE
|
||||||
0x0000007101223230,O,000032,_ZN4ksys4phys17RagdollController7setUnk1Eh
|
0x0000007101223230,O,000032,_ZN4ksys4phys15RagdollInstance7setUnk1Eh
|
||||||
0x0000007101223250,O,000208,_ZN4ksys4phys17RagdollController21stopForcingKeyframingEv
|
0x0000007101223250,O,000208,_ZN4ksys4phys15RagdollInstance21stopForcingKeyframingEv
|
||||||
0x0000007101223320,O,000536,_ZN4ksys4phys17RagdollController6updateEv
|
0x0000007101223320,O,000536,_ZN4ksys4phys15RagdollInstance6updateEv
|
||||||
0x0000007101223538,O,000440,_ZN4ksys4phys12RagdollParamC1Ev
|
0x0000007101223538,O,000440,_ZN4ksys4phys12RagdollParamC1Ev
|
||||||
0x00000071012236f0,O,000044,_ZN4ksys4phys12RagdollParamD1Ev
|
0x00000071012236f0,O,000044,_ZN4ksys4phys12RagdollParamD1Ev
|
||||||
0x000000710122371c,O,000004,_ZN4ksys4phys12RagdollParamD0Ev
|
0x000000710122371c,O,000004,_ZN4ksys4phys12RagdollParamD0Ev
|
||||||
|
@ -95332,19 +95332,19 @@ Address,Quality,Size,Name
|
||||||
0x00000071012ac688,O,000084,_ZN4ksys4phys24RagdollControllerKeyList20RagdollControllerKeyD2Ev
|
0x00000071012ac688,O,000084,_ZN4ksys4phys24RagdollControllerKeyList20RagdollControllerKeyD2Ev
|
||||||
0x00000071012ac6dc,O,000004,_ZN4ksys4phys24RagdollControllerKeyList20RagdollControllerKeyD0Ev
|
0x00000071012ac6dc,O,000004,_ZN4ksys4phys24RagdollControllerKeyList20RagdollControllerKeyD0Ev
|
||||||
0x00000071012ac6e0,O,000372,_ZN4ksys4phys24RagdollControllerKeyList33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE
|
0x00000071012ac6e0,O,000372,_ZN4ksys4phys24RagdollControllerKeyList33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE
|
||||||
0x00000071012ac854,O,000040,_ZN4ksys4phys20RagdollControllerMgrC1Ev
|
0x00000071012ac854,O,000040,_ZN4ksys4phys18RagdollInstanceMgrC1Ev
|
||||||
0x00000071012ac87c,O,000068,_ZN4ksys4phys20RagdollControllerMgrD1Ev
|
0x00000071012ac87c,O,000068,_ZN4ksys4phys18RagdollInstanceMgrD1Ev
|
||||||
0x00000071012ac8c0,O,000076,_ZN4ksys4phys20RagdollControllerMgrD0Ev
|
0x00000071012ac8c0,O,000076,_ZN4ksys4phys18RagdollInstanceMgrD0Ev
|
||||||
0x00000071012ac90c,O,000188,_ZN4ksys4phys20RagdollControllerMgr4initEPN4sead4HeapE
|
0x00000071012ac90c,O,000188,_ZN4ksys4phys18RagdollInstanceMgr4initEPN4sead4HeapE
|
||||||
0x00000071012ac9c8,O,000148,_ZN4ksys4phys20RagdollControllerMgr13addControllerEPNS0_17RagdollControllerE
|
0x00000071012ac9c8,O,000148,_ZN4ksys4phys18RagdollInstanceMgr11addInstanceEPNS0_15RagdollInstanceE
|
||||||
0x00000071012aca5c,O,000128,_ZN4ksys4phys20RagdollControllerMgr16removeControllerEPNS0_17RagdollControllerE
|
0x00000071012aca5c,O,000128,_ZN4ksys4phys18RagdollInstanceMgr14removeInstanceEPNS0_15RagdollInstanceE
|
||||||
0x00000071012acadc,M,000348,_ZN4ksys4phys20RagdollControllerMgr4calcEv
|
0x00000071012acadc,M,000348,_ZN4ksys4phys18RagdollInstanceMgr4calcEv
|
||||||
0x00000071012acc38,O,000004,_ZN4ksys4phys20RagdollControllerMgr5calc1Ev
|
0x00000071012acc38,O,000004,_ZN4ksys4phys18RagdollInstanceMgr5calc1Ev
|
||||||
0x00000071012acc3c,O,000048,_ZN4ksys4phys15RagdollResourceC1Ev
|
0x00000071012acc3c,O,000048,_ZN4ksys4phys15RagdollResourceC1Ev
|
||||||
0x00000071012acc6c,O,000004,_ZN4ksys4phys15RagdollResourceD1Ev
|
0x00000071012acc6c,O,000004,_ZN4ksys4phys15RagdollResourceD1Ev
|
||||||
0x00000071012acc70,O,000036,_ZN4ksys4phys15RagdollResourceD0Ev
|
0x00000071012acc70,O,000036,_ZN4ksys4phys15RagdollResourceD0Ev
|
||||||
0x00000071012acc94,O,000004,_ZN4ksys4phys15RagdollResource9doCreate_EPhjPN4sead4HeapE
|
0x00000071012acc94,O,000004,_ZN4ksys4phys15RagdollResource9doCreate_EPhjPN4sead4HeapE
|
||||||
0x00000071012acc98,O,000148,_ZN4ksys4phys16RagdollRigidBodyC1ERKN4sead14SafeStringBaseIcEEPNS0_17RagdollControllerEiP12hkpRigidBodyPNS2_4HeapE
|
0x00000071012acc98,O,000148,_ZN4ksys4phys16RagdollRigidBodyC1ERKN4sead14SafeStringBaseIcEEPNS0_15RagdollInstanceEiP12hkpRigidBodyPNS2_4HeapE
|
||||||
0x00000071012acd2c,O,000076,_ZN4ksys4phys16RagdollRigidBodyD1Ev
|
0x00000071012acd2c,O,000076,_ZN4ksys4phys16RagdollRigidBodyD1Ev
|
||||||
0x00000071012acd78,O,000076,_ZThn32_N4ksys4phys16RagdollRigidBodyD1Ev
|
0x00000071012acd78,O,000076,_ZThn32_N4ksys4phys16RagdollRigidBodyD1Ev
|
||||||
0x00000071012acdc4,O,000084,_ZN4ksys4phys16RagdollRigidBodyD0Ev
|
0x00000071012acdc4,O,000084,_ZN4ksys4phys16RagdollRigidBodyD0Ev
|
||||||
|
|
Can't render this file because it is too large.
|
|
@ -13,10 +13,10 @@ target_sources(uking PRIVATE
|
||||||
Ragdoll/physRagdollConfig.h
|
Ragdoll/physRagdollConfig.h
|
||||||
Ragdoll/physRagdollControllerKeyList.h
|
Ragdoll/physRagdollControllerKeyList.h
|
||||||
Ragdoll/physRagdollControllerKeyList.cpp
|
Ragdoll/physRagdollControllerKeyList.cpp
|
||||||
Ragdoll/physRagdollController.cpp
|
Ragdoll/physRagdollInstance.cpp
|
||||||
Ragdoll/physRagdollController.h
|
Ragdoll/physRagdollInstance.h
|
||||||
Ragdoll/physRagdollControllerMgr.cpp
|
Ragdoll/physRagdollInstanceMgr.cpp
|
||||||
Ragdoll/physRagdollControllerMgr.h
|
Ragdoll/physRagdollInstanceMgr.h
|
||||||
Ragdoll/physRagdollParam.cpp
|
Ragdoll/physRagdollParam.cpp
|
||||||
Ragdoll/physRagdollParam.h
|
Ragdoll/physRagdollParam.h
|
||||||
Ragdoll/physRagdollResource.cpp
|
Ragdoll/physRagdollResource.cpp
|
||||||
|
|
|
@ -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
|
|
|
@ -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/Mapper/hkaSkeletonMapper.h>
|
||||||
#include <Havok/Animation/Animation/Rig/hkaPose.h>
|
#include <Havok/Animation/Animation/Rig/hkaPose.h>
|
||||||
#include <Havok/Animation/Physics2012Bridge/Instance/hkaRagdollInstance.h>
|
#include <Havok/Animation/Physics2012Bridge/Instance/hkaRagdollInstance.h>
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
#include <math/seadMathCalcCommon.h>
|
#include <math/seadMathCalcCommon.h>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <resource/seadResource.h>
|
#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/Ragdoll/physRagdollRigidBody.h"
|
||||||
#include "KingSystem/Physics/Rig/physModelBoneAccessor.h"
|
#include "KingSystem/Physics/Rig/physModelBoneAccessor.h"
|
||||||
#include "KingSystem/Physics/Rig/physSkeletonMapper.h"
|
#include "KingSystem/Physics/Rig/physSkeletonMapper.h"
|
||||||
|
@ -30,23 +30,23 @@
|
||||||
|
|
||||||
namespace ksys::phys {
|
namespace ksys::phys {
|
||||||
|
|
||||||
static u8 sRagdollCtrlUnk1 = 15;
|
static u8 sRagdollInstanceUnk1 = 15;
|
||||||
static RagdollController::Config sRagdollCtrlConfig;
|
static RagdollInstance::Config sRagdollInstanceConfig;
|
||||||
|
|
||||||
RagdollController::RagdollController(SystemGroupHandler* handler)
|
RagdollInstance::RagdollInstance(SystemGroupHandler* handler)
|
||||||
: mGroupHandler(handler), _e8(sRagdollCtrlUnk1), _e9(sRagdollCtrlUnk1) {}
|
: mGroupHandler(handler), _e8(sRagdollInstanceUnk1), _e9(sRagdollInstanceUnk1) {}
|
||||||
|
|
||||||
RagdollController::~RagdollController() {
|
RagdollInstance::~RagdollInstance() {
|
||||||
finalize();
|
finalize();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RagdollController::init(const RagdollParam* param, sead::DirectResource* res,
|
bool RagdollInstance::init(const RagdollParam* param, sead::DirectResource* res, gsys::Model* model,
|
||||||
gsys::Model* model, sead::Heap* heap) {
|
sead::Heap* heap) {
|
||||||
return doInit(param, res, model, heap);
|
return doInit(param, res, model, heap);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RagdollController::doInit(const RagdollParam* param, sead::DirectResource* res,
|
bool RagdollInstance::doInit(const RagdollParam* param, sead::DirectResource* res,
|
||||||
gsys::Model* model, sead::Heap* heap) {
|
gsys::Model* model, sead::Heap* heap) {
|
||||||
if (!res)
|
if (!res)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ bool RagdollController::doInit(const RagdollParam* param, sead::DirectResource*
|
||||||
return true;
|
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;
|
static constexpr size_t Alignment = 0x20;
|
||||||
mBoneTransformsByteSize =
|
mBoneTransformsByteSize =
|
||||||
sead::Mathu::roundUpPow2(sizeof(hkQsTransformf) * num_bones, Alignment);
|
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]);
|
mBoneTransforms.setBuffer(num_bones, new (buffer) hkQsTransformf[num_bones]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::registerSelf() {
|
void RagdollInstance::registerSelf() {
|
||||||
const bool registered = System::instance()->getRagdollControllerMgr()->addController(this);
|
const bool registered = System::instance()->getRagdollInstanceMgr()->addInstance(this);
|
||||||
mFlags.change(Flag::IsRegistered, registered);
|
mFlags.change(Flag::IsRegistered, registered);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::unregisterSelf() {
|
void RagdollInstance::unregisterSelf() {
|
||||||
if (mFlags.isOn(Flag::IsRegistered)) {
|
if (mFlags.isOn(Flag::IsRegistered)) {
|
||||||
System::instance()->getRagdollControllerMgr()->removeController(this);
|
System::instance()->getRagdollInstanceMgr()->removeInstance(this);
|
||||||
mFlags.reset(Flag::IsRegistered);
|
mFlags.reset(Flag::IsRegistered);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::finalize() {
|
void RagdollInstance::finalize() {
|
||||||
for (auto body : util::indexIter(mBoneRigidBodies)) {
|
for (auto body : util::indexIter(mBoneRigidBodies)) {
|
||||||
body.get()->setCollisionInfo(nullptr);
|
body.get()->setCollisionInfo(nullptr);
|
||||||
body.get()->setContactPointInfo(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) {
|
for (int i = 0, n = mRagdollInstance->m_constraints.getSize(); i < n; ++i) {
|
||||||
auto* constraint = mRagdollInstance->m_constraints[i];
|
auto* constraint = mRagdollInstance->m_constraints[i];
|
||||||
if (constraint->getOwner() != nullptr) {
|
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();
|
return mBoneRigidBodies.size() > 0 && mBoneRigidBodies.back()->isAddedToWorld();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::removeFromWorldImmediately() {
|
void RagdollInstance::removeFromWorldImmediately() {
|
||||||
ScopedPhysicsLock lock{this};
|
ScopedPhysicsLock lock{this};
|
||||||
|
|
||||||
removeConstraints();
|
removeConstraints();
|
||||||
|
@ -239,12 +239,12 @@ void RagdollController::removeFromWorldImmediately() {
|
||||||
body.get()->removeFromWorldImmediately();
|
body.get()->removeFromWorldImmediately();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::removeFromWorld() {
|
void RagdollInstance::removeFromWorld() {
|
||||||
for (auto body : util::indexIter(mBoneRigidBodies))
|
for (auto body : util::indexIter(mBoneRigidBodies))
|
||||||
body.get()->removeFromWorld();
|
body.get()->removeFromWorld();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RagdollController::removeFromWorldAndResetLinks() {
|
bool RagdollInstance::removeFromWorldAndResetLinks() {
|
||||||
bool removed = true;
|
bool removed = true;
|
||||||
for (auto body : util::indexIter(mBoneRigidBodies))
|
for (auto body : util::indexIter(mBoneRigidBodies))
|
||||||
removed &= body.get()->removeFromWorldAndResetLinks();
|
removed &= body.get()->removeFromWorldAndResetLinks();
|
||||||
|
@ -254,17 +254,17 @@ bool RagdollController::removeFromWorldAndResetLinks() {
|
||||||
return removed;
|
return removed;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RagdollController::isAddingToWorld() const {
|
bool RagdollInstance::isAddingToWorld() const {
|
||||||
return mBoneRigidBodies.size() > 0 && mBoneRigidBodies.back()->isAddingBodyToWorld();
|
return mBoneRigidBodies.size() > 0 && mBoneRigidBodies.back()->isAddingBodyToWorld();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::setTransform(const sead::Matrix34f& transform) {
|
void RagdollInstance::setTransform(const sead::Matrix34f& transform) {
|
||||||
hkQsTransformf hk_transform;
|
hkQsTransformf hk_transform;
|
||||||
toHkQsTransform(&hk_transform, transform, sead::Vector3f::ones);
|
toHkQsTransform(&hk_transform, transform, sead::Vector3f::ones);
|
||||||
setTransform(hk_transform);
|
setTransform(hk_transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::setTransform(const hkQsTransformf& transform) {
|
void RagdollInstance::setTransform(const hkQsTransformf& transform) {
|
||||||
ScopedPhysicsLock lock{this};
|
ScopedPhysicsLock lock{this};
|
||||||
|
|
||||||
if (mSkeletonMapper)
|
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))
|
if (sead::Mathf::equalsEpsilon(scale, 1.0))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -332,92 +332,92 @@ void RagdollController::setScale(float scale) {
|
||||||
mSkeletonMapper->getBoneAccessor().setScale(scale);
|
mSkeletonMapper->getBoneAccessor().setScale(scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::setFixedAndPreserveImpulse(Fixed fixed,
|
void RagdollInstance::setFixedAndPreserveImpulse(Fixed fixed,
|
||||||
MarkLinearVelAsDirty mark_linear_vel_as_dirty) {
|
MarkLinearVelAsDirty mark_linear_vel_as_dirty) {
|
||||||
for (auto* body : mBoneRigidBodies)
|
for (auto* body : mBoneRigidBodies)
|
||||||
body->setFixedAndPreserveImpulse(fixed, mark_linear_vel_as_dirty);
|
body->setFixedAndPreserveImpulse(fixed, mark_linear_vel_as_dirty);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::resetFrozenState() {
|
void RagdollInstance::resetFrozenState() {
|
||||||
for (auto* body : mBoneRigidBodies)
|
for (auto* body : mBoneRigidBodies)
|
||||||
body->resetFrozenState();
|
body->resetFrozenState();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::setUseSystemTimeFactor(bool use) {
|
void RagdollInstance::setUseSystemTimeFactor(bool use) {
|
||||||
for (auto* body : mBoneRigidBodies)
|
for (auto* body : mBoneRigidBodies)
|
||||||
body->setUseSystemTimeFactor(use);
|
body->setUseSystemTimeFactor(use);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::clearFlag400000(bool clear) {
|
void RagdollInstance::clearFlag400000(bool clear) {
|
||||||
for (auto* body : mBoneRigidBodies)
|
for (auto* body : mBoneRigidBodies)
|
||||||
body->clearFlag400000(clear);
|
body->clearFlag400000(clear);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::setEntityMotionFlag200(bool set) {
|
void RagdollInstance::setEntityMotionFlag200(bool set) {
|
||||||
for (auto* body : mBoneRigidBodies)
|
for (auto* body : mBoneRigidBodies)
|
||||||
body->setEntityMotionFlag200(set);
|
body->setEntityMotionFlag200(set);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::setFixed(Fixed fixed, PreserveVelocities preserve_velocities) {
|
void RagdollInstance::setFixed(Fixed fixed, PreserveVelocities preserve_velocities) {
|
||||||
for (auto* body : mBoneRigidBodies)
|
for (auto* body : mBoneRigidBodies)
|
||||||
body->setFixed(fixed, preserve_velocities);
|
body->setFixed(fixed, preserve_velocities);
|
||||||
}
|
}
|
||||||
|
|
||||||
ModelBoneAccessor* RagdollController::getModelBoneAccessor() const {
|
ModelBoneAccessor* RagdollInstance::getModelBoneAccessor() const {
|
||||||
if (mSkeletonMapper)
|
if (mSkeletonMapper)
|
||||||
return &mSkeletonMapper->getModelBoneAccessor();
|
return &mSkeletonMapper->getModelBoneAccessor();
|
||||||
|
|
||||||
return mModelBoneAccessor;
|
return mModelBoneAccessor;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::m3() {}
|
void RagdollInstance::m3() {}
|
||||||
|
|
||||||
void RagdollController::setUserTag(UserTag* tag) {
|
void RagdollInstance::setUserTag(UserTag* tag) {
|
||||||
for (auto* body : mBoneRigidBodies)
|
for (auto* body : mBoneRigidBodies)
|
||||||
body->setUserTag(tag);
|
body->setUserTag(tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::setSystemGroupHandler(SystemGroupHandler* handler) {
|
void RagdollInstance::setSystemGroupHandler(SystemGroupHandler* handler) {
|
||||||
for (auto* body : mBoneRigidBodies)
|
for (auto* body : mBoneRigidBodies)
|
||||||
body->setSystemGroupHandler(handler);
|
body->setSystemGroupHandler(handler);
|
||||||
|
|
||||||
mGroupHandler = handler;
|
mGroupHandler = handler;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::setContactPointInfo(ContactPointInfo* info) {
|
void RagdollInstance::setContactPointInfo(ContactPointInfo* info) {
|
||||||
for (auto* body : mBoneRigidBodies)
|
for (auto* body : mBoneRigidBodies)
|
||||||
body->setContactPointInfo(info);
|
body->setContactPointInfo(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::enableContactLayer(ContactLayer layer) {
|
void RagdollInstance::enableContactLayer(ContactLayer layer) {
|
||||||
for (auto* body : mBoneRigidBodies)
|
for (auto* body : mBoneRigidBodies)
|
||||||
body->enableContactLayer(layer, false);
|
body->enableContactLayer(layer, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::disableContactLayer(ContactLayer layer) {
|
void RagdollInstance::disableContactLayer(ContactLayer layer) {
|
||||||
for (auto* body : mBoneRigidBodies)
|
for (auto* body : mBoneRigidBodies)
|
||||||
body->disableContactLayer(layer, false);
|
body->disableContactLayer(layer, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::setContactAll() {
|
void RagdollInstance::setContactAll() {
|
||||||
for (auto* body : mBoneRigidBodies)
|
for (auto* body : mBoneRigidBodies)
|
||||||
body->setContactAll(false);
|
body->setContactAll(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::setContactNone() {
|
void RagdollInstance::setContactNone() {
|
||||||
for (auto* body : mBoneRigidBodies)
|
for (auto* body : mBoneRigidBodies)
|
||||||
body->setContactNone(false);
|
body->setContactNone(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::setContactAll(int bone_index) {
|
void RagdollInstance::setContactAll(int bone_index) {
|
||||||
mBoneRigidBodies[bone_index]->setContactAll(false);
|
mBoneRigidBodies[bone_index]->setContactAll(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::setContactNone(int bone_index) {
|
void RagdollInstance::setContactNone(int bone_index) {
|
||||||
mBoneRigidBodies[bone_index]->setContactNone(false);
|
mBoneRigidBodies[bone_index]->setContactNone(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::changeWorldState(RagdollController::WorldState state) {
|
void RagdollInstance::changeWorldState(RagdollInstance::WorldState state) {
|
||||||
if (getWorldState() == state)
|
if (getWorldState() == state)
|
||||||
return;
|
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;
|
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;
|
mExtraRigidBody = body;
|
||||||
mBoneIndexForExtraRigidBody = bone_index;
|
mBoneIndexForExtraRigidBody = bone_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::setGravityFactor(float factor) {
|
void RagdollInstance::setGravityFactor(float factor) {
|
||||||
for (auto* body : mBoneRigidBodies)
|
for (auto* body : mBoneRigidBodies)
|
||||||
body->setGravityFactor(factor);
|
body->setGravityFactor(factor);
|
||||||
}
|
}
|
||||||
|
|
||||||
RagdollRigidBody* RagdollController::getBoneRigidBodyByName(const sead::SafeString& name) const {
|
RagdollRigidBody* RagdollInstance::getBoneRigidBodyByName(const sead::SafeString& name) const {
|
||||||
const int index = getBoneIndexByName(name);
|
const int index = getBoneIndexByName(name);
|
||||||
if (index < 0)
|
if (index < 0)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -493,7 +493,7 @@ RagdollRigidBody* RagdollController::getBoneRigidBodyByName(const sead::SafeStri
|
||||||
return mBoneRigidBodies[index];
|
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 int model_bone_index = getModelBoneAccessor()->findBoneIndex(key);
|
||||||
|
|
||||||
const char* bone_name = getModelBoneAccessor()->getBoneName(model_bone_index);
|
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));
|
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;
|
int index = 0;
|
||||||
for (auto* body : mBoneRigidBodies) {
|
for (auto* body : mBoneRigidBodies) {
|
||||||
if (name == body->getHkBodyName())
|
if (name == body->getHkBodyName())
|
||||||
|
@ -513,23 +513,23 @@ int RagdollController::getBoneIndexByName(const sead::SafeString& name) const {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int RagdollController::getParentOfBone(int index) const {
|
int RagdollInstance::getParentOfBone(int index) const {
|
||||||
return mRagdollInstance->getParentOfBone(index);
|
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_();
|
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();
|
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];
|
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 (mFlags.isOff(Flag::_40)) {
|
||||||
if (util::isMatrixInvalid(mModel->getMatrix()))
|
if (util::isMatrixInvalid(mModel->getMatrix()))
|
||||||
return sead::Matrix34f::ident;
|
return sead::Matrix34f::ident;
|
||||||
|
@ -556,8 +556,8 @@ sead::Matrix34f RagdollController::getTransform(int bone_index) const {
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
sead::Matrix34f RagdollController::getTransformWithCustomYAxis(int bone_index,
|
sead::Matrix34f RagdollInstance::getTransformWithCustomYAxis(int bone_index,
|
||||||
const sead::Vector3f& y_axis) const {
|
const sead::Vector3f& y_axis) const {
|
||||||
if (mFlags.isOff(Flag::_40)) {
|
if (mFlags.isOff(Flag::_40)) {
|
||||||
if (util::isMatrixInvalid(mModel->getMatrix()))
|
if (util::isMatrixInvalid(mModel->getMatrix()))
|
||||||
return sead::Matrix34f::ident;
|
return sead::Matrix34f::ident;
|
||||||
|
@ -611,7 +611,7 @@ sead::Matrix34f RagdollController::getTransformWithCustomYAxis(int bone_index,
|
||||||
return out;
|
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) {
|
for (int i = 0, n = getNumConstraints(); i < n; ++i) {
|
||||||
if (name == mRagdollInstance->m_constraints[i]->getName())
|
if (name == mRagdollInstance->m_constraints[i]->getName())
|
||||||
return i;
|
return i;
|
||||||
|
@ -619,19 +619,19 @@ int RagdollController::getConstraintIndexByName(const sead::SafeString& name) co
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int RagdollController::getNumConstraints() const {
|
int RagdollInstance::getNumConstraints() const {
|
||||||
return mRagdollInstance->m_constraints.size();
|
return mRagdollInstance->m_constraints.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::enableConstraint(int index, bool enable) {
|
void RagdollInstance::enableConstraint(int index, bool enable) {
|
||||||
mDisabledConstraints.changeBit(index, !enable);
|
mDisabledConstraints.changeBit(index, !enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RagdollController::isConstraintEnabled(int index) const {
|
bool RagdollInstance::isConstraintEnabled(int index) const {
|
||||||
return mDisabledConstraints.isOffBit(index);
|
return mDisabledConstraints.isOffBit(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::setContactLayer(ContactLayer layer) {
|
void RagdollInstance::setContactLayer(ContactLayer layer) {
|
||||||
if (mContactLayer.value() == layer)
|
if (mContactLayer.value() == layer)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -645,8 +645,8 @@ void RagdollController::setContactLayer(ContactLayer layer) {
|
||||||
mContactLayer = layer;
|
mContactLayer = layer;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::setKeyframed(int bone_index, bool keyframed,
|
void RagdollInstance::setKeyframed(int bone_index, bool keyframed,
|
||||||
SyncToThisBone sync_to_this_bone) {
|
SyncToThisBone sync_to_this_bone) {
|
||||||
mKeyframedBones.changeBit(bone_index, keyframed);
|
mKeyframedBones.changeBit(bone_index, keyframed);
|
||||||
|
|
||||||
if (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));
|
mKeyframedBonesToSyncTo.changeBit(bone_index, keyframed && bool(sync_to_this_bone));
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::setUnk1(u8 value) {
|
void RagdollInstance::setUnk1(u8 value) {
|
||||||
value = sead::Mathi::clamp(value, 0, sRagdollCtrlUnk1);
|
value = sead::Mathi::clamp(value, 0, sRagdollInstanceUnk1);
|
||||||
_e9 = value;
|
_e9 = value;
|
||||||
_e8 = value;
|
_e8 = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::setMaximumUnk1(u8 value) {
|
void RagdollInstance::setMaximumUnk1(u8 value) {
|
||||||
sRagdollCtrlUnk1 = value;
|
sRagdollInstanceUnk1 = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::stopForcingKeyframing() {
|
void RagdollInstance::stopForcingKeyframing() {
|
||||||
if (mFlags.isOn(Flag::AddedToWorld)) {
|
if (mFlags.isOn(Flag::AddedToWorld)) {
|
||||||
for (int i = 0, n = mBoneRigidBodies.size(); i < n; ++i) {
|
for (int i = 0, n = mBoneRigidBodies.size(); i < n; ++i) {
|
||||||
setKeyframed(i, false, {});
|
setKeyframed(i, false, {});
|
||||||
|
@ -681,7 +681,7 @@ void RagdollController::stopForcingKeyframing() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::update() {
|
void RagdollInstance::update() {
|
||||||
if (!isAddedToWorld()) {
|
if (!isAddedToWorld()) {
|
||||||
for (int i = 0, n = getNumConstraints(); i < n; ++i) {
|
for (int i = 0, n = getNumConstraints(); i < n; ++i) {
|
||||||
auto* constraint = mRagdollInstance->m_constraints[i];
|
auto* constraint = mRagdollInstance->m_constraints[i];
|
||||||
|
@ -715,11 +715,11 @@ void RagdollController::update() {
|
||||||
updateGravityFactorOverride();
|
updateGravityFactorOverride();
|
||||||
}
|
}
|
||||||
|
|
||||||
RagdollController::Config& RagdollController::getConfig() {
|
RagdollInstance::Config& RagdollInstance::getConfig() {
|
||||||
return sRagdollCtrlConfig;
|
return sRagdollInstanceConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollController::updateGravityFactorOverride() {
|
void RagdollInstance::updateGravityFactorOverride() {
|
||||||
if (mFlags.isOff(Flag::_200))
|
if (mFlags.isOff(Flag::_200))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -732,18 +732,18 @@ void RagdollController::updateGravityFactorOverride() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RagdollController::ScopedPhysicsLock::ScopedPhysicsLock(const RagdollController* ctrl)
|
RagdollInstance::ScopedPhysicsLock::ScopedPhysicsLock(const RagdollInstance* instance)
|
||||||
: mCtrl{ctrl}, mWorldLock{ctrl->isAddedToWorld(), ContactLayerType::Entity} {
|
: mInstance{instance}, mWorldLock{instance->isAddedToWorld(), ContactLayerType::Entity} {
|
||||||
for (auto body : util::indexIter(ctrl->mBoneRigidBodies))
|
for (auto body : util::indexIter(instance->mBoneRigidBodies))
|
||||||
body.get()->lock(RigidBody::AlsoLockWorld::No);
|
body.get()->lock(RigidBody::AlsoLockWorld::No);
|
||||||
}
|
}
|
||||||
|
|
||||||
RagdollController::ScopedPhysicsLock::~ScopedPhysicsLock() {
|
RagdollInstance::ScopedPhysicsLock::~ScopedPhysicsLock() {
|
||||||
for (auto body : util::indexIter(mCtrl->mBoneRigidBodies))
|
for (auto body : util::indexIter(mInstance->mBoneRigidBodies))
|
||||||
body.get()->unlock(RigidBody::AlsoLockWorld::No);
|
body.get()->unlock(RigidBody::AlsoLockWorld::No);
|
||||||
}
|
}
|
||||||
|
|
||||||
BoneAccessor* RagdollController::getBoneAccessor() const {
|
BoneAccessor* RagdollInstance::getBoneAccessor() const {
|
||||||
if (mSkeletonMapper)
|
if (mSkeletonMapper)
|
||||||
return &mSkeletonMapper->getBoneAccessor();
|
return &mSkeletonMapper->getBoneAccessor();
|
||||||
|
|
|
@ -39,7 +39,7 @@ enum class MarkLinearVelAsDirty : bool;
|
||||||
enum class PreserveVelocities : bool;
|
enum class PreserveVelocities : bool;
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
class RagdollController : public sead::hostio::Node {
|
class RagdollInstance : public sead::hostio::Node {
|
||||||
public:
|
public:
|
||||||
enum class SyncToThisBone : bool;
|
enum class SyncToThisBone : bool;
|
||||||
|
|
||||||
|
@ -53,8 +53,8 @@ public:
|
||||||
hkpConstraintInstance::ConstraintPriority priority = hkpConstraintInstance::PRIORITY_TOI;
|
hkpConstraintInstance::ConstraintPriority priority = hkpConstraintInstance::PRIORITY_TOI;
|
||||||
};
|
};
|
||||||
|
|
||||||
explicit RagdollController(SystemGroupHandler* handler);
|
explicit RagdollInstance(SystemGroupHandler* handler);
|
||||||
virtual ~RagdollController();
|
virtual ~RagdollInstance();
|
||||||
|
|
||||||
bool init(const RagdollParam* param, sead::DirectResource* res, gsys::Model* model,
|
bool init(const RagdollParam* param, sead::DirectResource* res, gsys::Model* model,
|
||||||
sead::Heap* heap);
|
sead::Heap* heap);
|
||||||
|
@ -134,11 +134,11 @@ public:
|
||||||
private:
|
private:
|
||||||
class ScopedPhysicsLock {
|
class ScopedPhysicsLock {
|
||||||
public:
|
public:
|
||||||
explicit ScopedPhysicsLock(const RagdollController* ctrl);
|
explicit ScopedPhysicsLock(const RagdollInstance* instance);
|
||||||
~ScopedPhysicsLock();
|
~ScopedPhysicsLock();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const RagdollController* mCtrl;
|
const RagdollInstance* mInstance;
|
||||||
ScopedWorldLock mWorldLock;
|
ScopedWorldLock mWorldLock;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -150,7 +150,7 @@ private:
|
||||||
_20 = 0x20,
|
_20 = 0x20,
|
||||||
_40 = 0x40,
|
_40 = 0x40,
|
||||||
_80 = 0x80,
|
_80 = 0x80,
|
||||||
/// Whether this controller has been registered with the RagdollControllerMgr.
|
/// Whether this instance has been registered with the RagdollInstanceMgr.
|
||||||
IsRegistered = 0x100,
|
IsRegistered = 0x100,
|
||||||
_200 = 0x200,
|
_200 = 0x200,
|
||||||
};
|
};
|
||||||
|
@ -211,6 +211,6 @@ private:
|
||||||
u8 mBoneIndexForExtraRigidBody = 0;
|
u8 mBoneIndexForExtraRigidBody = 0;
|
||||||
ContactLayer mContactLayer = ContactLayer::EntityRagdoll;
|
ContactLayer mContactLayer = ContactLayer::EntityRagdoll;
|
||||||
};
|
};
|
||||||
KSYS_CHECK_SIZE_NX150(RagdollController, 0xf0);
|
KSYS_CHECK_SIZE_NX150(RagdollInstance, 0xf0);
|
||||||
|
|
||||||
} // namespace ksys::phys
|
} // namespace ksys::phys
|
|
@ -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
|
|
@ -9,23 +9,23 @@ class Heap;
|
||||||
|
|
||||||
namespace ksys::phys {
|
namespace ksys::phys {
|
||||||
|
|
||||||
class RagdollController;
|
class RagdollInstance;
|
||||||
|
|
||||||
class RagdollControllerMgr {
|
class RagdollInstanceMgr {
|
||||||
public:
|
public:
|
||||||
RagdollControllerMgr();
|
RagdollInstanceMgr();
|
||||||
virtual ~RagdollControllerMgr();
|
virtual ~RagdollInstanceMgr();
|
||||||
|
|
||||||
void init(sead::Heap* heap);
|
void init(sead::Heap* heap);
|
||||||
|
|
||||||
bool addController(RagdollController* controller);
|
bool addInstance(RagdollInstance* instance);
|
||||||
void removeController(RagdollController* controller);
|
void removeInstance(RagdollInstance* instance);
|
||||||
|
|
||||||
void calc();
|
void calc();
|
||||||
void calc1();
|
void calc1();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
util::LockFreeQueue<RagdollController> mControllers;
|
util::LockFreeQueue<RagdollInstance> mInstances;
|
||||||
sead::CriticalSection mCS;
|
sead::CriticalSection mCS;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
#include "KingSystem/Physics/Ragdoll/physRagdollRigidBody.h"
|
#include "KingSystem/Physics/Ragdoll/physRagdollRigidBody.h"
|
||||||
#include "Havok/Physics2012/Collide/Shape/Convex/Capsule/hkpCapsuleShape.h"
|
#include "Havok/Physics2012/Collide/Shape/Convex/Capsule/hkpCapsuleShape.h"
|
||||||
#include "Havok/Physics2012/Dynamics/Entity/hkpRigidBody.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"
|
#include "KingSystem/Physics/physMaterialMask.h"
|
||||||
|
|
||||||
namespace ksys::phys {
|
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)
|
int bone_index, hkpRigidBody* hkp_rigid_body, sead::Heap* heap)
|
||||||
: RigidBody(RigidBody::Type::Ragdoll, ContactLayerType::Entity, hkp_rigid_body, name, heap,
|
: RigidBody(RigidBody::Type::Ragdoll, ContactLayerType::Entity, hkp_rigid_body, name, heap,
|
||||||
true),
|
true),
|
||||||
mCtrl(ctrl), mBoneIndex(bone_index) {
|
mInstance(instance), mBoneIndex(bone_index) {
|
||||||
updateCollidableQualityType(true);
|
updateCollidableQualityType(true);
|
||||||
mFlags.set(Flag::NoCharStandingOn);
|
mFlags.set(Flag::NoCharStandingOn);
|
||||||
}
|
}
|
||||||
|
@ -20,22 +20,22 @@ RagdollRigidBody::~RagdollRigidBody() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RagdollRigidBody::init(sead::Heap* heap) {
|
void RagdollRigidBody::init(sead::Heap* heap) {
|
||||||
const int parent_index = mCtrl->getParentOfBone(mBoneIndex);
|
const int parent_index = mInstance->getParentOfBone(mBoneIndex);
|
||||||
if (parent_index >= 0)
|
if (parent_index >= 0)
|
||||||
mParentBody = mCtrl->getRigidBodies_()[parent_index];
|
mParentBody = mInstance->getRigidBodies_()[parent_index];
|
||||||
|
|
||||||
int num_children = 0;
|
int num_children = 0;
|
||||||
for (int i = 0, n = mCtrl->getRigidBodies_().size(); i < n; ++i) {
|
for (int i = 0, n = mInstance->getRigidBodies_().size(); i < n; ++i) {
|
||||||
if (mCtrl->getParentOfBone(i) == mBoneIndex)
|
if (mInstance->getParentOfBone(i) == mBoneIndex)
|
||||||
++num_children;
|
++num_children;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (num_children > 0) {
|
if (num_children > 0) {
|
||||||
mChildBodies.allocBufferAssert(num_children, heap);
|
mChildBodies.allocBufferAssert(num_children, heap);
|
||||||
int child_index = 0;
|
int child_index = 0;
|
||||||
for (int i = 0, n = mCtrl->getRigidBodies_().size(); i < n; ++i) {
|
for (int i = 0, n = mInstance->getRigidBodies_().size(); i < n; ++i) {
|
||||||
if (mCtrl->getParentOfBone(i) == mBoneIndex) {
|
if (mInstance->getParentOfBone(i) == mBoneIndex) {
|
||||||
mChildBodies[child_index] = mCtrl->getRigidBodies_()[i];
|
mChildBodies[child_index] = mInstance->getRigidBodies_()[i];
|
||||||
++child_index;
|
++child_index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,13 +5,13 @@
|
||||||
|
|
||||||
namespace ksys::phys {
|
namespace ksys::phys {
|
||||||
|
|
||||||
class RagdollController;
|
class RagdollInstance;
|
||||||
|
|
||||||
/// The rigid body for a ragdoll bone.
|
/// The rigid body for a ragdoll bone.
|
||||||
class RagdollRigidBody : public RigidBody {
|
class RagdollRigidBody : public RigidBody {
|
||||||
SEAD_RTTI_OVERRIDE(RagdollRigidBody, RigidBody)
|
SEAD_RTTI_OVERRIDE(RagdollRigidBody, RigidBody)
|
||||||
public:
|
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);
|
hkpRigidBody* hkp_rigid_body, sead::Heap* heap);
|
||||||
~RagdollRigidBody() override;
|
~RagdollRigidBody() override;
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ public:
|
||||||
private:
|
private:
|
||||||
void updateContactMask();
|
void updateContactMask();
|
||||||
|
|
||||||
RagdollController* mCtrl{};
|
RagdollInstance* mInstance{};
|
||||||
int mBoneIndex{};
|
int mBoneIndex{};
|
||||||
RagdollRigidBody* mParentBody{};
|
RagdollRigidBody* mParentBody{};
|
||||||
sead::Buffer<RagdollRigidBody*> mChildBodies{};
|
sead::Buffer<RagdollRigidBody*> mChildBodies{};
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#include "KingSystem/Physics/System/physInstanceSet.h"
|
#include "KingSystem/Physics/System/physInstanceSet.h"
|
||||||
#include "KingSystem/Physics/CharacterController/physCharacterController.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/RigidBody/physRigidBodySet.h"
|
||||||
#include "KingSystem/Physics/System/physCollisionInfo.h"
|
#include "KingSystem/Physics/System/physCollisionInfo.h"
|
||||||
#include "KingSystem/Physics/System/physContactPointInfo.h"
|
#include "KingSystem/Physics/System/physContactPointInfo.h"
|
||||||
|
@ -103,8 +103,8 @@ void InstanceSet::sub_7100FBACE0(phys::ContactLayer layer) {
|
||||||
if (sensor)
|
if (sensor)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (mRagdollController != nullptr)
|
if (mRagdollInstance != nullptr)
|
||||||
mRagdollController->disableContactLayer(layer);
|
mRagdollInstance->disableContactLayer(layer);
|
||||||
|
|
||||||
if (mCharacterController != nullptr)
|
if (mCharacterController != nullptr)
|
||||||
mCharacterController->disableContactLayer(layer);
|
mCharacterController->disableContactLayer(layer);
|
||||||
|
@ -114,8 +114,8 @@ void InstanceSet::sub_7100FBAD74() {
|
||||||
for (auto& rb : mRigidBodySets) {
|
for (auto& rb : mRigidBodySets) {
|
||||||
rb.disableAllContactLayers();
|
rb.disableAllContactLayers();
|
||||||
}
|
}
|
||||||
if (mRagdollController != nullptr) {
|
if (mRagdollInstance != nullptr) {
|
||||||
mRagdollController->setContactNone();
|
mRagdollInstance->setContactNone();
|
||||||
}
|
}
|
||||||
if (mCharacterController != nullptr) {
|
if (mCharacterController != nullptr) {
|
||||||
mCharacterController->sub_7100F60604();
|
mCharacterController->sub_7100F60604();
|
||||||
|
@ -189,10 +189,10 @@ void InstanceSet::sub_7100FBD284(const sead::Matrix34f& mtx) {
|
||||||
}
|
}
|
||||||
mFlags.reset(Flag::_80000000);
|
mFlags.reset(Flag::_80000000);
|
||||||
|
|
||||||
if (mRagdollController == nullptr)
|
if (mRagdollInstance == nullptr)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (mRagdollController->getWorldState() == RagdollController::WorldState::AddedToWorld)
|
if (mRagdollInstance->getWorldState() == RagdollInstance::WorldState::AddedToWorld)
|
||||||
sub_7100FBC890(mtx, false, false);
|
sub_7100FBC890(mtx, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ class CollisionInfo;
|
||||||
class ContactPointInfo;
|
class ContactPointInfo;
|
||||||
class NavMeshCharacter;
|
class NavMeshCharacter;
|
||||||
class ParamSet;
|
class ParamSet;
|
||||||
class RagdollController;
|
class RagdollInstance;
|
||||||
class RigidBodySet;
|
class RigidBodySet;
|
||||||
class SystemGroupHandler;
|
class SystemGroupHandler;
|
||||||
class UserTag;
|
class UserTag;
|
||||||
|
@ -102,7 +102,7 @@ private:
|
||||||
CharacterController* mCharacterController{};
|
CharacterController* mCharacterController{};
|
||||||
CharacterFormSet* mCharacterFormSet{};
|
CharacterFormSet* mCharacterFormSet{};
|
||||||
|
|
||||||
RagdollController* mRagdollController{};
|
RagdollInstance* mRagdollInstance{};
|
||||||
sead::Buffer<void*> _98;
|
sead::Buffer<void*> _98;
|
||||||
ContactPointInfo* mRagdollContactPointInfo{};
|
ContactPointInfo* mRagdollContactPointInfo{};
|
||||||
res::Handle* mRagdollResHandle{};
|
res::Handle* mRagdollResHandle{};
|
||||||
|
|
|
@ -20,7 +20,7 @@ class GroupFilter;
|
||||||
class LayerContactPointInfo;
|
class LayerContactPointInfo;
|
||||||
class MaterialTable;
|
class MaterialTable;
|
||||||
class RayCastForRequest;
|
class RayCastForRequest;
|
||||||
class RagdollControllerMgr;
|
class RagdollInstanceMgr;
|
||||||
class RigidBody;
|
class RigidBody;
|
||||||
class RigidBodyRequestMgr;
|
class RigidBodyRequestMgr;
|
||||||
class StaticCompoundMgr;
|
class StaticCompoundMgr;
|
||||||
|
@ -47,7 +47,7 @@ public:
|
||||||
ContactMgr* getContactMgr() const { return mContactMgr; }
|
ContactMgr* getContactMgr() const { return mContactMgr; }
|
||||||
StaticCompoundMgr* getStaticCompoundMgr() const { return mStaticCompoundMgr; }
|
StaticCompoundMgr* getStaticCompoundMgr() const { return mStaticCompoundMgr; }
|
||||||
RigidBodyRequestMgr* getRigidBodyRequestMgr() const { return mRigidBodyRequestMgr; }
|
RigidBodyRequestMgr* getRigidBodyRequestMgr() const { return mRigidBodyRequestMgr; }
|
||||||
RagdollControllerMgr* getRagdollControllerMgr() const { return mRagdollControllerMgr; }
|
RagdollInstanceMgr* getRagdollInstanceMgr() const { return mRagdollInstanceMgr; }
|
||||||
SystemData* getSystemData() const { return mSystemData; }
|
SystemData* getSystemData() const { return mSystemData; }
|
||||||
MaterialTable* getMaterialTable() const { return mMaterialTable; }
|
MaterialTable* getMaterialTable() const { return mMaterialTable; }
|
||||||
|
|
||||||
|
@ -151,7 +151,7 @@ private:
|
||||||
void* _150;
|
void* _150;
|
||||||
StaticCompoundMgr* mStaticCompoundMgr;
|
StaticCompoundMgr* mStaticCompoundMgr;
|
||||||
RigidBodyRequestMgr* mRigidBodyRequestMgr;
|
RigidBodyRequestMgr* mRigidBodyRequestMgr;
|
||||||
RagdollControllerMgr* mRagdollControllerMgr;
|
RagdollInstanceMgr* mRagdollInstanceMgr;
|
||||||
void* mRigidBodyDividedMeshShapeMgr;
|
void* mRigidBodyDividedMeshShapeMgr;
|
||||||
SystemData* mSystemData;
|
SystemData* mSystemData;
|
||||||
MaterialTable* mMaterialTable;
|
MaterialTable* mMaterialTable;
|
||||||
|
|
Loading…
Reference in New Issue