mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-24 08:41:16 +00:00
Implement PathActor VTable0x80 and PathActorStruct FUN_1009a140
This commit is contained in:
parent
75dc04f40a
commit
828908fd56
@ -11,6 +11,12 @@ class LegoPathController;
|
||||
struct LegoActorStruct {
|
||||
LegoActorStruct();
|
||||
~LegoActorStruct();
|
||||
void FUN_1009a140(
|
||||
Mx3DPointFloat& p_point1,
|
||||
Mx3DPointFloat& p_point2,
|
||||
Mx3DPointFloat& p_point3,
|
||||
Mx3DPointFloat& p_point4
|
||||
);
|
||||
|
||||
Mx3DPointFloat m_unk0x00[4]; // 0x00
|
||||
};
|
||||
@ -47,7 +53,12 @@ class LegoPathActor : public LegoActor {
|
||||
// FUNCTION: LEGO1 0x10002d30
|
||||
virtual MxU8 GetUserNavFlag() { return m_userNavFlag; } // vtable+0x7c
|
||||
|
||||
virtual void VTable0x80(); // vtable+0x80
|
||||
virtual MxResult VTable0x80(
|
||||
Mx3DPointFloat& p_point1,
|
||||
Mx3DPointFloat& p_point2,
|
||||
Mx3DPointFloat& p_point3,
|
||||
Mx3DPointFloat& p_point4
|
||||
); // vtable+0x80
|
||||
virtual void VTable0x84(); // vtable+0x84
|
||||
virtual void VTable0x88(); // vtable+0x88
|
||||
virtual void VTable0x8c(); // vtable+0x8c
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
#include "legopathactor.h"
|
||||
|
||||
#include "vec.h"
|
||||
|
||||
DECOMP_SIZE_ASSERT(LegoPathActor, 0x154)
|
||||
|
||||
// FUNCTION: LEGO1 0x1002d700
|
||||
@ -29,10 +31,30 @@ LegoPathActor::~LegoPathActor()
|
||||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1002d8d0
|
||||
void LegoPathActor::VTable0x80()
|
||||
// FUNCTION: LEGO1 0x1002d8d0
|
||||
MxResult LegoPathActor::VTable0x80(
|
||||
Mx3DPointFloat& p_point1,
|
||||
Mx3DPointFloat& p_point2,
|
||||
Mx3DPointFloat& p_point3,
|
||||
Mx3DPointFloat& p_point4
|
||||
)
|
||||
{
|
||||
// TODO
|
||||
Mx3DPointFloat p1, p2, p3;
|
||||
p3 = p_point3;
|
||||
((Mx3DPointFloat&) p3).Sub(&p_point1);
|
||||
m_BADuration = NORMSQRD3(p3.GetData());
|
||||
|
||||
if (m_BADuration > 0.0f) {
|
||||
m_BADuration = sqrtf(m_BADuration);
|
||||
p1 = p_point2;
|
||||
p2 = p_point4;
|
||||
m_unk0x8c.FUN_1009a140(p_point1, p1, p_point3, p2);
|
||||
m_BADuration *= 1000.0;
|
||||
return SUCCESS;
|
||||
}
|
||||
else {
|
||||
return FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1002d9c0
|
||||
@ -120,3 +142,20 @@ LegoActorStruct::LegoActorStruct()
|
||||
LegoActorStruct::~LegoActorStruct()
|
||||
{
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1009a140
|
||||
void LegoActorStruct::FUN_1009a140(
|
||||
Mx3DPointFloat& p_point1,
|
||||
Mx3DPointFloat& p_point2,
|
||||
Mx3DPointFloat& p_point3,
|
||||
Mx3DPointFloat& p_point4
|
||||
)
|
||||
{
|
||||
m_unk0x00[0] = p_point1;
|
||||
m_unk0x00[1] = p_point2;
|
||||
|
||||
for (MxU32 i = 0; i < 3; i++) {
|
||||
m_unk0x00[2][i] = (p_point3[i] - p_point1[i]) * 3.0f - p_point2[i] * 2.0f - p_point4[i];
|
||||
m_unk0x00[3][i] = (p_point1[i] - p_point3[i]) * 2.0f + p_point4[i] + p_point2[i];
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user