Implement/match LegoAnimationManager::Init (#858)

This commit is contained in:
Christian Semmler 2024-04-27 09:07:28 -04:00 committed by GitHub
parent 00f5eff792
commit 86203f1704
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 70 additions and 8 deletions

View file

@ -38,7 +38,9 @@ struct Vehicle {
struct Unknown0x3c {
LegoROI* m_roi; // 0x00
MxU32 m_id; // 0x04
undefined m_unk0x08[0x10]; // 0x08
undefined m_unk0x08[0x08]; // 0x08
float m_unk0x10; // 0x10
undefined m_unk0x14; // 0x14
};
// VTABLE: LEGO1 0x100d8c18
@ -87,7 +89,7 @@ class LegoAnimationManager : public MxCore {
undefined p_param9
);
void FUN_10061010(undefined4);
void FUN_100617c0(MxS32, MxU16&, MxU32&);
void FUN_100617c0(MxS32, MxU16&, MxU16&);
LegoTranInfo* GetTranInfo(MxU32 p_index);
MxS8 FUN_10062360(char*);
void FUN_10062770();
@ -123,9 +125,10 @@ class LegoAnimationManager : public MxCore {
MxU32 m_scriptIndex; // 0x08
MxU16 m_animCount; // 0x0c
MxU16 m_unk0x0e; // 0x0e
MxU32 m_unk0x10; // 0x10
MxU16 m_unk0x10; // 0x10
AnimInfo* m_anims; // 0x14
undefined m_unk0x18[4]; // 0x18
undefined2 m_unk0x18; // 0x18
undefined m_unk0x1a; // 0x1a
MxU32 m_unk0x1c; // 0x1c
LegoTranInfoList* m_tranInfoList; // 0x20
LegoTranInfoList* m_tranInfoList2; // 0x24
@ -140,7 +143,12 @@ class LegoAnimationManager : public MxCore {
undefined m_unk0x401; // 0x401
MxU8 m_unk0x402; // 0x402
MxLong m_unk0x404; // 0x404
undefined m_unk0x408[0x18]; // 0x408
MxLong m_unk0x408; // 0x408
MxLong m_unk0x40c; // 0x40c
undefined4 m_unk0x410; // 0x410
undefined4 m_unk0x414; // 0x414
undefined4 m_unk0x418; // 0x418
undefined4 m_unk0x41c; // 0x41c
AnimState* m_animState; // 0x420
LegoROIList* m_unk0x424; // 0x424
undefined m_unk0x428; // 0x428

View file

@ -166,11 +166,65 @@ void LegoAnimationManager::FUN_1005f0b0()
// TODO
}
// STUB: LEGO1 0x1005f130
// FUNCTION: LEGO1 0x1005f130
// FUNCTION: BETA10 0x1003ffb7
void LegoAnimationManager::Init()
{
// TODO
m_unk0x402 = 0;
m_scriptIndex = -1;
m_animCount = 0;
m_anims = NULL;
m_unk0x18 = 0;
m_unk0x1a = 0;
m_tranInfoList = NULL;
m_tranInfoList2 = NULL;
m_unk0x41c = g_legoAnimationManagerConfig <= 1 ? 10 : 20;
MxS32 i;
for (i = 0; i < (MxS32) _countof(m_unk0x28); i++) {
m_unk0x28[i] = NULL;
m_unk0x30[i] = 0;
}
for (i = 0; i < (MxS32) _countof(m_unk0x3c); i++) {
m_unk0x3c[i].m_roi = NULL;
m_unk0x3c[i].m_id = -1;
m_unk0x3c[i].m_unk0x10 = -1.0f;
m_unk0x3c[i].m_unk0x14 = 0;
}
m_unk0x38 = 0;
m_unk0x39 = FALSE;
m_unk0x3a = 1;
m_unk0x3fc = 0;
m_unk0x400 = 0;
m_unk0x414 = 0;
m_unk0x418 = 5;
m_unk0x0e = 0;
m_unk0x10 = 0;
m_unk0x401 = 0;
m_unk0x42b = 0;
m_unk0x430 = 0;
m_unk0x42c = 0;
m_unk0x408 = m_unk0x40c = m_unk0x404 = Timer()->GetTime();
m_unk0x410 = 5000;
for (i = 0; i < (MxS32) _countof(g_characters); i++) {
g_characters[i].m_active = FALSE;
g_characters[i].m_unk0x04 = FALSE;
}
for (i = 0; i < (MxS32) _countof(g_vehicles); i++) {
g_vehicles[i].m_unk0x04 = 0;
g_vehicles[i].m_unk0x05 = FALSE;
}
if (m_unk0x424 != NULL) {
FUN_10063aa0();
delete m_unk0x424;
}
m_unk0x424 = new LegoROIList();
}
// STUB: LEGO1 0x1005f6d0
@ -657,7 +711,7 @@ void LegoAnimationManager::FUN_10061010(undefined4)
}
// STUB: LEGO1 0x100617c0
void LegoAnimationManager::FUN_100617c0(MxS32, MxU16&, MxU32&)
void LegoAnimationManager::FUN_100617c0(MxS32, MxU16&, MxU16&)
{
// TODO
}