mirror of https://github.com/zeldaret/botw.git
ksys/phys: Fix RigidBody ctor matching issues
This commit is contained in:
parent
15741ce3ae
commit
d7a6dbcf8a
|
@ -82947,7 +82947,7 @@ Address,Quality,Size,Name
|
|||
0x0000007100f8c4e4,U,000092,
|
||||
0x0000007100f8c540,U,000008,
|
||||
0x0000007100f8c548,U,000140,
|
||||
0x0000007100f8c5d4,W,000492,_ZN4ksys4phys9RigidBodyC1EjjP12hkpRigidBodyRKN4sead14SafeStringBaseIcEEPNS4_4HeapEb
|
||||
0x0000007100f8c5d4,O,000492,_ZN4ksys4phys9RigidBodyC1EjjP12hkpRigidBodyRKN4sead14SafeStringBaseIcEEPNS4_4HeapEb
|
||||
0x0000007100f8c7c0,U,000160,
|
||||
0x0000007100f8c860,U,000160,
|
||||
0x0000007100f8c900,U,000168,
|
||||
|
|
Can't render this file because it is too large.
|
|
@ -7,21 +7,21 @@ 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) {
|
||||
: mCS(heap), mHkBody(hk_body), mHkBodyMgr(hk_body), _b4(a) {
|
||||
if (!name.isEmpty()) {
|
||||
hk_body->setName(name.cstr());
|
||||
mHkBody->setName(name.cstr());
|
||||
}
|
||||
hk_body->setUserData(reinterpret_cast<hkUlong>(this));
|
||||
hk_body->m_motion.m_savedMotion = nullptr;
|
||||
hk_body->m_motion.m_motionState.m_timeFactor.setOne();
|
||||
hk_body->enableDeactivation(true);
|
||||
hk_body->getCollidableRw()->m_allowedPenetrationDepth = 0.1f;
|
||||
if (mFlags.isOn(Flag1::MassScaling)) {
|
||||
hk_body->m_responseModifierFlags |= 1;
|
||||
mHkBody->setUserData(reinterpret_cast<hkUlong>(this));
|
||||
mHkBody->m_motion.m_savedMotion = nullptr;
|
||||
mHkBody->m_motion.m_motionState.m_timeFactor.setOne();
|
||||
mHkBody->enableDeactivation(true);
|
||||
mHkBody->getCollidableRw()->m_allowedPenetrationDepth = 0.1f;
|
||||
if (mFlags.isOff(Flag1::MassScaling)) {
|
||||
mHkBody->m_responseModifierFlags |= 1;
|
||||
}
|
||||
|
||||
mFlags.change(Flag1::_80, _b4 == 5);
|
||||
mFlags.change(Flag1::MassScaling, mass_scaling);
|
||||
mFlags.change(Flag1::MassScaling, mass_scaling == 1);
|
||||
mFlags.change(Flag1::_10, a7);
|
||||
mFlags.set(Flag1::_100);
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ class MotionAccessor;
|
|||
|
||||
class RigidBase {
|
||||
public:
|
||||
virtual ~RigidBase();
|
||||
virtual ~RigidBase() = 0;
|
||||
};
|
||||
|
||||
class RigidBody : public sead::IDisposer, public RigidBase {
|
||||
|
@ -56,7 +56,21 @@ public:
|
|||
|
||||
RigidBody(u32 a, u32 mass_scaling, hkpRigidBody* hk_body, const sead::SafeString& name,
|
||||
sead::Heap* heap, bool a7);
|
||||
virtual ~RigidBody();
|
||||
~RigidBody() override;
|
||||
|
||||
// FIXME: types and names
|
||||
virtual void m4();
|
||||
virtual void m5();
|
||||
virtual void m6();
|
||||
virtual void m7();
|
||||
virtual void m8();
|
||||
// FIXME: should be pure
|
||||
virtual void m9();
|
||||
virtual void m10();
|
||||
virtual void m11();
|
||||
virtual void m12();
|
||||
virtual void m13();
|
||||
virtual void m14();
|
||||
|
||||
void sub_7100F8CFA0();
|
||||
void setMotionFlag(MotionFlag);
|
||||
|
@ -94,10 +108,11 @@ private:
|
|||
void* _90 = nullptr;
|
||||
u16 _98 = 0;
|
||||
HkBodyMgr mHkBodyMgr;
|
||||
f32 _b0 = 0.0f;
|
||||
u32 _b4;
|
||||
f32 _b0 = 1.0f;
|
||||
u32 _b4 = 0;
|
||||
MotionAccessor* mMotionAccessor = nullptr;
|
||||
u16 _c0 = 0;
|
||||
u16 _c2 = 0;
|
||||
void* _c8 = nullptr;
|
||||
};
|
||||
KSYS_CHECK_SIZE_NX150(RigidBody, 0xD0);
|
||||
|
|
Loading…
Reference in New Issue