Implement LegoExtraActor:: VTable0xa4 & FUN_1002aae0

This commit is contained in:
Nathan 2024-03-27 19:29:26 -04:00
parent 97ebb22c42
commit 944a210e39
4 changed files with 39 additions and 10 deletions

View File

@ -41,7 +41,7 @@ class LegoExtraActor : public virtual LegoAnimActor {
MxU32 VTable0x90(float p_float, Matrix4& p_matrix) override; // vtable+0x90
MxS32 VTable0x94() override; // vtable+0x94
void VTable0x9c() override; // vtable+0x9c
void VTable0xa4() override; // vtable+0xa4
void VTable0xa4(MxU8& p_und1, MxS32& p_und2) override; // vtable+0xa4
void VTable0xc4() override; // vtable+0xc4
virtual MxResult FUN_1002aae0();

View File

@ -57,8 +57,8 @@ class LegoPathActor : public LegoActor {
// FUNCTION: LEGO1 0x10002d60
virtual MxS32 VTable0xa0() { return 0; } // vtable+0xa0
virtual void VTable0xa4(); // vtable+0xa4
virtual void VTable0xa8(); // vtable+0xa8
virtual void VTable0xa4(MxU8&, MxS32&); // vtable+0xa4
virtual void VTable0xa8(); // vtable+0xa8
// FUNCTION: LEGO1 0x10002d70
virtual void VTable0xac(MxFloat p_unk0x13c) { m_unk0x13c = p_unk0x13c; } // vtable+0xac
@ -104,7 +104,7 @@ class LegoPathActor : public LegoActor {
MxFloat m_unk0xa0; // 0xa0
undefined m_unk0xa4[0x38]; // 0xa4
MxU32 m_unk0xdc; // 0xdc
undefined4 m_destEdge; // 0xe0
Edge* m_destEdge; // 0xe0
undefined4 m_unk0xe4; // 0xe4
undefined2 m_unk0xe8; // 0xe8
MxBool m_userNavFlag; // 0xea

View File

@ -86,16 +86,45 @@ MxU32 LegoExtraActor::VTable0x90(float p_time, Matrix4& p_transform)
}
}
// STUB: LEGO1 0x1002aa90
void LegoExtraActor::VTable0xa4()
// FUNCTION: LEGO1 0x1002aa90
void LegoExtraActor::VTable0xa4(MxU8& p_und1, MxS32& p_und2)
{
switch (m_unk0x0c) {
case 1:
p_und1 = 1;
p_und2 = 1;
return;
case 2:
p_und1 = 0;
p_und2 = 1;
return;
default:
p_und1 = 1;
p_und2 = rand() % p_und2 + 1;
return;
}
}
// STUB: LEGO1 0x1002aae0
// FUNCTION: LEGO1 0x1002aae0
MxResult LegoExtraActor::FUN_1002aae0()
{
// TODO
VTable0x9c();
LegoPathBoundary* oldEdge = m_boundary;
Vector3 dir(m_unk0xec[0]);
Vector3 up(m_unk0xec[2]);
float scale = -1.0f;
float* right = m_unk0xec[1];
up.Mul(scale);
((Vector3&) dir).EqualsCrossImpl(right, up.GetData());
if (m_boundary == m_destEdge->m_faceA) {
m_boundary = (LegoPathBoundary*) m_destEdge->m_faceB;
}
else {
m_boundary = (LegoPathBoundary*) m_destEdge->m_faceA;
}
if (!m_boundary) {
m_boundary = oldEdge;
}
LegoPathActor::VTable0x9c();
return SUCCESS;
}

View File

@ -81,7 +81,7 @@ void LegoPathActor::VTable0x9c()
}
// STUB: LEGO1 0x1002f650
void LegoPathActor::VTable0xa4()
void LegoPathActor::VTable0xa4(MxU8&, MxS32&)
{
// TODO
}