diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f0980d0..96c84036 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,6 +45,7 @@ add_library(lego1 SHARED LEGO1/jukeboxentity.cpp LEGO1/jukeboxstate.cpp LEGO1/legoact2state.cpp + LEGO1/legoactor.cpp LEGO1/legoactioncontrolpresenter.cpp LEGO1/legoactor.cpp LEGO1/legoanimactor.cpp diff --git a/LEGO1/islepathactor.cpp b/LEGO1/islepathactor.cpp index 72ed76d8..0024b4bc 100644 --- a/LEGO1/islepathactor.cpp +++ b/LEGO1/islepathactor.cpp @@ -1 +1,17 @@ #include "islepathactor.h" + +DECOMP_SIZE_ASSERT(IslePathActor, 0x160) + +// OFFSET: LEGO1 0x1001a200 +IslePathActor::IslePathActor() +{ + this->m_pLegoWorld = NULL; + this->m_unk13c = 6.0; + this->m_unk15c = 1.0; + this->m_unk158 = 0; +} + +// OFFSET: LEGO1 0x10002e10 +IslePathActor::~IslePathActor() +{ +} diff --git a/LEGO1/islepathactor.h b/LEGO1/islepathactor.h index fce450ac..f4574355 100644 --- a/LEGO1/islepathactor.h +++ b/LEGO1/islepathactor.h @@ -2,12 +2,17 @@ #define ISLEPATHACTOR_H #include "legopathactor.h" +#include "legoworld.h" +#include "mxtypes.h" // VTABLE 0x100d4398 -// SIZE >= 0x230 +// SIZE 0x160 class IslePathActor : public LegoPathActor { -public: +public: + IslePathActor(); + ~IslePathActor(); + // OFFSET: LEGO1 0x10002ea0 inline virtual const char *ClassName() const override // vtable+0x0c { @@ -20,6 +25,11 @@ class IslePathActor : public LegoPathActor { return !strcmp(name, IslePathActor::ClassName()) || LegoPathActor::IsA(name); } + +private: + LegoWorld* m_pLegoWorld; // 0x154 + MxFloat m_unk158; + MxFloat m_unk15c; }; #endif // ISLEPATHACTOR_H diff --git a/LEGO1/legoactor.h b/LEGO1/legoactor.h index 828f48ad..cc8778db 100644 --- a/LEGO1/legoactor.h +++ b/LEGO1/legoactor.h @@ -23,7 +23,7 @@ class LegoActor : public LegoEntity } private: - undefined unk04_[0x68]; + undefined unk68[0x10]; }; diff --git a/LEGO1/legoentity.cpp b/LEGO1/legoentity.cpp index b79bc587..b8ed69f9 100644 --- a/LEGO1/legoentity.cpp +++ b/LEGO1/legoentity.cpp @@ -1,5 +1,7 @@ #include "legoentity.h" +DECOMP_SIZE_ASSERT(LegoEntity, 0x68) + // OFFSET: LEGO1 0x1000c290 LegoEntity::~LegoEntity() { diff --git a/LEGO1/legoentity.h b/LEGO1/legoentity.h index 46aea940..fdfe997f 100644 --- a/LEGO1/legoentity.h +++ b/LEGO1/legoentity.h @@ -4,6 +4,7 @@ #include "mxentity.h" // VTABLE 0x100d4858 +// SIZE 0x68 (probably) class LegoEntity : public MxEntity { public: diff --git a/LEGO1/legopathactor.cpp b/LEGO1/legopathactor.cpp index 336cdc13..f1c39b82 100644 --- a/LEGO1/legopathactor.cpp +++ b/LEGO1/legopathactor.cpp @@ -1,5 +1,7 @@ #include "legopathactor.h" +DECOMP_SIZE_ASSERT(LegoPathActor, 0x154) + // OFFSET: LEGO1 0x1002d700 STUB LegoPathActor::LegoPathActor() { diff --git a/LEGO1/legopathactor.h b/LEGO1/legopathactor.h index e6f643c2..7e524b08 100644 --- a/LEGO1/legopathactor.h +++ b/LEGO1/legopathactor.h @@ -2,6 +2,7 @@ #define LEGOPATHACTOR_H #include "legoactor.h" +#include "mxtypes.h" // VTABLE 0x100d6e28 // SIZE 0x154 (from inlined construction at 0x1000a346) @@ -25,6 +26,10 @@ class LegoPathActor : public LegoActor return !strcmp(name, LegoPathActor::ClassName()) || LegoActor::IsA(name); } + // TODO: the types. Pizza needs this as public: + undefined unk78[0xc4]; + MxS32 m_unk13c; + undefined unk140[0x14]; }; #endif // LEGOPATHACTOR_H diff --git a/LEGO1/mxentity.cpp b/LEGO1/mxentity.cpp index 1b5ea84f..da536504 100644 --- a/LEGO1/mxentity.cpp +++ b/LEGO1/mxentity.cpp @@ -1,5 +1,7 @@ #include "mxentity.h" +DECOMP_SIZE_ASSERT(MxEntity, 0x68) + // OFFSET: LEGO1 0x1001d190 MxEntity::MxEntity() { @@ -9,4 +11,4 @@ MxEntity::MxEntity() // OFFSET: LEGO1 0x1000c110 MxEntity::~MxEntity() { -} \ No newline at end of file +} diff --git a/LEGO1/mxentity.h b/LEGO1/mxentity.h index a7e26e37..dc959c35 100644 --- a/LEGO1/mxentity.h +++ b/LEGO1/mxentity.h @@ -1,11 +1,13 @@ #ifndef MXENTITY_H #define MXENTITY_H +#include "decomp.h" #include "mxatomid.h" #include "mxcore.h" #include "mxtypes.h" // VTABLE 0x100d5390 +// SIZE 0x68 or less class MxEntity : public MxCore { public: @@ -27,6 +29,7 @@ class MxEntity : public MxCore private: MxS32 m_mxEntityId; // 0x8 MxAtomId m_atom; // 0xc + undefined m_unk10[0x58]; }; #endif // MXENTITY_H