Complete LegoCarBuildAnimPresenter (#1114)

* Complete `LegoCarBuildAnimPresenter`

* fix CI errors

* Drive-by BETA10 fixes

* Address review comments

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
This commit is contained in:
jonschz
2024-10-20 23:00:44 +02:00
committed by GitHub
parent 91205be031
commit b5fee6b240
17 changed files with 188 additions and 25 deletions

View File

@@ -221,10 +221,11 @@ LegoResult LegoAnimScene::FUN_1009f490(LegoFloat p_time, Matrix4& p_matrix)
}
// FUNCTION: LEGO1 0x1009f900
// FUNCTION: BETA10 0x1017df90
LegoAnimKey::LegoAnimKey()
{
m_flags = 0;
m_time = 0;
m_flags = 0;
}
// FUNCTION: LEGO1 0x1009f910
@@ -907,6 +908,7 @@ undefined4 LegoAnim::GetActorUnknown0x04(LegoU32 p_index)
}
// FUNCTION: LEGO1 0x100a0f60
// FUNCTION: BETA10 0x1018027c
LegoMorphKey::LegoMorphKey()
{
m_unk0x08 = 0;

View File

@@ -19,7 +19,11 @@ public:
LegoAnimKey();
LegoResult Read(LegoStorage* p_storage);
LegoFloat GetTime() { return m_time; }
void SetTime(LegoFloat p_time) { m_time = p_time; }
// The different types (LegoFloat vs. MxS32) are correct according to BETA10
// FUNCTION: BETA10 0x100738a0
void SetTime(MxS32 p_time) { m_time = p_time; }
LegoU32 TestBit1() { return m_flags & c_bit1; }
LegoU32 TestBit2() { return m_flags & c_bit2; }
LegoU32 TestBit3() { return m_flags & c_bit3; }
@@ -120,6 +124,9 @@ public:
LegoResult Read(LegoStorage* p_storage);
LegoBool GetUnknown0x08() { return m_unk0x08; }
// FUNCTION: BETA10 0x100738d0
void SetUnknown0x08(LegoBool p_unk0x08) { m_unk0x08 = p_unk0x08; }
protected:
LegoBool m_unk0x08; // 0x08
};
@@ -186,6 +193,19 @@ public:
void SetScaleIndex(LegoU32 p_scaleIndex) { m_scaleIndex = p_scaleIndex; }
void SetMorphIndex(LegoU32 p_morphIndex) { m_morphIndex = p_morphIndex; }
// FUNCTION: BETA10 0x10073930
LegoMorphKey* GetMorphKeys() { return m_morphKeys; }
// FUNCTION: BETA10 0x10073960
void SetMorphKeys(LegoMorphKey* p_morphKeys)
{
m_morphKeys = p_morphKeys;
m_morphIndex = 0;
}
// FUNCTION: BETA10 0x10073900
void SetNumMorphKeys(LegoU16 p_numMorphKeys) { m_numMorphKeys = p_numMorphKeys; }
// FUNCTION: BETA10 0x10059600
void SetUnknown0x20(LegoU16 p_unk0x20) { m_unk0x20 = p_unk0x20; }

View File

@@ -17,6 +17,7 @@ LegoTreeNode::LegoTreeNode()
}
// FUNCTION: LEGO1 0x10099da0
// FUNCTION: BETA10 0x10187e10
LegoTreeNode::~LegoTreeNode()
{
if (m_data) {

View File

@@ -9,11 +9,11 @@
class LegoStorage;
// VTABLE: LEGO1 0x100db778
// VTABLE: BETA10 0x101c37f4
// SIZE 0x04
class LegoTreeNodeData {
public:
LegoTreeNodeData() {}
// FUNCTION: LEGO1 0x1009a0e0
virtual ~LegoTreeNodeData() {}
@@ -28,6 +28,7 @@ public:
};
// VTABLE: LEGO1 0x100db764
// VTABLE: BETA10 0x101c37f4
// SIZE 0x10
class LegoTreeNode {
public:
@@ -58,6 +59,7 @@ public:
void SetChildren(LegoTreeNode** p_children) { m_children = p_children; }
// SYNTHETIC: LEGO1 0x10099d80
// SYNTHETIC: BETA10 0x10188cb0
// LegoTreeNode::`scalar deleting destructor'
protected: