diff --git a/LEGO1/lego/legoomni/include/act2actor.h b/LEGO1/lego/legoomni/include/act2actor.h index 7ae28781..27a5fe22 100644 --- a/LEGO1/lego/legoomni/include/act2actor.h +++ b/LEGO1/lego/legoomni/include/act2actor.h @@ -10,19 +10,34 @@ class Act2Actor : public LegoAnimActor { public: Act2Actor(); - void SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2) override; // vtable+0x24 - void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30 - MxS32 VTable0x68(Vector3&, Vector3&, Vector3&) override; // vtable+0x68 - void VTable0x70(float p_und) override; // vtable+0x70 - MxResult VTable0x94(LegoPathActor*, MxBool) override; // vtable+0x94 - MxResult VTable0x9c() override; // vtable+0x9c - MxS32 VTable0xa0() override; // vtable+0xa0 + void SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2) override; // vtable+0x24 + void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30 + MxS32 VTable0x68(Vector3& p_v1, Vector3& p_v2, Vector3& p_v3) override; // vtable+0x68 + void VTable0x70(float p_und) override; // vtable+0x70 + MxResult VTable0x94(LegoPathActor*, MxBool) override; // vtable+0x94 + MxResult VTable0x9c() override; // vtable+0x9c + MxS32 VTable0xa0() override; // vtable+0xa0 // SYNTHETIC: LEGO1 0x1001a0a0 // Act2Actor::`scalar deleting destructor' private: - undefined m_unk0x1c[0x34]; // 0x1c + undefined m_unk0x1c; // 0x1c + undefined m_unk0x1d; // 0x1d + undefined m_unk0x1e; // 0x1e + MxBool m_unk0x1f; // 0x1f + undefined4 m_unk0x20; // 0x20 + undefined4 m_unk0x24; // 0x24 + undefined4 m_unk0x28; // 0x28 + undefined4 m_unk0x2c; // 0x2c + undefined4 m_unk0x30; // 0x30 + undefined4 m_unk0x34; // 0x34 + undefined4 m_unk0x38; // 0x38 + undefined4 m_unk0x3c; // 0x3c + undefined m_unk0x40; // 0x40 + undefined4 m_unk0x44; // 0x44 + undefined m_unk0x48; // 0x48 + undefined4 m_unk0x4c; // 0x4c }; #endif // ACT2ACTOR_H diff --git a/LEGO1/lego/legoomni/src/actors/act2actor.cpp b/LEGO1/lego/legoomni/src/actors/act2actor.cpp index bc100885..c978c3ed 100644 --- a/LEGO1/lego/legoomni/src/actors/act2actor.cpp +++ b/LEGO1/lego/legoomni/src/actors/act2actor.cpp @@ -1,23 +1,49 @@ #include "act2actor.h" +#include "legocachesoundmanager.h" +#include "legosoundmanager.h" +#include "misc.h" +#include "roi/legoroi.h" + DECOMP_SIZE_ASSERT(Act2Actor, 0x1a8) // STUB: LEGO1 0x100187e0 Act2Actor::Act2Actor() { - // TODO + m_unk0x1c = 0; + m_unk0x1d = 0; + m_unk0x1f = FALSE; + m_unk0x24 = 0; + m_unk0x20 = 0; + m_unk0x1e = 0; + m_unk0x28 = 4; + m_unk0x2c = 0; + m_unk0x30 = 0; + m_unk0x34 = 0; + m_unk0x44 = 0; + m_unk0x40 = 1; + m_unk0x48 = 0; + m_unk0x4c = 0; + m_unk0x38 = 0; + m_unk0x3c = 0; } -// STUB: LEGO1 0x10018940 +// FUNCTION: LEGO1 0x10018940 void Act2Actor::SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2) { - // TODO + LegoAnimActor::SetROI(p_roi, p_bool1, p_bool2); + m_roi->SetVisibility(FALSE); } -// STUB: LEGO1 0x100189f0 +// FUNCTION: LEGO1 0x100189f0 MxResult Act2Actor::VTable0x94(LegoPathActor*, MxBool) { - // TODO + if (m_unk0x1f == FALSE) { + m_unk0x1f = TRUE; + m_unk0x20 = 0; + } + + SoundManager()->GetCacheSoundManager()->Play("hitactor", NULL, FALSE); return SUCCESS; } @@ -34,10 +60,11 @@ void Act2Actor::VTable0x70(float p_und) // TODO } -// STUB: LEGO1 0x10019280 +// FUNCTION: LEGO1 0x10019280 void Act2Actor::SetWorldSpeed(MxFloat p_worldSpeed) { - // TODO + LegoAnimActor::SetWorldSpeed(p_worldSpeed); + m_unk0x44 = 0; } // STUB: LEGO1 0x100195a0 @@ -47,9 +74,12 @@ MxS32 Act2Actor::VTable0xa0() return 0; } -// STUB: LEGO1 0x1001a180 -MxS32 Act2Actor::VTable0x68(Vector3&, Vector3&, Vector3&) +// FUNCTION: LEGO1 0x1001a180 +MxS32 Act2Actor::VTable0x68(Vector3& p_v1, Vector3& p_v2, Vector3& p_v3) { - // TODO - return 0; + if (m_unk0x1f) { + return 0; + } + + return LegoAnimActor::VTable0x68(p_v1, p_v2, p_v3); }