mirror of https://github.com/zeldaret/botw.git
Merge pull request #70 from notyourav/phys
havok stubs and ksys::phys work
This commit is contained in:
commit
c0a24e1611
|
@ -48,4 +48,7 @@ target_link_libraries(uking PRIVATE evfl)
|
|||
add_subdirectory(lib/xlink2)
|
||||
target_link_libraries(uking PRIVATE xlink2)
|
||||
|
||||
add_subdirectory(lib/hkStubs)
|
||||
target_link_libraries(uking PRIVATE hkStubs)
|
||||
|
||||
add_subdirectory(src)
|
||||
|
|
|
@ -82947,28 +82947,28 @@ Address,Quality,Size,Name
|
|||
0x0000007100f8c4e4,U,000092,
|
||||
0x0000007100f8c540,U,000008,
|
||||
0x0000007100f8c548,U,000140,
|
||||
0x0000007100f8c5d4,U,000492,
|
||||
0x0000007100f8c5d4,W,000492,_ZN4ksys4phys9RigidBodyC1EjjP12hkpRigidBodyRKN4sead14SafeStringBaseIcEEPNS4_4HeapEb
|
||||
0x0000007100f8c7c0,U,000160,
|
||||
0x0000007100f8c860,U,000160,
|
||||
0x0000007100f8c900,U,000168,
|
||||
0x0000007100f8c9a8,U,000168,
|
||||
0x0000007100f8ca50,U,000584,
|
||||
0x0000007100f8cc98,U,000172,
|
||||
0x0000007100f8cd44,U,000552,
|
||||
0x0000007100f8cd44,U,000552,phys::RigidBody::initMotion
|
||||
0x0000007100f8cf6c,U,000052,
|
||||
0x0000007100f8cfa0,U,000424,
|
||||
0x0000007100f8d148,U,000144,
|
||||
0x0000007100f8d148,O,000144,_ZN4ksys4phys9RigidBody13setMotionFlagENS1_10MotionFlagE
|
||||
0x0000007100f8d1d8,U,000032,
|
||||
0x0000007100f8d1f8,U,000012,
|
||||
0x0000007100f8d204,U,000012,
|
||||
0x0000007100f8d210,U,000012,
|
||||
0x0000007100f8d21c,U,000236,
|
||||
0x0000007100f8d1f8,O,000012,_ZNK4ksys4phys9RigidBody14sub_7100F8D1F8Ev
|
||||
0x0000007100f8d204,O,000012,_ZNK4ksys4phys9RigidBody14sub_7100F8D204Ev
|
||||
0x0000007100f8d210,O,000012,_ZNK4ksys4phys9RigidBody14sub_7100F8D210Ev
|
||||
0x0000007100f8d21c,m,000236,_ZN4ksys4phys9RigidBody14sub_7100F8D21CEv
|
||||
0x0000007100f8d308,U,000888,
|
||||
0x0000007100f8d680,U,000140,
|
||||
0x0000007100f8d70c,U,000156,
|
||||
0x0000007100f8d7a8,U,000152,
|
||||
0x0000007100f8d840,U,001156,
|
||||
0x0000007100f8dcc4,U,000056,collisionStuffMaybe::x
|
||||
0x0000007100f8dcc4,O,000056,_ZNK4ksys4phys9RigidBody13getMotionInfoEv
|
||||
0x0000007100f8dcfc,U,001044,
|
||||
0x0000007100f8e110,U,000748,
|
||||
0x0000007100f8e3fc,U,000816,
|
||||
|
@ -82976,17 +82976,17 @@ Address,Quality,Size,Name
|
|||
0x0000007100f8e7b4,U,000052,
|
||||
0x0000007100f8e7e8,U,000724,
|
||||
0x0000007100f8eabc,U,000384,
|
||||
0x0000007100f8ec3c,U,000312,
|
||||
0x0000007100f8ed74,U,000196,physicsSetVelocityAndAngularVelocityMaybe
|
||||
0x0000007100f8ec3c,U,000312,RigidBody::setLinearVelocity
|
||||
0x0000007100f8ed74,U,000196,RigidBody::setAngularVelocity
|
||||
0x0000007100f8ee38,U,000024,
|
||||
0x0000007100f8ee50,U,000048,
|
||||
0x0000007100f8ee80,U,000384,
|
||||
0x0000007100f8f000,U,000012,
|
||||
0x0000007100f8f00c,U,000080,
|
||||
0x0000007100f8f05c,U,000080,
|
||||
0x0000007100f8f0ac,U,000008,
|
||||
0x0000007100f8f0b4,U,000012,
|
||||
0x0000007100f8f0c0,U,000008,
|
||||
0x0000007100f8f0ac,O,000008,_ZN4ksys4phys9RigidBody14setContactMaskEj
|
||||
0x0000007100f8f0b4,O,000012,_ZN4ksys4phys9RigidBody13setContactAllEv
|
||||
0x0000007100f8f0c0,O,000008,_ZN4ksys4phys9RigidBody14setContactNoneEv
|
||||
0x0000007100f8f0c8,U,000176,
|
||||
0x0000007100f8f178,U,000064,
|
||||
0x0000007100f8f1b8,U,000012,
|
||||
|
@ -83257,11 +83257,11 @@ Address,Quality,Size,Name
|
|||
0x0000007100f99050,U,000008,
|
||||
0x0000007100f99058,U,000204,
|
||||
0x0000007100f99124,U,000092,
|
||||
0x0000007100f99180,U,000188,
|
||||
0x0000007100f9923c,U,000188,
|
||||
0x0000007100f992f8,U,000188,
|
||||
0x0000007100f993b4,U,000188,
|
||||
0x0000007100f99470,U,000188,
|
||||
0x0000007100f99180,O,000188,_ZN4ksys4phys16RigidBodyFactory12createSphereEPNS0_18RigidBodyParamViewEPN4sead4HeapE
|
||||
0x0000007100f9923c,O,000188,_ZN4ksys4phys16RigidBodyFactory13createCapsuleEPNS0_18RigidBodyParamViewEPN4sead4HeapE
|
||||
0x0000007100f992f8,O,000188,_ZN4ksys4phys16RigidBodyFactory14createCylinderEPNS0_18RigidBodyParamViewEPN4sead4HeapE
|
||||
0x0000007100f993b4,O,000188,_ZN4ksys4phys16RigidBodyFactory19createWaterCylinderEPNS0_18RigidBodyParamViewEPN4sead4HeapE
|
||||
0x0000007100f99470,O,000188,_ZN4ksys4phys16RigidBodyFactory9createBoxEPNS0_18RigidBodyParamViewEPN4sead4HeapE
|
||||
0x0000007100f9952c,U,000188,
|
||||
0x0000007100f995e8,U,000188,
|
||||
0x0000007100f996a4,U,000188,
|
||||
|
@ -83569,20 +83569,20 @@ Address,Quality,Size,Name
|
|||
0x0000007100fab688,U,000276,
|
||||
0x0000007100fab79c,U,000008,
|
||||
0x0000007100fab7a4,U,000184,
|
||||
0x0000007100fab85c,U,000332,
|
||||
0x0000007100fab9a8,U,000184,
|
||||
0x0000007100faba60,U,000008,
|
||||
0x0000007100faba68,U,000060,
|
||||
0x0000007100fabac4,U,000064,
|
||||
0x0000007100fabb04,U,000072,
|
||||
0x0000007100fabb4c,U,000060,
|
||||
0x0000007100fabb88,U,000192,
|
||||
0x0000007100fabc48,U,000140,
|
||||
0x0000007100fabcd4,U,000008,
|
||||
0x0000007100fabcdc,U,000008,
|
||||
0x0000007100fab85c,m,000332,_ZN4ksys4phys12CapsuleShape4initEPN4sead4HeapE
|
||||
0x0000007100fab9a8,O,000184,_ZN4ksys4phys11CapsuleBody5cloneEPN4sead4HeapE
|
||||
0x0000007100faba60,O,000008,_ZNK4ksys4phys11CapsuleBody9getRadiusEv
|
||||
0x0000007100faba68,O,000060,_ZNK4ksys4phys11CapsuleBody11getVerticesEPN4sead7Vector3IfEES5_
|
||||
0x0000007100fabac4,O,000064,_ZN4ksys4phys11CapsuleBodyD1Ev
|
||||
0x0000007100fabb04,O,000072,_ZN4ksys4phys11CapsuleBodyD0Ev
|
||||
0x0000007100fabb4c,m,000060,_ZN4ksys4phys11CapsuleBody9setRadiusEf
|
||||
0x0000007100fabb88,O,000192,_ZN4ksys4phys11CapsuleBody11setVerticesERKN4sead7Vector3IfEES6_
|
||||
0x0000007100fabc48,m,000140,_ZNK4ksys4phys11CapsuleBody9getVolumeEv
|
||||
0x0000007100fabcd4,O,000008,_ZN4ksys4phys11CapsuleBody8getShapeEv
|
||||
0x0000007100fabcdc,O,000008,_ZNK4ksys4phys11CapsuleBody8getShapeEv
|
||||
0x0000007100fabce4,U,000252,
|
||||
0x0000007100fabde0,U,000160,
|
||||
0x0000007100fabe80,U,000192,
|
||||
0x0000007100fabe80,m,000192,_ZN4ksys4phys11CapsuleBody14sub_7100FABE80EPN4sead7Vector3IfEES5_RK9hkVector4
|
||||
0x0000007100fabf40,U,000204,
|
||||
0x0000007100fac00c,U,000092,
|
||||
0x0000007100fac068,U,000008,
|
||||
|
@ -83851,13 +83851,13 @@ Address,Quality,Size,Name
|
|||
0x0000007100fb918c,U,000492,ActorPhysics::setModel
|
||||
0x0000007100fb9378,U,001456,
|
||||
0x0000007100fb9928,U,000468,
|
||||
0x0000007100fb9afc,U,000032,ActorPhysics::setFlag2
|
||||
0x0000007100fb9b1c,U,000024,ActorPhysics::clothVisibleStuff
|
||||
0x0000007100fb9b34,U,000016,
|
||||
0x0000007100fb9b44,U,000016,
|
||||
0x0000007100fb9b54,U,000088,ActorPhysics::clothVisibleStuff_0
|
||||
0x0000007100fb9bac,U,000128,
|
||||
0x0000007100fb9c2c,U,000040,
|
||||
0x0000007100fb9afc,O,000032,_ZN4ksys4phys11InstanceSet8setFlag2Ev
|
||||
0x0000007100fb9b1c,O,000024,_ZN4ksys4phys11InstanceSet17clothVisibleStuffEv
|
||||
0x0000007100fb9b34,O,000016,_ZN4ksys4phys11InstanceSet9setInDemoEv
|
||||
0x0000007100fb9b44,O,000016,_ZN4ksys4phys11InstanceSet11resetInDemoEv
|
||||
0x0000007100fb9b54,O,000088,_ZN4ksys4phys11InstanceSet19clothVisibleStuff_0Ei
|
||||
0x0000007100fb9bac,O,000128,_ZN4ksys4phys11InstanceSet14sub_7100FB9BACEPS1_
|
||||
0x0000007100fb9c2c,O,000040,_ZNK4ksys4phys11InstanceSet14sub_7100FB9C2CEv
|
||||
0x0000007100fb9c54,U,000208,ActorPhysics::calcMaybe
|
||||
0x0000007100fb9d24,U,000140,
|
||||
0x0000007100fb9db0,U,000224,
|
||||
|
@ -83870,17 +83870,17 @@ Address,Quality,Size,Name
|
|||
0x0000007100fba508,U,000096,
|
||||
0x0000007100fba568,U,000596,ActorPhysics::setMtx_x
|
||||
0x0000007100fba7bc,U,000512,
|
||||
0x0000007100fba9bc,U,000128,
|
||||
0x0000007100fba9bc,O,000128,_ZN4ksys4phys11InstanceSet14sub_7100FBA9BCEv
|
||||
0x0000007100fbaa3c,U,000140,
|
||||
0x0000007100fbaac8,U,000160,
|
||||
0x0000007100fbab68,U,000228,
|
||||
0x0000007100fbac4c,U,000148,
|
||||
0x0000007100fbace0,U,000148,
|
||||
0x0000007100fbad74,U,000104,
|
||||
0x0000007100fbace0,O,000148,_ZN4ksys4phys11InstanceSet14sub_7100FBACE0ENS0_12ContactLayerE
|
||||
0x0000007100fbad74,O,000104,_ZN4ksys4phys11InstanceSet14sub_7100FBAD74Ev
|
||||
0x0000007100fbaddc,U,000256,
|
||||
0x0000007100fbaedc,U,000060,
|
||||
0x0000007100fbaedc,O,000060,_ZNK4ksys4phys11InstanceSet14sub_7100FBAEDCEii
|
||||
0x0000007100fbaf18,U,000244,
|
||||
0x0000007100fbb00c,U,000384,
|
||||
0x0000007100fbb00c,M,000384,_ZN4ksys4phys11InstanceSet14sub_7100FBB00CEPNS0_9RigidBodyEPNS0_14RigidBodyParamE
|
||||
0x0000007100fbb18c,U,000272,
|
||||
0x0000007100fbb29c,U,000216,
|
||||
0x0000007100fbb374,U,000172,
|
||||
|
@ -83891,16 +83891,16 @@ Address,Quality,Size,Name
|
|||
0x0000007100fbb7bc,U,000348,ActorPhysics::findBodyByName_0
|
||||
0x0000007100fbb918,U,000392,
|
||||
0x0000007100fbbaa0,U,000392,ActorPhysics::findX
|
||||
0x0000007100fbbc28,U,000080,
|
||||
0x0000007100fbbc78,U,000292,
|
||||
0x0000007100fbbd9c,U,000292,
|
||||
0x0000007100fbbc28,O,000080,_ZNK4ksys4phys11InstanceSet14sub_7100FBBC28ERKN4sead14SafeStringBaseIcEE
|
||||
0x0000007100fbbc78,O,000292,_ZNK4ksys4phys11InstanceSet14sub_7100FBBC78ERKN4sead14SafeStringBaseIcEE
|
||||
0x0000007100fbbd9c,O,000292,_ZNK4ksys4phys11InstanceSet14sub_7100FBBD9CERKN4sead14SafeStringBaseIcEE
|
||||
0x0000007100fbbec0,U,000004,nullsub_4244
|
||||
0x0000007100fbbec4,U,002420,
|
||||
0x0000007100fbc838,U,000088,
|
||||
0x0000007100fbc890,U,000936,
|
||||
0x0000007100fbcc38,U,001012,
|
||||
0x0000007100fbd02c,U,000600,
|
||||
0x0000007100fbd284,U,000160,
|
||||
0x0000007100fbd284,O,000160,_ZN4ksys4phys11InstanceSet14sub_7100FBD284ERKN4sead8Matrix34IfEE
|
||||
0x0000007100fbd324,U,000108,
|
||||
0x0000007100fbd390,U,000092,
|
||||
0x0000007100fbd3ec,U,000036,
|
||||
|
@ -83911,7 +83911,7 @@ Address,Quality,Size,Name
|
|||
0x0000007100fbd94c,U,000056,
|
||||
0x0000007100fbd984,U,000132,
|
||||
0x0000007100fbda08,U,000036,
|
||||
0x0000007100fbda2c,U,000304,
|
||||
0x0000007100fbda2c,O,000304,_ZNK4ksys4phys11InstanceSet14sub_7100FBDA2CERKN4sead14SafeStringBaseIcEE
|
||||
0x0000007100fbdb5c,U,000052,
|
||||
0x0000007100fbdb90,U,000072,
|
||||
0x0000007100fbdbd8,U,000076,
|
||||
|
@ -95349,15 +95349,15 @@ Address,Quality,Size,Name
|
|||
0x00000071012ae830,U,001508,
|
||||
0x00000071012aee14,U,002304,
|
||||
0x00000071012af714,U,001036,
|
||||
0x00000071012afb20,U,000028,
|
||||
0x00000071012afb3c,U,000004,nullsub_4775
|
||||
0x00000071012afb40,U,000004,j__ZdlPv_1290
|
||||
0x00000071012afb44,U,000008,
|
||||
0x00000071012afb4c,U,000008,
|
||||
0x00000071012afb54,U,000008,
|
||||
0x00000071012afb5c,U,000020,
|
||||
0x00000071012afb70,U,000020,
|
||||
0x00000071012afb84,U,000032,
|
||||
0x00000071012afb20,O,000028,_ZN4ksys4phys14MotionAccessorC1EPNS0_9RigidBodyE
|
||||
0x00000071012afb3c,O,000004,_ZN4ksys4phys14MotionAccessorD1Ev
|
||||
0x00000071012afb40,O,000004,_ZN4ksys4phys14MotionAccessorD0Ev
|
||||
0x00000071012afb44,O,000008,_ZNK4ksys4phys14MotionAccessor13getMotionInfoEv
|
||||
0x00000071012afb4c,O,000008,_ZNK4ksys4phys14MotionAccessor9getMotionEv
|
||||
0x00000071012afb54,O,000008,_ZN4ksys4phys14MotionAccessor13setMotionFlagENS0_9RigidBody10MotionFlagE
|
||||
0x00000071012afb5c,O,000020,_ZNK4ksys4phys14MotionAccessor12hasMotionSetENS0_9RigidBody10MotionFlagE
|
||||
0x00000071012afb70,O,000020,_ZNK4ksys4phys14MotionAccessor17hasMotionDisabledENS0_9RigidBody10MotionFlagE
|
||||
0x00000071012afb84,O,000032,_ZN4ksys4phys14MotionAccessor17disableMotionFlagENS0_9RigidBody10MotionFlagE
|
||||
0x00000071012afba4,U,000112,
|
||||
0x00000071012afc14,U,000092,
|
||||
0x00000071012afc70,U,000048,HavokResource::ctor
|
||||
|
@ -102883,7 +102883,7 @@ Address,Quality,Size,Name
|
|||
0x000000710157f5c8,U,000108,
|
||||
0x000000710157f634,U,000272,
|
||||
0x000000710157f744,U,000052,
|
||||
0x000000710157f778,U,000020,
|
||||
0x000000710157f778,L,000020,hkpWorldObject::checkReadOnly
|
||||
0x000000710157f78c,U,000492,
|
||||
0x000000710157f978,U,000468,
|
||||
0x000000710157fb4c,U,000012,
|
||||
|
@ -102951,7 +102951,7 @@ Address,Quality,Size,Name
|
|||
0x00000071015821d8,U,000344,
|
||||
0x0000007101582330,U,000352,
|
||||
0x0000007101582490,U,000384,
|
||||
0x0000007101582610,U,000348,
|
||||
0x0000007101582610,L,000348,hkSweptTransformUtil::freezeMotionState
|
||||
0x000000710158276c,U,000352,
|
||||
0x00000071015828cc,U,000036,
|
||||
0x00000071015828f0,U,000148,
|
||||
|
@ -103230,7 +103230,7 @@ Address,Quality,Size,Name
|
|||
0x000000710158b814,U,000032,_ZN2nn3nex15DDLDeclarations4LoadEv
|
||||
0x000000710158b834,U,000060,
|
||||
0x000000710158b8b4,U,000064,
|
||||
0x000000710158b8f4,U,000172,
|
||||
0x000000710158b8f4,L,000172,hkRotation::set
|
||||
0x000000710158b9a0,U,000212,
|
||||
0x000000710158ba74,U,000280,
|
||||
0x000000710158bb8c,U,000608,
|
||||
|
@ -103285,7 +103285,7 @@ Address,Quality,Size,Name
|
|||
0x000000710158da68,U,000020,
|
||||
0x000000710158da7c,U,000004,nullsub_5081
|
||||
0x000000710158da80,U,000080,
|
||||
0x000000710158dad0,U,000040,
|
||||
0x000000710158dad0,L,000040,hkStringPtr::operatorEQ
|
||||
0x000000710158daf8,U,000048,
|
||||
0x000000710158db28,U,000020,
|
||||
0x000000710158db3c,U,000468,
|
||||
|
@ -103330,7 +103330,7 @@ Address,Quality,Size,Name
|
|||
0x000000710158f19c,U,000240,
|
||||
0x000000710158f28c,U,000144,
|
||||
0x000000710158f31c,U,000016,
|
||||
0x000000710158f32c,U,000228,
|
||||
0x000000710158f32c,L,000228,hkUFloat8::operatorEQ
|
||||
0x000000710158f410,U,000152,
|
||||
0x000000710158f4a8,U,000092,
|
||||
0x000000710158f504,U,001264,
|
||||
|
@ -103872,7 +103872,7 @@ Address,Quality,Size,Name
|
|||
0x00000071015bdab4,U,000608,
|
||||
0x00000071015bdd14,U,000876,
|
||||
0x00000071015be080,U,000084,
|
||||
0x00000071015be0d4,U,000008,
|
||||
0x00000071015be0d4,L,000008,hkpConvexShape::isConvex
|
||||
0x00000071015be0dc,U,000040,
|
||||
0x00000071015be104,U,000012,
|
||||
0x00000071015be110,U,000056,
|
||||
|
@ -103907,7 +103907,7 @@ Address,Quality,Size,Name
|
|||
0x00000071015bf7c8,U,001764,
|
||||
0x00000071015bfeac,U,000872,
|
||||
0x00000071015c0214,U,000792,
|
||||
0x00000071015c052c,U,000076,
|
||||
0x00000071015c052c,L,000076,hkpCapsuleShape::hkpCapsuleShape
|
||||
0x00000071015c0578,U,000060,
|
||||
0x00000071015c05b4,U,000012,
|
||||
0x00000071015c05c0,U,000024,
|
||||
|
@ -105025,7 +105025,7 @@ Address,Quality,Size,Name
|
|||
0x00000071015fbe7c,U,000096,
|
||||
0x00000071015fbedc,U,000064,
|
||||
0x00000071015fbf1c,U,000064,
|
||||
0x00000071015fbf5c,U,000056,
|
||||
0x00000071015fbf5c,L,000056,hkpFixedRigidMotion::hkpFixedRigidMotion
|
||||
0x00000071015fbf94,U,000004,nullsub_5162
|
||||
0x00000071015fbf98,U,000140,
|
||||
0x00000071015fc024,U,000004,nullsub_5163
|
||||
|
@ -105036,7 +105036,7 @@ Address,Quality,Size,Name
|
|||
0x00000071015fc098,U,000012,
|
||||
0x00000071015fc0a4,U,000176,
|
||||
0x00000071015fc154,U,000364,
|
||||
0x00000071015fc2c0,U,000364,
|
||||
0x00000071015fc2c0,L,000364,hkpPhantom::firePhantomAdded
|
||||
0x00000071015fc42c,U,000364,
|
||||
0x00000071015fc598,U,001312,
|
||||
0x00000071015fcab8,U,000156,
|
||||
|
@ -105045,16 +105045,16 @@ Address,Quality,Size,Name
|
|||
0x00000071015fcc98,U,000432,
|
||||
0x00000071015fce48,U,000088,
|
||||
0x00000071015fcea0,U,000148,
|
||||
0x00000071015fcf34,U,000188,
|
||||
0x00000071015fcf34,L,000188,hkpRigidBodyCinfo::hkpRigidBodyCinfo
|
||||
0x00000071015fcff0,U,000288,
|
||||
0x00000071015fd110,U,000360,
|
||||
0x00000071015fd278,U,000460,
|
||||
0x00000071015fd444,U,000320,
|
||||
0x00000071015fd584,U,000272,
|
||||
0x00000071015fd694,U,000280,
|
||||
0x00000071015fd7ac,U,000240,
|
||||
0x00000071015fd7ac,L,000240,hkpEntity::hkpEntity
|
||||
0x00000071015fd89c,U,000288,
|
||||
0x00000071015fd9bc,U,000276,
|
||||
0x00000071015fd9bc,L,000276,hkpEntity::setCachedShapeData
|
||||
0x00000071015fdad0,U,000916,
|
||||
0x00000071015fde64,U,000072,
|
||||
0x00000071015fdeac,U,000088,
|
||||
|
@ -105062,10 +105062,10 @@ Address,Quality,Size,Name
|
|||
0x00000071015fdfec,U,000176,
|
||||
0x00000071015fe09c,U,000144,
|
||||
0x00000071015fe12c,U,000028,
|
||||
0x00000071015fe148,U,000144,
|
||||
0x00000071015fe148,L,000144,hkpEntity::activate
|
||||
0x00000071015fe1d8,U,000040,
|
||||
0x00000071015fe200,U,000220,
|
||||
0x00000071015fe2dc,U,001056,
|
||||
0x00000071015fe2dc,L,001056,hkpEntity::deallocateInternalArrays
|
||||
0x00000071015fe6fc,U,000016,
|
||||
0x00000071015fe70c,U,000052,
|
||||
0x00000071015fe740,U,000052,
|
||||
|
@ -105083,11 +105083,11 @@ Address,Quality,Size,Name
|
|||
0x00000071016003e8,U,000364,
|
||||
0x0000007101600554,U,000088,
|
||||
0x00000071016005ac,U,001300,
|
||||
0x0000007101600ac0,U,000008,
|
||||
0x0000007101600ac8,U,001932,
|
||||
0x0000007101600ac0,L,000008,hkpWorld::queueOperation
|
||||
0x0000007101600ac8,L,001932,hkpWorld::updateCollisionFilterOnEntity
|
||||
0x0000007101601254,U,000828,
|
||||
0x0000007101601590,U,000308,
|
||||
0x00000071016016c4,U,000224,
|
||||
0x00000071016016c4,L,000224,hkpWorld::reenableCollisionBetweenEntityPair
|
||||
0x00000071016017a4,U,000464,
|
||||
0x0000007101601974,U,001748,
|
||||
0x0000007101602048,U,000276,
|
||||
|
@ -105096,9 +105096,9 @@ Address,Quality,Size,Name
|
|||
0x00000071016024c4,U,000412,
|
||||
0x0000007101602660,U,000712,
|
||||
0x0000007101602928,U,000060,
|
||||
0x0000007101602964,U,000360,
|
||||
0x0000007101602964,L,000360,hkpWorld::addPhantom
|
||||
0x0000007101602acc,U,001248,
|
||||
0x0000007101602fac,U,000416,
|
||||
0x0000007101602fac,L,000416,hkpWorld::removePhantom
|
||||
0x000000710160314c,U,000096,
|
||||
0x00000071016031ac,U,000076,
|
||||
0x00000071016031f8,U,000096,
|
||||
|
@ -105125,7 +105125,7 @@ Address,Quality,Size,Name
|
|||
0x0000007101603890,U,000004,nullsub_5166
|
||||
0x0000007101603894,U,001088,
|
||||
0x0000007101603cd4,U,000008,
|
||||
0x0000007101603cdc,U,004924,
|
||||
0x0000007101603cdc,L,004924,_ZN8hkpWorldC1Ev
|
||||
0x0000007101605018,U,000384,
|
||||
0x0000007101605198,U,000204,
|
||||
0x0000007101605264,U,000224,
|
||||
|
@ -105138,8 +105138,8 @@ Address,Quality,Size,Name
|
|||
0x0000007101605ae4,U,000232,
|
||||
0x0000007101605bcc,U,000404,
|
||||
0x0000007101605d60,U,000232,
|
||||
0x0000007101605e48,U,000012,
|
||||
0x0000007101605e54,U,000012,
|
||||
0x0000007101605e48,U,000012,hkpWorld::internal_executePendingOperations
|
||||
0x0000007101605e54,U,000012,hkpWorld::internal_executePendingBodyOperation
|
||||
0x0000007101605e60,U,000108,
|
||||
0x0000007101605ecc,U,000248,
|
||||
0x0000007101605fc4,U,000004,nullsub_5167
|
||||
|
@ -105166,11 +105166,11 @@ Address,Quality,Size,Name
|
|||
0x00000071016063e4,U,000328,
|
||||
0x000000710160652c,U,000216,
|
||||
0x0000007101606604,U,000084,
|
||||
0x0000007101606658,U,000148,
|
||||
0x0000007101606658,L,000148,hkpMotion::hkpMotion
|
||||
0x00000071016066ec,U,000144,
|
||||
0x000000710160677c,U,000036,
|
||||
0x00000071016067a0,U,000076,
|
||||
0x00000071016067ec,U,000052,
|
||||
0x00000071016067ec,L,000052,hkpMotion::getMass
|
||||
0x0000007101606820,U,000008,
|
||||
0x0000007101606828,U,000020,
|
||||
0x000000710160683c,U,000016,
|
||||
|
@ -105183,7 +105183,7 @@ Address,Quality,Size,Name
|
|||
0x00000071016068a4,U,000012,
|
||||
0x00000071016068b0,U,000024,
|
||||
0x00000071016068c8,U,000156,
|
||||
0x0000007101606964,U,000008,
|
||||
0x0000007101606964,L,000008,hkpMotion::setDeactivationClass
|
||||
0x000000710160696c,U,000136,
|
||||
0x00000071016069f4,U,000084,
|
||||
0x0000007101606a48,U,000132,
|
||||
|
@ -105210,11 +105210,11 @@ Address,Quality,Size,Name
|
|||
0x0000007101607d74,U,000092,
|
||||
0x0000007101607dd0,U,000068,
|
||||
0x0000007101607e14,U,000232,
|
||||
0x0000007101607efc,U,000344,
|
||||
0x0000007101607efc,L,000344,hkpWorldCinfo::hkpWorldCinfo
|
||||
0x0000007101608054,U,000032,
|
||||
0x0000007101608074,U,000244,
|
||||
0x0000007101608168,U,000084,
|
||||
0x00000071016081bc,U,000968,
|
||||
0x00000071016081bc,L,000968,hkpWorldOperationUtil::updateEntityBP
|
||||
0x0000007101608584,U,000452,
|
||||
0x0000007101608748,U,000432,
|
||||
0x00000071016088f8,U,000416,
|
||||
|
@ -105236,10 +105236,10 @@ Address,Quality,Size,Name
|
|||
0x000000710160af54,U,000064,
|
||||
0x000000710160af94,U,001240,
|
||||
0x000000710160b46c,U,000816,
|
||||
0x000000710160b79c,U,001552,
|
||||
0x000000710160b79c,L,001552,hkpWorldOperationUtil::setRigidBodyMotionType
|
||||
0x000000710160bdac,U,000640,
|
||||
0x000000710160c02c,U,000376,
|
||||
0x000000710160c1a4,U,001284,
|
||||
0x000000710160c1a4,L,001284,hkpWorldOperationUtil::replaceMotionObject
|
||||
0x000000710160c6a8,U,000640,
|
||||
0x000000710160c928,U,000060,
|
||||
0x000000710160c964,U,000388,
|
||||
|
@ -105285,17 +105285,17 @@ Address,Quality,Size,Name
|
|||
0x000000710160eb78,U,000180,
|
||||
0x000000710160ec2c,U,000004,nullsub_5174
|
||||
0x000000710160ec30,U,000088,
|
||||
0x000000710160ec88,U,000096,
|
||||
0x000000710160ece8,U,000044,
|
||||
0x000000710160ec88,L,000096,hkpMultiThreadedSimulation::create
|
||||
0x000000710160ece8,L,000044,hkpMultiThreadedSimulation_registerSelf
|
||||
0x000000710160ed14,U,000136,
|
||||
0x000000710160ed9c,U,001340,
|
||||
0x000000710160f2d8,U,002200,
|
||||
0x000000710160f2d8,L,002200,hkpMultiThreadedSimulation::finishMtStep
|
||||
0x000000710160fb70,U,000036,
|
||||
0x000000710160fb94,U,000012,
|
||||
0x000000710160fba0,U,000012,
|
||||
0x000000710160fbac,U,000004,nullsub_5175
|
||||
0x000000710160fbb0,U,000004,nullsub_5176
|
||||
0x000000710160fbb4,U,000520,
|
||||
0x000000710160fbb4,L,000520,hkpMultiThreadedSimulation::addToiEventWithCriticalSectionLoc
|
||||
0x000000710160fdbc,U,001088,
|
||||
0x00000071016101fc,U,000736,
|
||||
0x00000071016104dc,U,001708,
|
||||
|
@ -105313,31 +105313,31 @@ Address,Quality,Size,Name
|
|||
0x0000007101611744,U,000096,
|
||||
0x00000071016117a4,U,000280,
|
||||
0x00000071016118bc,U,000208,
|
||||
0x000000710161198c,U,000436,
|
||||
0x0000007101611b40,U,001160,
|
||||
0x0000007101611fc8,U,000172,
|
||||
0x000000710161198c,L,000436,createDynamicRigidMotion
|
||||
0x0000007101611b40,L,001160,hkpRigidBody::hkpRigidBody
|
||||
0x0000007101611fc8,L,000172,hkpRigidBody::enableDeactivation
|
||||
0x0000007101612074,U,000052,
|
||||
0x00000071016120a8,U,000020,
|
||||
0x00000071016120bc,U,000104,
|
||||
0x0000007101612124,U,000372,
|
||||
0x0000007101612298,U,000016,
|
||||
0x00000071016122a8,U,000008,
|
||||
0x00000071016122b0,U,000820,
|
||||
0x00000071016125e4,U,000128,
|
||||
0x0000007101612664,U,000664,
|
||||
0x00000071016128fc,U,000448,
|
||||
0x0000007101612298,L,000016,hkpRigidBody::isDeactivationEnabled
|
||||
0x00000071016122a8,L,000008,hkpRigidBody::getMotionState
|
||||
0x00000071016122b0,L,000820,hkpRigidBody::clone
|
||||
0x00000071016125e4,L,000128,hkpRigidBody::setMotionType
|
||||
0x0000007101612664,L,000664,hkpRigidBody::setShape
|
||||
0x00000071016128fc,L,000448,hkpRigidBody::updateShape
|
||||
0x0000007101612abc,U,000208,
|
||||
0x0000007101612b8c,U,000032,
|
||||
0x0000007101612bac,U,000272,
|
||||
0x0000007101612cbc,U,000048,
|
||||
0x0000007101612cec,U,000048,
|
||||
0x0000007101612d1c,U,000048,
|
||||
0x0000007101612b8c,L,000032,hkpRigidBody::getStoredDynamicMotion
|
||||
0x0000007101612bac,L,000272,hkpRigidBody::updateBroadphaseAndResetCollisionInformationOfWarpedBody
|
||||
0x0000007101612cbc,L,000048,hkpRigidBody::setPosition
|
||||
0x0000007101612cec,L,000048,hkpRigidBody::setPositionAndRotation
|
||||
0x0000007101612d1c,U,000048,hkpRigidBody::setTransform
|
||||
0x0000007101612d4c,U,000020,
|
||||
0x0000007101612d60,U,000020,
|
||||
0x0000007101612d74,U,000020,
|
||||
0x0000007101612d88,U,000020,
|
||||
0x0000007101612d88,L,000020,hkpRigidBody::setInertiaInvLocal
|
||||
0x0000007101612d9c,U,000076,
|
||||
0x0000007101612de8,U,000112,
|
||||
0x0000007101612de8,L,000112,hkpKeyframedRigidMotion::dtor
|
||||
0x0000007101612e58,U,000192,
|
||||
0x0000007101612f18,U,000004,nullsub_5177
|
||||
0x0000007101612f1c,U,000004,nullsub_5178
|
||||
|
@ -105490,9 +105490,9 @@ Address,Quality,Size,Name
|
|||
0x000000710161b19c,U,000508,
|
||||
0x000000710161b398,U,000508,
|
||||
0x000000710161b594,U,000508,
|
||||
0x000000710161b790,U,000508,
|
||||
0x000000710161b98c,U,000508,
|
||||
0x000000710161bb88,U,000508,
|
||||
0x000000710161b790,L,000508,hkpWorldCallbackUtil::fireEntityShapeSet
|
||||
0x000000710161b98c,L,000508,hkpWorldCallbackUtil::fireEntitySetMotionType
|
||||
0x000000710161bb88,L,000508,hkpWorldCallbackUtil::firePhantomAdded
|
||||
0x000000710161bd84,U,000508,
|
||||
0x000000710161bf80,U,000508,
|
||||
0x000000710161c17c,U,000508,
|
||||
|
@ -105513,7 +105513,7 @@ Address,Quality,Size,Name
|
|||
0x000000710161e304,U,000524,
|
||||
0x000000710161e510,U,000524,
|
||||
0x000000710161e71c,U,000524,
|
||||
0x000000710161e928,U,000508,
|
||||
0x000000710161e928,L,000508,hkpWorldCallbackUtil::fireInactiveEntityMoved
|
||||
0x000000710161eb24,U,000512,
|
||||
0x000000710161ed24,U,000512,
|
||||
0x000000710161ef24,U,000512,
|
||||
|
@ -105528,7 +105528,7 @@ Address,Quality,Size,Name
|
|||
0x000000710161fd40,U,000072,
|
||||
0x000000710161fd88,U,000252,
|
||||
0x000000710161fe84,U,000152,
|
||||
0x000000710161ff1c,U,001608,
|
||||
0x000000710161ff1c,L,001608,hkpSimulation::collideEntitiesBroadPhaseDiscrete
|
||||
0x0000007101620564,U,000996,
|
||||
0x0000007101620948,U,000148,
|
||||
0x00000071016209dc,U,000404,
|
||||
|
@ -105637,10 +105637,10 @@ Address,Quality,Size,Name
|
|||
0x0000007101624d50,U,000084,
|
||||
0x0000007101624da4,U,000032,
|
||||
0x0000007101624dc4,U,000188,
|
||||
0x0000007101624e80,U,003460,
|
||||
0x0000007101624e80,L,003460,hkpWorldOperationQueue::queueOperation
|
||||
0x0000007101625c04,U,000056,
|
||||
0x0000007101625c3c,U,000508,
|
||||
0x0000007101625e38,U,004644,
|
||||
0x0000007101625e38,L,004644,hkpWorldOperationQueue::executeAllPending
|
||||
0x000000710162705c,U,000092,
|
||||
0x00000071016270b8,U,000360,
|
||||
0x0000007101627220,U,000344,
|
||||
|
@ -105676,8 +105676,8 @@ Address,Quality,Size,Name
|
|||
0x000000710162c518,U,002492,
|
||||
0x000000710162ced4,U,000232,
|
||||
0x000000710162cfbc,U,000684,
|
||||
0x000000710162d268,U,000232,
|
||||
0x000000710162d350,U,000232,
|
||||
0x000000710162d268,L,000232,hkpEntityCallbackUtil::fireEntityShapeSet
|
||||
0x000000710162d350,L,000232,hkpEntityCallbackUtil::fireEntitySetMotionType
|
||||
0x000000710162d438,U,000232,
|
||||
0x000000710162d520,U,000356,
|
||||
0x000000710162d684,U,000356,
|
||||
|
@ -105711,7 +105711,7 @@ Address,Quality,Size,Name
|
|||
0x000000710162e998,U,000096,
|
||||
0x000000710162e9f8,U,000960,
|
||||
0x000000710162edb8,U,000872,
|
||||
0x000000710162f120,U,000268,
|
||||
0x000000710162f120,L,000268,hkpContinuousSimulation::advanceTime
|
||||
0x000000710162f22c,U,000460,
|
||||
0x000000710162f3f8,U,000920,
|
||||
0x000000710162f790,U,000492,
|
||||
|
@ -106054,9 +106054,9 @@ Address,Quality,Size,Name
|
|||
0x000000710166dccc,U,000160,
|
||||
0x000000710166dd6c,U,000160,
|
||||
0x000000710166de0c,U,000184,
|
||||
0x000000710166dec4,U,000012,
|
||||
0x000000710166ded0,U,000040,
|
||||
0x000000710166def8,U,000080,
|
||||
0x000000710166dec4,L,000012,hkpShapeDisplayBuilder::hkpShapeDisplayBuilderEnvironment::hkpShapeDisplayBuilderEnvironment
|
||||
0x000000710166ded0,L,000040,hkpShapeDisplayBuilder::hkpShapeDisplayBuilder
|
||||
0x000000710166def8,L,000080,hkpShapeDisplayBuilder::buildDisplayGeometries
|
||||
0x000000710166df48,U,002124,
|
||||
0x000000710166e794,U,000244,
|
||||
0x000000710166e888,U,001268,
|
||||
|
@ -106075,7 +106075,7 @@ Address,Quality,Size,Name
|
|||
0x00000071016718cc,U,001284,
|
||||
0x0000007101671dd0,U,001000,
|
||||
0x00000071016721b8,U,000092,
|
||||
0x0000007101672214,U,000084,
|
||||
0x0000007101672214,U,000084,hkpUserShapeDisplayBuilder::dtor
|
||||
0x0000007101672268,U,000080,
|
||||
0x00000071016722b8,U,000224,
|
||||
0x0000007101672398,U,000084,
|
||||
|
@ -106108,7 +106108,7 @@ Address,Quality,Size,Name
|
|||
0x0000007101674958,U,000084,
|
||||
0x00000071016749ac,U,000460,
|
||||
0x0000007101674b78,U,000096,
|
||||
0x0000007101674bd8,U,000124,
|
||||
0x0000007101674bd8,L,000124,hkpPhysicsContext::hkpPhysicsContext
|
||||
0x0000007101674c54,U,000376,
|
||||
0x0000007101674dcc,U,000208,
|
||||
0x0000007101674e9c,U,000008,
|
||||
|
@ -106126,9 +106126,9 @@ Address,Quality,Size,Name
|
|||
0x0000007101675104,U,000096,
|
||||
0x0000007101675164,U,000152,
|
||||
0x00000071016751fc,U,000832,
|
||||
0x000000710167553c,U,000576,
|
||||
0x000000710167553c,L,000576,hkpPhysicsContext::addForInspection
|
||||
0x000000710167577c,U,000152,
|
||||
0x0000007101675814,U,000248,
|
||||
0x0000007101675814,L,000248,hkpPhysicsContext::addWorld
|
||||
0x000000710167590c,U,000004,
|
||||
0x0000007101675910,U,000008,
|
||||
0x0000007101675918,U,000036,
|
||||
|
@ -106139,17 +106139,17 @@ Address,Quality,Size,Name
|
|||
0x00000071016759a4,U,000036,
|
||||
0x00000071016759c8,U,000016,
|
||||
0x00000071016759d8,U,000016,
|
||||
0x00000071016759e8,U,000108,
|
||||
0x00000071016759e8,L,000108,hkpPhysicsContext::constraintAddedCallback
|
||||
0x0000007101675a54,U,000108,
|
||||
0x0000007101675ac0,U,000088,
|
||||
0x0000007101675ac0,L,000088,hkpPhysicsContext::constraintRemovedCallback
|
||||
0x0000007101675b18,U,000088,
|
||||
0x0000007101675b70,U,000036,
|
||||
0x0000007101675b70,L,000036,hkpPhysicsContext::actionAddedCallback
|
||||
0x0000007101675b94,U,000036,
|
||||
0x0000007101675bb8,U,000016,
|
||||
0x0000007101675bb8,L,000016,hkpPhysicsContext::actionRemovedCallback
|
||||
0x0000007101675bc8,U,000016,
|
||||
0x0000007101675bd8,U,000144,
|
||||
0x0000007101675c68,U,000088,
|
||||
0x0000007101675cc0,U,000012,
|
||||
0x0000007101675cc0,U,000012,hkpPhysicsContext::getType
|
||||
0x0000007101675ccc,U,000012,
|
||||
0x0000007101675cd8,U,000088,
|
||||
0x0000007101675d30,U,000004,nullsub_5221
|
||||
|
@ -106221,7 +106221,7 @@ Address,Quality,Size,Name
|
|||
0x000000710167811c,U,000148,
|
||||
0x00000071016781b0,U,000516,
|
||||
0x00000071016783b4,U,000392,
|
||||
0x000000710167853c,U,000364,
|
||||
0x000000710167853c,L,000364,hkpCharacterRigidBody::hkpCharacterRigidBody
|
||||
0x00000071016786a8,U,000088,
|
||||
0x0000007101678700,U,000328,
|
||||
0x0000007101678848,U,000008,
|
||||
|
@ -106402,7 +106402,7 @@ Address,Quality,Size,Name
|
|||
0x000000710167e99c,U,000008,
|
||||
0x000000710167e9a4,U,000096,
|
||||
0x000000710167ea04,U,000212,
|
||||
0x000000710167ead8,U,000060,
|
||||
0x000000710167ead8,L,000060,hkpSweptTransformDisplayViewer::registerViewer
|
||||
0x000000710167eb14,U,000088,
|
||||
0x000000710167eb6c,U,000436,
|
||||
0x000000710167ed20,U,000088,
|
||||
|
@ -106421,7 +106421,7 @@ Address,Quality,Size,Name
|
|||
0x000000710167f1f8,U,000072,
|
||||
0x000000710167f240,U,000004,
|
||||
0x000000710167f244,U,000008,
|
||||
0x000000710167f24c,U,001620,
|
||||
0x000000710167f24c,L,001620,hkpSweptTransformDisplayViewer::entityAddedCallback
|
||||
0x000000710167f8a0,U,000008,
|
||||
0x000000710167f8a8,U,000344,
|
||||
0x000000710167fa00,U,000008,
|
||||
|
@ -107025,7 +107025,7 @@ Address,Quality,Size,Name
|
|||
0x000000710169c43c,U,000008,
|
||||
0x000000710169c444,U,000164,
|
||||
0x000000710169c4e8,U,000548,
|
||||
0x000000710169c70c,U,000624,hkSerializeUtil::savePackfile
|
||||
0x000000710169c70c,L,000624,hkSerializeUtil::savePackfile
|
||||
0x000000710169c97c,U,000588,
|
||||
0x000000710169cbc8,U,000156,
|
||||
0x000000710169cc64,U,000020,
|
||||
|
@ -107042,14 +107042,14 @@ Address,Quality,Size,Name
|
|||
0x000000710169d084,U,000044,
|
||||
0x000000710169d0b0,U,000048,
|
||||
0x000000710169d0e0,U,000184,
|
||||
0x000000710169d198,U,000428,hkNativePackfileUtils::validatePackfileHeader
|
||||
0x000000710169d198,L,000428,hkNativePackfileUtils::validatePackfileHeader
|
||||
0x000000710169d344,U,000544,
|
||||
0x000000710169d564,U,001192,hkNativePackfileUtils::loadInPlace
|
||||
0x000000710169d564,L,001192,hkNativePackfileUtils::loadInPlace
|
||||
0x000000710169da0c,U,000216,
|
||||
0x000000710169dae4,U,000032,
|
||||
0x000000710169db04,U,000044,
|
||||
0x000000710169db30,U,000172,
|
||||
0x000000710169dbdc,U,000256,hkCreateBuiltInTypeRegistry
|
||||
0x000000710169dbdc,L,000256,hkCreateBuiltInTypeRegistry
|
||||
0x000000710169dcdc,U,000084,
|
||||
0x000000710169dd30,U,000016,
|
||||
0x000000710169dd40,U,000016,
|
||||
|
@ -107332,13 +107332,13 @@ Address,Quality,Size,Name
|
|||
0x00000071016b0e70,U,004444,
|
||||
0x00000071016b1fcc,U,000968,
|
||||
0x00000071016b2394,U,000008,
|
||||
0x00000071016b239c,U,000136,
|
||||
0x00000071016b239c,L,000136,hkVisualDebugger::hkVisualDebugger
|
||||
0x00000071016b2424,U,000244,
|
||||
0x00000071016b2518,U,000944,
|
||||
0x00000071016b28c8,U,000688,
|
||||
0x00000071016b2b78,U,000500,
|
||||
0x00000071016b2d6c,U,000088,
|
||||
0x00000071016b2dc4,U,000196,
|
||||
0x00000071016b2dc4,L,000196,hkVisualDebugger::addTrackedObjects
|
||||
0x00000071016b2e88,U,000216,
|
||||
0x00000071016b2f60,U,000240,
|
||||
0x00000071016b3050,U,000152,
|
||||
|
@ -107367,7 +107367,7 @@ Address,Quality,Size,Name
|
|||
0x00000071016b3a58,U,000004,nullsub_5256
|
||||
0x00000071016b3a5c,U,000236,
|
||||
0x00000071016b3b48,U,000088,
|
||||
0x00000071016b3ba0,U,000364,
|
||||
0x00000071016b3ba0,L,000364,hkProcessFactory::registerProcess
|
||||
0x00000071016b3d0c,U,000212,
|
||||
0x00000071016b3de0,U,000152,
|
||||
0x00000071016b3e78,U,000156,
|
||||
|
|
Can't render this file because it is too large.
|
|
@ -0,0 +1,25 @@
|
|||
project(hkStubs CXX ASM)
|
||||
|
||||
add_library(hkStubs OBJECT
|
||||
Havok/Common/Base/Container/String/hkStringPtr.h
|
||||
Havok/Common/Base/Types/hkBaseTypes.h
|
||||
Havok/Common/Base/hkBase.h
|
||||
Havok/Common/Base/Math/hkMath.h
|
||||
Havok/Common/Base/Math/Vector/hkVector4.h
|
||||
Havok/Common/Base/Object/hkBaseObject.h
|
||||
Havok/Common/Base/Object/hkReferencedObject.h
|
||||
Havok/Physics/Collide/Shape/hkpShape.h
|
||||
Havok/Physics/Collide/Shape/Convex/hkpConvexShape.h
|
||||
Havok/Physics/Collide/Shape/Convex/Capsule/hkpCapsuleShape.h
|
||||
Havok/Physics/Collide/Shape/HeightField/hkpSphereRepShape.h
|
||||
Havok/Physics/Dynamics/Entity/hkpEntity.h
|
||||
Havok/Physics/Dynamics/Entity/hkpRigidBody.h
|
||||
Havok/Physics/Dynamics/World/hkpWorld.h
|
||||
Havok/Physics/Dynamics/World/hkpWorld.cpp
|
||||
Havok/Physics/Dynamics/World/hkpWorldEntity.h
|
||||
)
|
||||
|
||||
target_compile_options(hkStubs PRIVATE -fno-exceptions)
|
||||
target_compile_options(hkStubs PRIVATE -fno-strict-aliasing)
|
||||
target_compile_options(hkStubs PRIVATE -Wno-invalid-offsetof)
|
||||
target_include_directories(hkStubs PUBLIC ./)
|
|
@ -0,0 +1,11 @@
|
|||
#pragma once
|
||||
|
||||
class hkStringPtr {
|
||||
public:
|
||||
hkStringPtr();
|
||||
|
||||
hkStringPtr& operator=(const char* s);
|
||||
|
||||
private:
|
||||
const char* m_stringAndFlag;
|
||||
};
|
|
@ -0,0 +1,15 @@
|
|||
#pragma once
|
||||
|
||||
class hkVector4 {
|
||||
public:
|
||||
hkVector4() {}
|
||||
hkVector4(hkReal x, hkReal y, hkReal z, hkReal w = 0) {
|
||||
v[0] = x;
|
||||
v[1] = y;
|
||||
v[2] = z;
|
||||
v[3] = w;
|
||||
}
|
||||
m128 v;
|
||||
|
||||
void sub_7100FABE80(const hkVector4&, const hkVector4&);
|
||||
};
|
|
@ -0,0 +1,5 @@
|
|||
#pragma once
|
||||
|
||||
#include <Havok/Common/Base/Types/hkBaseTypes.h>
|
||||
|
||||
#include <Havok/Common/Base/Math/Vector/hkVector4.h>
|
|
@ -0,0 +1,8 @@
|
|||
#pragma once
|
||||
|
||||
#include <Havok/Common/Base/hkBase.h>
|
||||
|
||||
class hkBaseObject {
|
||||
public:
|
||||
virtual ~hkBaseObject() {}
|
||||
};
|
|
@ -0,0 +1,10 @@
|
|||
#pragma once
|
||||
|
||||
#include <Havok/Common/Base/Object/hkBaseObject.h>
|
||||
|
||||
class hkReferencedObject : public hkBaseObject {
|
||||
public:
|
||||
virtual ~hkReferencedObject() {}
|
||||
|
||||
virtual const void* getClassType() const;
|
||||
};
|
|
@ -0,0 +1,64 @@
|
|||
#pragma once
|
||||
|
||||
using hkFloat32 = float;
|
||||
using hkDouble64 = double;
|
||||
using hkReal = hkFloat32;
|
||||
|
||||
using hkChar = signed char;
|
||||
using hkInt8 = signed char;
|
||||
using hkInt16 = signed short;
|
||||
using hkInt32 = signed int;
|
||||
|
||||
using hkUchar = unsigned char;
|
||||
using hkUint8 = unsigned char;
|
||||
using hkUint16 = unsigned short;
|
||||
using hkUint32 = unsigned int;
|
||||
|
||||
using hkUint64 = unsigned long long;
|
||||
using m128 = __attribute((vector_size(16))) float;
|
||||
|
||||
class hkHalf {
|
||||
public:
|
||||
hkHalf() {}
|
||||
|
||||
explicit hkHalf(const float& f) {
|
||||
int t = ((const int*)&f)[0];
|
||||
m_value = hkInt16(t >> 16);
|
||||
}
|
||||
|
||||
hkHalf& operator=(const float& f) {
|
||||
int t = ((const int*)&f)[0];
|
||||
m_value = hkInt16(t >> 16);
|
||||
return *this;
|
||||
}
|
||||
|
||||
hkHalf& operator=(const hkHalf& o) {
|
||||
m_value = o.m_value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool operator==(const hkHalf& o) const { return (m_value == o.m_value); }
|
||||
|
||||
void store(float* f) const {
|
||||
hkUint32* i = (hkUint32*)f;
|
||||
i[0] = m_value << 16;
|
||||
}
|
||||
|
||||
void setZero() { m_value = 0; }
|
||||
|
||||
void setOne() { m_value = 0x3F80; }
|
||||
|
||||
operator float() const {
|
||||
union {
|
||||
int i;
|
||||
float f;
|
||||
} u;
|
||||
u.i = (m_value << 16);
|
||||
return u.f;
|
||||
}
|
||||
|
||||
hkInt16 getInt16() const { return m_value; }
|
||||
|
||||
private:
|
||||
hkInt16 m_value;
|
||||
};
|
|
@ -0,0 +1,9 @@
|
|||
#pragma once
|
||||
|
||||
#include <Havok/Common/Base/Object/hkBaseObject.h>
|
||||
#include <Havok/Common/Base/Object/hkReferencedObject.h>
|
||||
#include <Havok/Common/Base/Types/hkBaseTypes.h>
|
||||
|
||||
#include <Havok/Common/Base/Math/hkMath.h>
|
||||
|
||||
#include <Havok/Common/Base/Container/String/hkStringPtr.h>
|
|
@ -0,0 +1,10 @@
|
|||
#pragma once
|
||||
|
||||
#include <Havok/Common/Base/hkBase.h>
|
||||
#include <Havok/Physics/Collide/Shape/hkpShape.h>
|
||||
|
||||
class hkpCapsuleShape : public hkpShape {
|
||||
public:
|
||||
hkpCapsuleShape(const hkVector4& vertexA, const hkVector4& vertexB, hkReal radius);
|
||||
virtual ~hkpCapsuleShape();
|
||||
};
|
|
@ -0,0 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#include <Havok/Physics/Collide/Shape/hkpShape.h>
|
||||
|
||||
// TODO
|
||||
class hkpConvexShape {};
|
|
@ -0,0 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#include <Havok/Physics/Collide/Shape/hkpShape.h>
|
||||
|
||||
// TODO
|
||||
class hkpSphereRepShape {};
|
|
@ -0,0 +1,14 @@
|
|||
#pragma once
|
||||
|
||||
#include <Havok/Common/Base/Object/hkReferencedObject.h>
|
||||
|
||||
class hkpShape : public hkReferencedObject {
|
||||
public:
|
||||
virtual ~hkpShape();
|
||||
|
||||
virtual hkReal getMaximumProjection(const hkVector4& direction) const;
|
||||
|
||||
hkUchar filler[0x8];
|
||||
hkUint64 m_type;
|
||||
hkUchar filler2[0x30];
|
||||
};
|
|
@ -0,0 +1,25 @@
|
|||
#pragma once
|
||||
|
||||
#include <Havok/Physics/Dynamics/World/hkpWorldEntity.h>
|
||||
|
||||
class hkpMotion {
|
||||
public:
|
||||
virtual ~hkpMotion();
|
||||
hkUchar _0[0xc0];
|
||||
|
||||
/* 0xc8 */ hkHalf m_motionState__m_timeFactor;
|
||||
/* */ hkUchar _cc[0x128 - 0xcc];
|
||||
/* 0x128 */ void* _128;
|
||||
};
|
||||
|
||||
struct hkpMaxSizeMotion : hkpMotion {
|
||||
hkUchar fill[0x140 - sizeof(hkpMotion)];
|
||||
}; // 0x140
|
||||
|
||||
class hkpEntity : public hkpWorldEntity {
|
||||
public:
|
||||
virtual ~hkpEntity();
|
||||
|
||||
/* */ hkUchar _133[0x150 - 0x133];
|
||||
/* 0x150 */ hkpMaxSizeMotion m_motion;
|
||||
};
|
|
@ -0,0 +1,9 @@
|
|||
#pragma once
|
||||
|
||||
#include <Havok/Physics/Dynamics/Entity/hkpEntity.h>
|
||||
|
||||
class hkpRigidBody : public hkpEntity {
|
||||
public:
|
||||
virtual ~hkpRigidBody();
|
||||
void enableDeactivation(bool _enableDeactivation);
|
||||
};
|
|
@ -0,0 +1,3 @@
|
|||
#include "Havok/Physics/Dynamics/World/hkpWorld.h"
|
||||
|
||||
hkpWorld::hkpWorld() {}
|
|
@ -0,0 +1,5 @@
|
|||
#pragma once
|
||||
|
||||
class hkpWorld {
|
||||
hkpWorld();
|
||||
};
|
|
@ -0,0 +1,21 @@
|
|||
#pragma once
|
||||
|
||||
#include <Havok/Physics/Collide/Shape/hkpShape.h>
|
||||
|
||||
class hkpWorldEntity : public hkReferencedObject {
|
||||
public:
|
||||
virtual ~hkpWorldEntity() {}
|
||||
|
||||
void setUserData(void* data) { m_userData = data; }
|
||||
|
||||
void setName(const char* name) { m_name = name; }
|
||||
|
||||
/* */ hkUchar _8[0x18 - 0x8];
|
||||
/* 0x018 */ void* m_userData;
|
||||
/* */ hkUchar _20[0x88 - 0x20];
|
||||
/* 0x088 */ hkReal _88;
|
||||
/* */ hkUchar _8c[0xb0 - 0x8c];
|
||||
/* 0x0b0 */ hkStringPtr m_name;
|
||||
/* */ hkUchar _b8[0x132 - 0xb8];
|
||||
/* 0x132 */ hkUchar _132;
|
||||
};
|
|
@ -1,4 +1,6 @@
|
|||
target_sources(uking PRIVATE
|
||||
physInstanceSet.cpp
|
||||
physInstanceSet.h
|
||||
Cloth/physClothParam.cpp
|
||||
Cloth/physClothParam.h
|
||||
Ragdoll/physRagdollConfig.cpp
|
||||
|
@ -7,10 +9,26 @@ target_sources(uking PRIVATE
|
|||
Ragdoll/physRagdollParam.h
|
||||
RigidBody/physEdgeRigidBodyParam.cpp
|
||||
RigidBody/physEdgeRigidBodyParam.h
|
||||
RigidBody/physMotionAccessor.cpp
|
||||
RigidBody/physMotionAccessor.h
|
||||
RigidBody/physRigidBody.cpp
|
||||
RigidBody/physRigidBody.h
|
||||
RigidBody/physRigidBodyFactory.cpp
|
||||
RigidBody/physRigidBodyFactory.h
|
||||
RigidBody/physRigidBodyParam.cpp
|
||||
RigidBody/physRigidBodyParam.h
|
||||
RigidBody/physRigidBodySetParam.cpp
|
||||
RigidBody/physRigidBodySetParam.h
|
||||
RigidBody/Shape/physBoxShape.cpp
|
||||
RigidBody/Shape/physBoxShape.h
|
||||
RigidBody/Shape/physCapsuleShape.cpp
|
||||
RigidBody/Shape/physCapsuleShape.h
|
||||
RigidBody/Shape/physCylinderShape.cpp
|
||||
RigidBody/Shape/physCylinderShape.h
|
||||
RigidBody/Shape/physSphereShape.cpp
|
||||
RigidBody/Shape/physSphereShape.h
|
||||
RigidBody/Shape/physWaterCylinderShape.cpp
|
||||
RigidBody/Shape/physWaterCylinderShape.h
|
||||
SupportBone/physSupportBoneParam.cpp
|
||||
SupportBone/physSupportBoneParam.h
|
||||
SupportBone/physSupportBoneResource.cpp
|
||||
|
@ -28,6 +46,8 @@ target_sources(uking PRIVATE
|
|||
System/physDefines.h
|
||||
System/physMaterialTable.cpp
|
||||
System/physMaterialTable.h
|
||||
System/physMemSystem.cpp
|
||||
System/physMemSystem.h
|
||||
System/physParamSet.cpp
|
||||
System/physParamSet.h
|
||||
System/physRagdollControllerKeyList.h
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
#pragma once
|
||||
|
||||
#include "KingSystem/Physics/RigidBody/physRigidBody.h"
|
||||
|
||||
namespace ksys::phys {
|
||||
|
||||
class BoxView;
|
||||
|
||||
struct BoxBody {
|
||||
virtual ~BoxBody();
|
||||
|
||||
RigidBody* init(u32 flag, RigidBodyParamView* view, sead::Heap* heap);
|
||||
};
|
||||
|
||||
struct BoxShape {
|
||||
BoxBody* init(sead::Heap* heap);
|
||||
};
|
||||
|
||||
class BoxView : public RigidBodyParamView {
|
||||
SEAD_RTTI_OVERRIDE(BoxView, RigidBodyParamView)
|
||||
public:
|
||||
u8 _90;
|
||||
float _94;
|
||||
BoxShape shape;
|
||||
};
|
||||
|
||||
} // namespace ksys::phys
|
|
@ -0,0 +1,118 @@
|
|||
#include "KingSystem/Physics/RigidBody/Shape/physCapsuleShape.h"
|
||||
#include <Havok/Physics/Collide/Shape/Convex/Capsule/hkpCapsuleShape.h>
|
||||
#include <heap/seadHeap.h>
|
||||
#include <math/seadMathCalcCommon.h>
|
||||
|
||||
namespace ksys::phys {
|
||||
|
||||
CapsuleBody* CapsuleShape::init(sead::Heap* heap) {
|
||||
void* ptr = heap->tryAlloc(sizeof(hkpCapsuleShape), 0x10);
|
||||
if (ptr == nullptr)
|
||||
return nullptr;
|
||||
|
||||
auto* hk_shape =
|
||||
new (ptr) hkpCapsuleShape(hkVector4(vertex_a.x, vertex_a.y, vertex_a.z),
|
||||
hkVector4(vertex_b.x, vertex_b.y, vertex_b.z), radius);
|
||||
auto* body = new (heap) CapsuleBody(vertex_a, vertex_b, radius, _20, _28, _30, _34, hk_shape);
|
||||
if (_38) {
|
||||
body->unk.shape_type = 1 << 23;
|
||||
}
|
||||
body->unk._10 = nullptr;
|
||||
hk_shape->m_type = body->unk.shape_type;
|
||||
return body;
|
||||
}
|
||||
|
||||
CapsuleBody* CapsuleBody::clone(sead::Heap* heap) {
|
||||
CapsuleShape shape;
|
||||
|
||||
shape._20 = 0;
|
||||
shape._28 = sead::SafeString::cEmptyString.cstr();
|
||||
shape._30 = 0;
|
||||
shape._34 = 0;
|
||||
shape._38 = false;
|
||||
shape.radius = radius;
|
||||
shape.vertex_a = vertex_a;
|
||||
shape.vertex_b = vertex_b;
|
||||
|
||||
CapsuleBody* body = shape.init(heap);
|
||||
body->unk.shape_type = unk.shape_type;
|
||||
body->unk._10 = nullptr;
|
||||
if (body->shape != nullptr)
|
||||
body->shape->m_type = unk.shape_type;
|
||||
return body;
|
||||
}
|
||||
|
||||
f32 CapsuleBody::getRadius() const {
|
||||
return radius;
|
||||
}
|
||||
|
||||
void CapsuleBody::getVertices(sead::Vector3f* va, sead::Vector3f* vb) const {
|
||||
if (va != nullptr)
|
||||
*va = vertex_a;
|
||||
if (vb != nullptr)
|
||||
*vb = vertex_b;
|
||||
}
|
||||
|
||||
CapsuleBody::~CapsuleBody() {
|
||||
if (shape != nullptr) {
|
||||
::operator delete(shape);
|
||||
shape = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
bool CapsuleBody::setRadius(f32 r) {
|
||||
if (r <= 0.0f || r == radius) {
|
||||
return false;
|
||||
}
|
||||
radius = r;
|
||||
flags.set(Flag::Modified);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CapsuleBody::setVertices(const sead::Vector3f& va, const sead::Vector3f& vb) {
|
||||
if (vertex_a == va && vertex_b == vb) {
|
||||
return false;
|
||||
}
|
||||
vertex_a = va;
|
||||
vertex_b = vb;
|
||||
flags.set(Flag::Modified);
|
||||
return true;
|
||||
}
|
||||
|
||||
f32 CapsuleBody::getVolume() const {
|
||||
f32 dy = vertex_a.y - vertex_b.y;
|
||||
f32 dx = vertex_a.x - vertex_b.x;
|
||||
f32 dz = vertex_a.z - vertex_b.z;
|
||||
f32 dist = sqrtf(dx * dx + dy * dy + dz * dz);
|
||||
f32 pi_r_sq = radius * radius * sead::Mathf::pi();
|
||||
f32 c = (radius * 4.0f) / 3.0f;
|
||||
return pi_r_sq * (dist + c);
|
||||
}
|
||||
|
||||
hkpShape* CapsuleBody::getShape() {
|
||||
return shape;
|
||||
}
|
||||
|
||||
const hkpShape* CapsuleBody::getShape() const {
|
||||
return shape;
|
||||
}
|
||||
|
||||
void CapsuleBody::sub_7100FABE80(sead::Vector3f* veca, sead::Vector3f* vecb,
|
||||
const hkVector4& rb_vec) {
|
||||
if (veca != nullptr) {
|
||||
hkVector4 tmp;
|
||||
tmp.sub_7100FABE80(rb_vec, hkVector4(vertex_a.x, vertex_a.y, vertex_a.z));
|
||||
veca->x = tmp.v[0];
|
||||
veca->y = tmp.v[1];
|
||||
veca->z = tmp.v[2];
|
||||
}
|
||||
if (vecb != nullptr) {
|
||||
hkVector4 tmp;
|
||||
tmp.sub_7100FABE80(rb_vec, hkVector4(vertex_b.x, vertex_b.y, vertex_b.z));
|
||||
vecb->x = tmp.v[0];
|
||||
vecb->y = tmp.v[1];
|
||||
vecb->z = tmp.v[2];
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace ksys::phys
|
|
@ -0,0 +1,78 @@
|
|||
#pragma once
|
||||
|
||||
#include <math/seadVector.h>
|
||||
#include <prim/seadTypedBitFlag.h>
|
||||
#include <thread/seadAtomic.h>
|
||||
#include "KingSystem/Physics/RigidBody/physRigidBody.h"
|
||||
|
||||
class hkpShape;
|
||||
class hkVector4;
|
||||
|
||||
namespace ksys::phys {
|
||||
|
||||
class CapsuleView;
|
||||
struct CapsuleShape;
|
||||
|
||||
struct CapsuleBody {
|
||||
enum class Flag {
|
||||
Modified = 1 << 0,
|
||||
};
|
||||
|
||||
struct Unk {
|
||||
Unk(u32 a1, const char* a2, u32 a3, u32 a4, u32 a5);
|
||||
virtual ~Unk();
|
||||
|
||||
u32 shape_type = 0;
|
||||
const char* _10;
|
||||
};
|
||||
|
||||
CapsuleBody(const sead::Vector3f& va, const sead::Vector3f& vb, f32 r, u32 a4, const char* a5,
|
||||
u32 a6, u32 a7, hkpShape* a8)
|
||||
: vertex_a(va), vertex_b(vb), radius(r), unk(a4, a5, a6, a7, 0), shape(a8) {}
|
||||
virtual ~CapsuleBody();
|
||||
|
||||
virtual hkpShape* getShape();
|
||||
virtual const hkpShape* getShape() const;
|
||||
virtual void updateChanges();
|
||||
virtual void scaleVerts(f32 scale);
|
||||
|
||||
RigidBody* init(u32 flag, RigidBodyParamView* view, sead::Heap* heap);
|
||||
CapsuleBody* clone(sead::Heap* heap);
|
||||
f32 getRadius() const;
|
||||
void getVertices(sead::Vector3f* va, sead::Vector3f* vb) const;
|
||||
bool setRadius(f32 r);
|
||||
bool setVertices(const sead::Vector3f& va, const sead::Vector3f& vb);
|
||||
f32 getVolume() const;
|
||||
void sub_7100FABE80(sead::Vector3f* veca, sead::Vector3f* vecb, const hkVector4& rb_vec);
|
||||
|
||||
sead::Vector3f vertex_a;
|
||||
sead::TypedBitFlag<Flag, sead::Atomic<u32>> flags{};
|
||||
sead::Vector3f vertex_b;
|
||||
f32 radius;
|
||||
Unk unk;
|
||||
hkpShape* shape;
|
||||
};
|
||||
|
||||
struct CapsuleShape {
|
||||
CapsuleBody* init(sead::Heap* heap);
|
||||
|
||||
sead::Vector3f vertex_a;
|
||||
sead::Vector3f vertex_b;
|
||||
f32 radius;
|
||||
u32 _1c;
|
||||
u32 _20;
|
||||
const char* _28;
|
||||
u32 _30;
|
||||
u32 _34;
|
||||
bool _38;
|
||||
};
|
||||
|
||||
class CapsuleView : public RigidBodyParamView {
|
||||
SEAD_RTTI_OVERRIDE(CapsuleView, RigidBodyParamView)
|
||||
public:
|
||||
u8 _90;
|
||||
float _94;
|
||||
CapsuleShape shape;
|
||||
};
|
||||
|
||||
} // namespace ksys::phys
|
|
@ -0,0 +1,27 @@
|
|||
#pragma once
|
||||
|
||||
#include "KingSystem/Physics/RigidBody/physRigidBody.h"
|
||||
|
||||
namespace ksys::phys {
|
||||
|
||||
class CylinderView;
|
||||
|
||||
struct CylinderBody {
|
||||
virtual ~CylinderBody();
|
||||
|
||||
RigidBody* init(u32 flag, RigidBodyParamView* view, sead::Heap* heap);
|
||||
};
|
||||
|
||||
struct CylinderShape {
|
||||
CylinderBody* init(sead::Heap* heap);
|
||||
};
|
||||
|
||||
class CylinderView : public RigidBodyParamView {
|
||||
SEAD_RTTI_OVERRIDE(CylinderView, RigidBodyParamView)
|
||||
public:
|
||||
u8 _90;
|
||||
float _94;
|
||||
CylinderShape shape;
|
||||
};
|
||||
|
||||
} // namespace ksys::phys
|
|
@ -0,0 +1,27 @@
|
|||
#pragma once
|
||||
|
||||
#include "KingSystem/Physics/RigidBody/physRigidBody.h"
|
||||
|
||||
namespace ksys::phys {
|
||||
|
||||
class SphereView;
|
||||
|
||||
struct SphereBody {
|
||||
virtual ~SphereBody();
|
||||
|
||||
RigidBody* init(u32 flag, RigidBodyParamView* view, sead::Heap* heap);
|
||||
};
|
||||
|
||||
struct SphereShape {
|
||||
SphereBody* init(sead::Heap* heap);
|
||||
};
|
||||
|
||||
class SphereView : public RigidBodyParamView {
|
||||
SEAD_RTTI_OVERRIDE(SphereView, RigidBodyParamView)
|
||||
public:
|
||||
u8 _90;
|
||||
float _94;
|
||||
SphereShape shape;
|
||||
};
|
||||
|
||||
} // namespace ksys::phys
|
|
@ -0,0 +1,27 @@
|
|||
#pragma once
|
||||
|
||||
#include "KingSystem/Physics/RigidBody/physRigidBody.h"
|
||||
|
||||
namespace ksys::phys {
|
||||
|
||||
class WaterCylinderView;
|
||||
|
||||
struct WaterCylinderBody {
|
||||
virtual ~WaterCylinderBody();
|
||||
|
||||
RigidBody* init(u32 flag, RigidBodyParamView* view, sead::Heap* heap);
|
||||
};
|
||||
|
||||
struct WaterCylinderShape {
|
||||
WaterCylinderBody* init(sead::Heap* heap);
|
||||
};
|
||||
|
||||
class WaterCylinderView : public RigidBodyParamView {
|
||||
SEAD_RTTI_OVERRIDE(WaterCylinderView, RigidBodyParamView)
|
||||
public:
|
||||
u8 _90;
|
||||
float _94;
|
||||
WaterCylinderShape shape;
|
||||
};
|
||||
|
||||
} // namespace ksys::phys
|
|
@ -0,0 +1,34 @@
|
|||
#include "KingSystem/Physics/RigidBody/physMotionAccessor.h"
|
||||
#include "KingSystem/Physics/RigidBody/physRigidBody.h"
|
||||
|
||||
namespace ksys::phys {
|
||||
|
||||
MotionAccessor::MotionAccessor(RigidBody* body) : mBody(body) {}
|
||||
|
||||
MotionAccessor::~MotionAccessor() = default;
|
||||
|
||||
MotionType MotionAccessor::getMotionInfo() const {
|
||||
return mBody->getMotionInfo();
|
||||
}
|
||||
|
||||
hkpMotion* MotionAccessor::getMotion() const {
|
||||
return mBody->getMotion();
|
||||
}
|
||||
|
||||
void MotionAccessor::setMotionFlag(RigidBody::MotionFlag flag) {
|
||||
mBody->setMotionFlag(flag);
|
||||
}
|
||||
|
||||
bool MotionAccessor::hasMotionSet(RigidBody::MotionFlag flag) const {
|
||||
return mBody->getMotionFlags().isOn(flag);
|
||||
}
|
||||
|
||||
bool MotionAccessor::hasMotionDisabled(RigidBody::MotionFlag flag) const {
|
||||
return mBody->getMotionFlags().isOff(flag);
|
||||
}
|
||||
|
||||
void MotionAccessor::disableMotionFlag(RigidBody::MotionFlag flag) {
|
||||
mBody->resetMotionFlagDirect(flag);
|
||||
}
|
||||
|
||||
} // namespace ksys::phys
|
|
@ -0,0 +1,28 @@
|
|||
#pragma once
|
||||
|
||||
#include <basis/seadTypes.h>
|
||||
#include "KingSystem/Physics/RigidBody/physRigidBody.h"
|
||||
|
||||
class hkpMotion;
|
||||
|
||||
namespace ksys::phys {
|
||||
|
||||
class MotionAccessor {
|
||||
SEAD_RTTI_BASE(MotionAccessor)
|
||||
public:
|
||||
explicit MotionAccessor(RigidBody* body);
|
||||
virtual ~MotionAccessor();
|
||||
|
||||
MotionType getMotionInfo() const;
|
||||
hkpMotion* getMotion() const;
|
||||
void setMotionFlag(RigidBody::MotionFlag flag);
|
||||
bool hasMotionSet(RigidBody::MotionFlag flag) const;
|
||||
bool hasMotionDisabled(RigidBody::MotionFlag flag) const;
|
||||
void disableMotionFlag(RigidBody::MotionFlag flag);
|
||||
|
||||
private:
|
||||
RigidBody* mBody;
|
||||
void* _10 = nullptr;
|
||||
};
|
||||
|
||||
} // namespace ksys::phys
|
|
@ -0,0 +1,86 @@
|
|||
#include "KingSystem/Physics/RigidBody/physRigidBody.h"
|
||||
#include <Havok/Physics/Dynamics/Entity/hkpRigidBody.h>
|
||||
#include "KingSystem/Physics/System/physMemSystem.h"
|
||||
|
||||
namespace ksys::phys {
|
||||
|
||||
// NON_MATCHING
|
||||
RigidBody::RigidBody(u32 a, u32 mass_scaling, hkpRigidBody* hk_body, const sead::SafeString& name,
|
||||
sead::Heap* heap, bool a7)
|
||||
: mHkBody(hk_body), mHkBodyMgr(hk_body), _b4(a) {
|
||||
if (!name.isEmpty()) {
|
||||
hk_body->setName(name.cstr());
|
||||
}
|
||||
hk_body->setUserData(this);
|
||||
hk_body->m_motion._128 = nullptr;
|
||||
hk_body->m_motion.m_motionState__m_timeFactor.setOne();
|
||||
hk_body->enableDeactivation(true);
|
||||
hk_body->_88 = 0.1f;
|
||||
if (mFlags.isOn(Flag1::MassScaling)) {
|
||||
hk_body->_132 |= 1;
|
||||
}
|
||||
|
||||
mFlags.change(Flag1::_80, _b4 == 5);
|
||||
mFlags.change(Flag1::MassScaling, mass_scaling);
|
||||
mFlags.change(Flag1::_10, a7);
|
||||
mFlags.set(Flag1::_100);
|
||||
}
|
||||
|
||||
void RigidBody::setMotionFlag(MotionFlag flag) {
|
||||
auto lock = sead::makeScopedLock(mCS);
|
||||
|
||||
mMotionFlags.set(flag);
|
||||
|
||||
if (mFlags.isOff(Flag1::_20) && mFlags.isOff(Flag1::_2)) {
|
||||
mFlags.set(Flag1::_2);
|
||||
MemSystem::instance()->_160->sub_7100FA6C8C(mFlags.isOn(Flag1::MassScaling), this);
|
||||
}
|
||||
}
|
||||
|
||||
bool RigidBody::sub_7100F8D1F8() const {
|
||||
return mFlags.isOn(Flag1::_8);
|
||||
}
|
||||
|
||||
bool RigidBody::sub_7100F8D204() const {
|
||||
return mMotionFlags.isOn(MotionFlag::_1);
|
||||
}
|
||||
|
||||
bool RigidBody::sub_7100F8D210() const {
|
||||
return mMotionFlags.isOn(MotionFlag::_2);
|
||||
}
|
||||
|
||||
// NON_MATCHING: mFlags is loaded differently
|
||||
void RigidBody::sub_7100F8D21C() {
|
||||
auto lock = sead::makeScopedLock(mCS);
|
||||
|
||||
if (mMotionFlags.isOn(MotionFlag::_1)) {
|
||||
mMotionFlags.reset(MotionFlag::_1);
|
||||
mMotionFlags.set(MotionFlag::_2);
|
||||
} else if (mFlags.isOn(Flag1::_8)) {
|
||||
setMotionFlag(MotionFlag::_2);
|
||||
}
|
||||
}
|
||||
|
||||
MotionType RigidBody::getMotionInfo() const {
|
||||
if (mMotionFlags.isOn(MotionFlag::Dynamic))
|
||||
return MotionType::Dynamic;
|
||||
if (mMotionFlags.isOn(MotionFlag::Keyframed))
|
||||
return MotionType::Keyframed;
|
||||
if (mMotionFlags.isOn(MotionFlag::Fixed))
|
||||
return MotionType::Fixed;
|
||||
return mHkBodyMgr.getMotionInfo();
|
||||
}
|
||||
|
||||
void RigidBody::setContactMask(u32 value) {
|
||||
mContactMask.setDirect(value);
|
||||
}
|
||||
|
||||
void RigidBody::setContactAll() {
|
||||
mContactMask.makeAllOne();
|
||||
}
|
||||
|
||||
void RigidBody::setContactNone() {
|
||||
mContactMask.makeAllZero();
|
||||
}
|
||||
|
||||
} // namespace ksys::phys
|
|
@ -0,0 +1,106 @@
|
|||
#pragma once
|
||||
|
||||
#include <container/seadPtrArray.h>
|
||||
#include <heap/seadDisposer.h>
|
||||
#include <prim/seadRuntimeTypeInfo.h>
|
||||
#include <prim/seadTypedBitFlag.h>
|
||||
#include <thread/seadAtomic.h>
|
||||
#include <thread/seadCriticalSection.h>
|
||||
#include "KingSystem/Physics/RigidBody/physRigidBodyParam.h"
|
||||
#include "KingSystem/Physics/System/physDefines.h"
|
||||
#include "KingSystem/Utils/Types.h"
|
||||
|
||||
class hkpRigidBody;
|
||||
class hkpMotion;
|
||||
|
||||
namespace ksys::phys {
|
||||
|
||||
class MotionAccessor;
|
||||
|
||||
class RigidBase {
|
||||
public:
|
||||
virtual ~RigidBase();
|
||||
};
|
||||
|
||||
class RigidBody : public sead::IDisposer, public RigidBase {
|
||||
SEAD_RTTI_BASE(RigidBody)
|
||||
public:
|
||||
struct HkBodyMgr {
|
||||
explicit HkBodyMgr(hkpRigidBody* body);
|
||||
virtual ~HkBodyMgr();
|
||||
MotionType getMotionInfo() const;
|
||||
|
||||
void* p;
|
||||
};
|
||||
|
||||
enum class Flag1 {
|
||||
MassScaling = 1 << 0,
|
||||
_2 = 1 << 1,
|
||||
_4 = 1 << 2,
|
||||
_8 = 1 << 3,
|
||||
_10 = 1 << 4,
|
||||
_20 = 1 << 5,
|
||||
_40 = 1 << 6,
|
||||
_80 = 1 << 7,
|
||||
_100 = 1 << 8,
|
||||
};
|
||||
|
||||
enum class MotionFlag {
|
||||
_1 = 1 << 0,
|
||||
_2 = 1 << 1,
|
||||
Dynamic = 1 << 2,
|
||||
Keyframed = 1 << 3,
|
||||
Fixed = 1 << 4,
|
||||
_20 = 1 << 5,
|
||||
};
|
||||
|
||||
RigidBody(u32 a, u32 mass_scaling, hkpRigidBody* hk_body, const sead::SafeString& name,
|
||||
sead::Heap* heap, bool a7);
|
||||
virtual ~RigidBody();
|
||||
|
||||
void sub_7100F8CFA0();
|
||||
void setMotionFlag(MotionFlag);
|
||||
bool sub_7100F8D1F8() const;
|
||||
bool sub_7100F8D204() const;
|
||||
bool sub_7100F8D210() const;
|
||||
void sub_7100F8D21C();
|
||||
void sub_7100F8D680();
|
||||
MotionType getMotionInfo() const;
|
||||
u32 addContactLayer(ContactLayer);
|
||||
u32 removeContactLayer(ContactLayer);
|
||||
void setContactMask(u32);
|
||||
void setContactAll();
|
||||
void setContactNone();
|
||||
void setCollideGround(bool);
|
||||
void setCollideWater(bool);
|
||||
void sub_7100F8F51C();
|
||||
void sub_7100F8F8CC(ContactLayer, GroundHit, void*);
|
||||
void sub_7100F8F9E8(u32*, void*);
|
||||
void sub_7100F8FA44(ContactLayer, u32);
|
||||
hkpMotion* getMotion() const;
|
||||
|
||||
bool isMassScaling() const { return mFlags.isOn(Flag1::MassScaling); }
|
||||
const auto& getMotionFlags() const { return mMotionFlags; }
|
||||
void resetMotionFlagDirect(const MotionFlag flag) { mMotionFlags.reset(flag); }
|
||||
|
||||
private:
|
||||
sead::CriticalSection mCS;
|
||||
sead::TypedBitFlag<Flag1, sead::Atomic<u32>> mFlags{};
|
||||
sead::TypedBitFlag<MotionFlag, sead::Atomic<u32>> mMotionFlags{};
|
||||
sead::BitFlag32 mContactMask{};
|
||||
hkpRigidBody* mHkBody;
|
||||
void* mActor = nullptr;
|
||||
void* _88 = nullptr;
|
||||
void* _90 = nullptr;
|
||||
u16 _98 = 0;
|
||||
HkBodyMgr mHkBodyMgr;
|
||||
f32 _b0 = 0.0f;
|
||||
u32 _b4;
|
||||
MotionAccessor* mMotionAccessor = nullptr;
|
||||
u16 _c0 = 0;
|
||||
void* _c8 = nullptr;
|
||||
void* _d0;
|
||||
};
|
||||
KSYS_CHECK_SIZE_NX150(RigidBody, 0xD8);
|
||||
|
||||
} // namespace ksys::phys
|
|
@ -0,0 +1,56 @@
|
|||
#include "KingSystem/Physics/RigidBody/physRigidBodyFactory.h"
|
||||
|
||||
#include "KingSystem/Physics/RigidBody/Shape/physBoxShape.h"
|
||||
#include "KingSystem/Physics/RigidBody/Shape/physCapsuleShape.h"
|
||||
#include "KingSystem/Physics/RigidBody/Shape/physCylinderShape.h"
|
||||
#include "KingSystem/Physics/RigidBody/Shape/physSphereShape.h"
|
||||
#include "KingSystem/Physics/RigidBody/Shape/physWaterCylinderShape.h"
|
||||
|
||||
namespace ksys::phys {
|
||||
|
||||
RigidBody* RigidBodyFactory::createSphere(RigidBodyParamView* view, sead::Heap* heap) {
|
||||
if (view->isDynamicSensor())
|
||||
view->motion_type = MotionType::Keyframed;
|
||||
|
||||
auto* v = sead::DynamicCast<SphereView>(view);
|
||||
SphereBody* body = v->shape.init(heap);
|
||||
return body->init(1, view, heap);
|
||||
}
|
||||
|
||||
RigidBody* RigidBodyFactory::createCapsule(RigidBodyParamView* view, sead::Heap* heap) {
|
||||
if (view->isDynamicSensor())
|
||||
view->motion_type = MotionType::Keyframed;
|
||||
|
||||
auto* v = sead::DynamicCast<CapsuleView>(view);
|
||||
CapsuleBody* body = v->shape.init(heap);
|
||||
return body->init(1, view, heap);
|
||||
}
|
||||
|
||||
RigidBody* RigidBodyFactory::createCylinder(RigidBodyParamView* view, sead::Heap* heap) {
|
||||
if (view->isDynamicSensor())
|
||||
view->motion_type = MotionType::Keyframed;
|
||||
|
||||
auto* v = sead::DynamicCast<CylinderView>(view);
|
||||
CylinderBody* body = v->shape.init(heap);
|
||||
return body->init(1, view, heap);
|
||||
}
|
||||
|
||||
RigidBody* RigidBodyFactory::createWaterCylinder(RigidBodyParamView* view, sead::Heap* heap) {
|
||||
if (view->isDynamicSensor())
|
||||
view->motion_type = MotionType::Keyframed;
|
||||
|
||||
auto* v = sead::DynamicCast<WaterCylinderView>(view);
|
||||
WaterCylinderBody* body = v->shape.init(heap);
|
||||
return body->init(1, view, heap);
|
||||
}
|
||||
|
||||
RigidBody* RigidBodyFactory::createBox(RigidBodyParamView* view, sead::Heap* heap) {
|
||||
if (view->isDynamicSensor())
|
||||
view->motion_type = MotionType::Keyframed;
|
||||
|
||||
auto* v = sead::DynamicCast<BoxView>(view);
|
||||
BoxBody* body = v->shape.init(heap);
|
||||
return body->init(1, view, heap);
|
||||
}
|
||||
|
||||
} // namespace ksys::phys
|
|
@ -0,0 +1,26 @@
|
|||
#pragma once
|
||||
|
||||
#include <basis/seadTypes.h>
|
||||
|
||||
namespace sead {
|
||||
class Heap;
|
||||
} // namespace sead
|
||||
|
||||
namespace ksys::phys {
|
||||
|
||||
class RigidBody;
|
||||
struct RigidBodyParamView;
|
||||
|
||||
class RigidBodyFactory {
|
||||
public:
|
||||
static RigidBody* createSphere(RigidBodyParamView* view, sead::Heap* heap);
|
||||
static RigidBody* createCapsule(RigidBodyParamView* view, sead::Heap* heap);
|
||||
static RigidBody* createCylinder(RigidBodyParamView* view, sead::Heap* heap);
|
||||
static RigidBody* createWaterCylinder(RigidBodyParamView* view, sead::Heap* heap);
|
||||
static RigidBody* createBox(RigidBodyParamView* view, sead::Heap* heap);
|
||||
static RigidBody* createWaterBox(RigidBodyParamView* view, sead::Heap* heap);
|
||||
static RigidBody* createPolytope(RigidBodyParamView* view, sead::Heap* heap);
|
||||
static RigidBody* createCollection(RigidBodyParamView* view, sead::Heap* heap);
|
||||
};
|
||||
|
||||
} // namespace ksys::phys
|
|
@ -49,37 +49,42 @@ struct ShapeParam;
|
|||
struct RigidBodyParamView {
|
||||
SEAD_RTTI_BASE(RigidBodyParamView)
|
||||
public:
|
||||
const char* name;
|
||||
u32 _10;
|
||||
MotionType motion_type;
|
||||
float mass;
|
||||
sead::Vector3f inertia;
|
||||
sead::Vector3f center_of_mass;
|
||||
float linear_damping;
|
||||
float angular_damping;
|
||||
u8 _3c[8];
|
||||
float max_linear_velocity;
|
||||
float max_angular_velocity_rad;
|
||||
float max_impulse;
|
||||
float col_impulse_scale;
|
||||
float friction_scale;
|
||||
float restitution_scale;
|
||||
float water_buoyancy_scale;
|
||||
float water_flow_effective_rate;
|
||||
float magne_mass_scaling_factor;
|
||||
bool gap68;
|
||||
bool toi;
|
||||
bool always_character_mass_scaling;
|
||||
bool gap6B[13];
|
||||
ContactLayer contact_layer;
|
||||
GroundHit groundhit;
|
||||
u32 info_5e0;
|
||||
u32 contact_mask;
|
||||
u32 flags;
|
||||
bool ignore_normal_for_impulse;
|
||||
bool no_hit_ground;
|
||||
bool no_hit_water;
|
||||
bool no_char_standing_on;
|
||||
const char* name = "no name";
|
||||
u32 _10 = -1;
|
||||
MotionType motion_type = MotionType::Dynamic;
|
||||
float mass = 1.0f;
|
||||
sead::Vector3f inertia = sead::Vector3f::ones;
|
||||
sead::Vector3f center_of_mass = sead::Vector3f::zero;
|
||||
float linear_damping = 0.0f;
|
||||
float angular_damping = 0.05f;
|
||||
f32 _3c = 1.0f;
|
||||
f32 _40 = 1.0f;
|
||||
float max_linear_velocity = 200.0f;
|
||||
float max_angular_velocity_rad = 200.0f;
|
||||
float max_impulse = -1.0f;
|
||||
float col_impulse_scale = 1.0f;
|
||||
float friction_scale = 1.0f;
|
||||
float restitution_scale = 1.0f;
|
||||
float water_buoyancy_scale = 1.0f;
|
||||
float water_flow_effective_rate = 1.0f;
|
||||
float magne_mass_scaling_factor = 1.0f;
|
||||
bool gap68 = true;
|
||||
bool toi = false;
|
||||
bool always_character_mass_scaling = false;
|
||||
void* p = nullptr;
|
||||
ContactLayer contact_layer = ContactLayer::EntityObject;
|
||||
GroundHit groundhit = GroundHit::HitAll;
|
||||
u32 info_5e0 = 0;
|
||||
u32 contact_mask = 0;
|
||||
u32 flags = 0x80000000;
|
||||
bool ignore_normal_for_impulse = false;
|
||||
bool no_hit_ground = false;
|
||||
bool no_hit_water = false;
|
||||
bool no_char_standing_on = false;
|
||||
|
||||
bool isDynamicSensor() const {
|
||||
return isSensorLayer(contact_layer) == 1 && motion_type == MotionType::Dynamic;
|
||||
}
|
||||
};
|
||||
KSYS_CHECK_SIZE_NX150(RigidBodyParamView, 0x90);
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
namespace ksys::phys {
|
||||
|
||||
bool isSensorLayer(ContactLayer layer) {
|
||||
u32 isSensorLayer(ContactLayer layer) {
|
||||
return layer > ContactLayer::EntityEnd;
|
||||
}
|
||||
|
||||
|
|
|
@ -164,7 +164,7 @@ enum class MotionType {
|
|||
Unknown = 3,
|
||||
};
|
||||
|
||||
bool isSensorLayer(ContactLayer layer);
|
||||
u32 isSensorLayer(ContactLayer layer);
|
||||
u32 makeContactLayerMask(ContactLayer layer);
|
||||
u32 getContactLayerBase(ContactLayerType type);
|
||||
u32 getContactLayerBaseRelativeValue(ContactLayer layer);
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
#pragma once
|
||||
|
||||
#include <basis/seadTypes.h>
|
||||
#include <heap/seadDisposer.h>
|
||||
|
||||
namespace ksys::phys {
|
||||
|
||||
class RigidBody;
|
||||
|
||||
class MemSystem {
|
||||
SEAD_SINGLETON_DISPOSER(MemSystem)
|
||||
public:
|
||||
struct Struct160 {
|
||||
void sub_7100FA6C8C(bool, RigidBody*);
|
||||
};
|
||||
|
||||
u8 _20[0x140];
|
||||
Struct160* _160;
|
||||
};
|
||||
|
||||
} // namespace ksys::phys
|
|
@ -0,0 +1,211 @@
|
|||
#include "KingSystem/Physics/physInstanceSet.h"
|
||||
|
||||
namespace ksys::phys {
|
||||
|
||||
void InstanceSet::setFlag2() {
|
||||
mFlags.set(Flag::_2);
|
||||
if (_d8 != nullptr) {
|
||||
mFlags.set(Flag::_2);
|
||||
mFlags.set(Flag::DisableDraw);
|
||||
}
|
||||
}
|
||||
|
||||
void InstanceSet::clothVisibleStuff() {
|
||||
if (_d8 != nullptr) {
|
||||
mFlags.set(Flag::DisableDraw);
|
||||
}
|
||||
}
|
||||
|
||||
void InstanceSet::setInDemo() {
|
||||
mFlags.set(Flag::InDemo);
|
||||
}
|
||||
|
||||
void InstanceSet::resetInDemo() {
|
||||
mFlags.reset(Flag::InDemo);
|
||||
}
|
||||
|
||||
void InstanceSet::clothVisibleStuff_0(s32 setting) {
|
||||
if (mFlags.isOn(Flag::InDemo))
|
||||
return;
|
||||
|
||||
switch (setting) {
|
||||
case -2:
|
||||
mFlags.reset(Flag::Cloth2);
|
||||
mFlags.set(Flag::Cloth1);
|
||||
break;
|
||||
case -1:
|
||||
mFlags.reset(Flag::Cloth3);
|
||||
mFlags.reset(Flag::Cloth2);
|
||||
mFlags.reset(Flag::Cloth1);
|
||||
mFlags.set(Flag::Cloth2);
|
||||
mFlags.set(Flag::Cloth3);
|
||||
break;
|
||||
case 0:
|
||||
mFlags.reset(Flag::Cloth1);
|
||||
mFlags.reset(Flag::Cloth2);
|
||||
mFlags.set(Flag::Cloth3);
|
||||
break;
|
||||
case 1:
|
||||
mFlags.reset(Flag::Cloth1);
|
||||
mFlags.reset(Flag::Cloth2);
|
||||
mFlags.reset(Flag::Cloth3);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void InstanceSet::sub_7100FB9BAC(InstanceSet* other) {
|
||||
if (other == nullptr)
|
||||
return;
|
||||
|
||||
u32 idx = other->sub_7100FB9C2C();
|
||||
clothVisibleStuff_0(idx);
|
||||
}
|
||||
|
||||
u32 InstanceSet::sub_7100FB9C2C() const {
|
||||
u32 idx;
|
||||
if (mFlags.isOn(Flag::Cloth1)) {
|
||||
idx = -2;
|
||||
} else if (mFlags.isOn(Flag::Cloth2)) {
|
||||
idx = -1;
|
||||
} else if (mFlags.isOn(Flag::Cloth3)) {
|
||||
idx = 0;
|
||||
} else {
|
||||
idx = 1;
|
||||
}
|
||||
return idx;
|
||||
}
|
||||
|
||||
void InstanceSet::sub_7100FBA9BC() {
|
||||
for (auto& rb : mRigidBodySets) {
|
||||
rb.sub_7100FA97FC();
|
||||
}
|
||||
|
||||
for (auto& body : mList) {
|
||||
body->sub_7100F8CFA0();
|
||||
}
|
||||
|
||||
if (mCollisionController != nullptr)
|
||||
mCollisionController->sub_7100F5EC30();
|
||||
}
|
||||
|
||||
void InstanceSet::sub_7100FBACE0(phys::ContactLayer layer) {
|
||||
bool sensor = phys::isSensorLayer(layer);
|
||||
|
||||
for (auto& rb : mRigidBodySets) {
|
||||
rb.disableCollisionMaybe(layer);
|
||||
}
|
||||
if (sensor)
|
||||
return;
|
||||
|
||||
if (mRagdollController != nullptr)
|
||||
mRagdollController->sub_7101221728(layer);
|
||||
|
||||
if (mCollisionController != nullptr)
|
||||
mCollisionController->enableCollisionMaybe_0(layer);
|
||||
}
|
||||
|
||||
void InstanceSet::sub_7100FBAD74() {
|
||||
for (auto& rb : mRigidBodySets) {
|
||||
rb.disableAllContact();
|
||||
}
|
||||
if (mRagdollController != nullptr) {
|
||||
mRagdollController->sub_71012217A8();
|
||||
}
|
||||
if (mCollisionController != nullptr) {
|
||||
mCollisionController->sub_7100F60604();
|
||||
}
|
||||
}
|
||||
|
||||
void* InstanceSet::sub_7100FBAEDC(s32 idx1, s32 idx2) const {
|
||||
if (mRigidBodySets.size() <= idx1)
|
||||
return nullptr;
|
||||
return mRigidBodySets[idx1]->getRigidBody(idx2);
|
||||
}
|
||||
|
||||
// NON_MATCHING
|
||||
void InstanceSet::sub_7100FBB00C(phys::RigidBody* body, phys::RigidBodyParam* param) {
|
||||
if (body == nullptr)
|
||||
return;
|
||||
|
||||
phys::RigidBodyParamView view;
|
||||
param->getParams(&view);
|
||||
if (view.contact_layer == phys::ContactLayer::SensorCustomReceiver) {
|
||||
body->sub_7100F8F9E8(&view.flags, _188[body->isMassScaling()]);
|
||||
} else if (view.info_5e0) {
|
||||
body->sub_7100F8FA44(view.contact_layer, view.info_5e0);
|
||||
} else {
|
||||
body->sub_7100F8F8CC(view.contact_layer, view.groundhit, _188[body->isMassScaling()]);
|
||||
}
|
||||
body->setCollideGround(view.no_hit_ground == 0);
|
||||
body->setCollideWater(view.no_hit_water == 0);
|
||||
body->sub_7100F8F51C();
|
||||
}
|
||||
|
||||
void* InstanceSet::sub_7100FBBC28(const sead::SafeString& name) const {
|
||||
for (auto& rb : mRigidBodySets) {
|
||||
void* p = rb.findXByName(name);
|
||||
if (p != nullptr)
|
||||
return p;
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
s32 InstanceSet::sub_7100FBBC78(const sead::SafeString& name) const {
|
||||
s32 idx = 0;
|
||||
for (auto& info : mContactInfos) {
|
||||
if (name == info.mName)
|
||||
return idx;
|
||||
idx++;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
s32 InstanceSet::sub_7100FBBD9C(const sead::SafeString& name) const {
|
||||
s32 idx = 0;
|
||||
for (auto& info : mCollisionInfos) {
|
||||
if (name == info.mName)
|
||||
return idx;
|
||||
idx++;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void InstanceSet::sub_7100FBD284(const sead::Matrix34f& mtx) {
|
||||
if (mFlags.isOff(Flag::_1))
|
||||
return;
|
||||
|
||||
if (mFlags.isOn(Flag::_80000000)) {
|
||||
sub_7100FBC890(mtx, true, false);
|
||||
} else {
|
||||
mFlags.reset(Flag::_8);
|
||||
if (mFlags.isOn(Flag::_2))
|
||||
setMtxAndScale(mtx, false, false, mScale);
|
||||
}
|
||||
mFlags.reset(Flag::_80000000);
|
||||
|
||||
if (mRagdollController == nullptr)
|
||||
return;
|
||||
|
||||
if (mRagdollController->sub_7101221CC4() == 0)
|
||||
sub_7100FBC890(mtx, false, false);
|
||||
}
|
||||
|
||||
s32 InstanceSet::sub_7100FBDA2C(const sead::SafeString& name) const {
|
||||
if (mRagdollBlendWt == nullptr)
|
||||
return -1;
|
||||
|
||||
s32 idx = mRagdollBlendWt->findStateIdx(name);
|
||||
if (idx >= 0)
|
||||
return idx + 2;
|
||||
|
||||
if (name == "full_dynamic") {
|
||||
return 1;
|
||||
}
|
||||
if (name == "full_key_framed") {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
} // namespace ksys::phys
|
|
@ -0,0 +1,124 @@
|
|||
#pragma once
|
||||
|
||||
#include <container/seadListImpl.h>
|
||||
#include <container/seadPtrArray.h>
|
||||
#include <hostio/seadHostIONode.h>
|
||||
#include "KingSystem/ActorSystem/actActor.h"
|
||||
#include "KingSystem/Physics/RigidBody/physRigidBody.h"
|
||||
#include "KingSystem/Physics/RigidBody/physRigidBodyParam.h"
|
||||
|
||||
namespace ksys::res {
|
||||
|
||||
class RagdollBlendWeight {
|
||||
public:
|
||||
s32 findStateIdx(const sead::SafeString& name) const;
|
||||
};
|
||||
|
||||
} // namespace ksys::res
|
||||
|
||||
namespace ksys::phys {
|
||||
|
||||
class Ragdoll {};
|
||||
|
||||
class RagdollController {
|
||||
public:
|
||||
u32 sub_7101221CC4();
|
||||
void sub_7101221728(ContactLayer);
|
||||
void sub_71012217A8();
|
||||
};
|
||||
|
||||
class CollisionController {
|
||||
public:
|
||||
void sub_7100F5EC30();
|
||||
void sub_7100F60604();
|
||||
void enableCollisionMaybe_0(ContactLayer);
|
||||
};
|
||||
|
||||
struct CollisionInfo {
|
||||
u8 filler[0x50];
|
||||
sead::SafeString mName;
|
||||
};
|
||||
|
||||
struct ContactInfo {
|
||||
u8 filler[0x8];
|
||||
sead::SafeString mName;
|
||||
};
|
||||
|
||||
class RigidBodySet {
|
||||
public:
|
||||
void disableAllContact();
|
||||
void sub_7100FA97FC();
|
||||
void disableCollisionMaybe(ContactLayer);
|
||||
void* findXByName(const sead::SafeString& name) const;
|
||||
|
||||
RigidBody* getRigidBody() const { return mBodies[0]; }
|
||||
RigidBody* getRigidBody(s32 idx) const { return mBodies[idx]; }
|
||||
|
||||
private:
|
||||
u8 _0[0x18];
|
||||
sead::PtrArray<RigidBody> mBodies;
|
||||
};
|
||||
|
||||
class InstanceSet : public sead::hostio::Node {
|
||||
public:
|
||||
enum class Flag : u32 {
|
||||
_1 = 1 << 0,
|
||||
_2 = 1 << 1,
|
||||
_8 = 1 << 3,
|
||||
DisableDraw = 1 << 2,
|
||||
_200000 = 1 << 21,
|
||||
Cloth1 = 1 << 22,
|
||||
Cloth2 = 1 << 23,
|
||||
Cloth3 = 1 << 24,
|
||||
InDemo = 1 << 25,
|
||||
_80000000 = 1u << 31,
|
||||
};
|
||||
|
||||
void setFlag2();
|
||||
void clothVisibleStuff();
|
||||
void setInDemo();
|
||||
void resetInDemo();
|
||||
void clothVisibleStuff_0(s32 setting);
|
||||
void sub_7100FB9BAC(InstanceSet* other);
|
||||
u32 sub_7100FB9C2C() const;
|
||||
void sub_7100FBA9BC();
|
||||
void sub_7100FBACE0(ContactLayer layer);
|
||||
void sub_7100FBAD74();
|
||||
void* sub_7100FBAEDC(s32 rigidbody_idx, s32 ragdoll_idx) const;
|
||||
void sub_7100FBB00C(RigidBody* body, RigidBodyParam* param);
|
||||
void setMtxAndScale(const sead::Matrix34f& mtx, bool a2, bool a3, f32 scale);
|
||||
void sub_7100FBB4B4();
|
||||
void* findX(const sead::SafeString& a1, const sead::SafeString& a2) const;
|
||||
void* sub_7100FBBC28(const sead::SafeString& name) const;
|
||||
s32 sub_7100FBBC78(const sead::SafeString& name) const;
|
||||
s32 sub_7100FBBD9C(const sead::SafeString& name) const;
|
||||
void sub_7100FBD284(const sead::Matrix34f& mtx);
|
||||
void sub_7100FBC890(const sead::Matrix34f& mtx, bool a2, bool a3);
|
||||
s32 sub_7100FBDA2C(const sead::SafeString& name) const;
|
||||
|
||||
private:
|
||||
u8 _8[0x18];
|
||||
sead::TypedBitFlag<Flag> mFlags;
|
||||
void* _28;
|
||||
f32 mScale;
|
||||
u8 _34[0x40 - 0x34];
|
||||
sead::PtrArray<RigidBodySet> mRigidBodySets;
|
||||
sead::PtrArray<CollisionInfo> mCollisionInfos;
|
||||
sead::PtrArray<ContactInfo> mContactInfos;
|
||||
|
||||
u8 _70[0x10];
|
||||
CollisionController* mCollisionController;
|
||||
u8 _88[8];
|
||||
RagdollController* mRagdollController;
|
||||
u8 _98[0xb8 - 0x98];
|
||||
res::RagdollBlendWeight* mRagdollBlendWt;
|
||||
u8 _c0[0xd8 - 0xc0];
|
||||
void* _d8;
|
||||
u8 _e0[0x148 - 0xe0];
|
||||
sead::TList<RigidBody*> mList;
|
||||
u8 _160[0x188 - 0x160];
|
||||
void* _188[2];
|
||||
};
|
||||
KSYS_CHECK_SIZE_NX150(InstanceSet, 0x198);
|
||||
|
||||
} // namespace ksys::phys
|
Loading…
Reference in New Issue