mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-24 16:51:15 +00:00
Improve LegoExtraActor::VTable0x90
This commit is contained in:
parent
b4baed1cd0
commit
4bf26d935f
@ -27,12 +27,12 @@ class LegoCarRaceActor : public virtual LegoRaceActor {
|
||||
return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoRaceActor::IsA(p_name);
|
||||
}
|
||||
|
||||
void VTable0x6c() override; // vtable+0x6c
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
MxU32 VTable0x90(float, MxMatrix&) override; // vtable+0x90
|
||||
MxS32 VTable0x94() override; // vtable+0x94
|
||||
void VTable0x98() override; // vtable+0x98
|
||||
void VTable0x9c() override; // vtable+0x9c
|
||||
void VTable0x6c() override; // vtable+0x6c
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
MxU32 VTable0x90(float, Matrix4&) override; // vtable+0x90
|
||||
MxS32 VTable0x94() override; // vtable+0x94
|
||||
void VTable0x98() override; // vtable+0x98
|
||||
void VTable0x9c() override; // vtable+0x9c
|
||||
|
||||
virtual void FUN_10080590();
|
||||
|
||||
|
||||
@ -34,15 +34,15 @@ class LegoExtraActor : public virtual LegoAnimActor {
|
||||
|
||||
void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
|
||||
void VTable0x68(Mx3DPointFloat& p_point1, Mx3DPointFloat& p_point2, Mx3DPointFloat& p_point3)
|
||||
override; // vtable+0x68
|
||||
void VTable0x6c() override; // vtable+0x6c
|
||||
void VTable0x70(float) override; // vtable+0x70
|
||||
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
|
||||
MxU32 VTable0x90(float p_float, MxMatrix& p_matrix) override; // vtable+0x90
|
||||
MxS32 VTable0x94() override; // vtable+0x94
|
||||
void VTable0x9c() override; // vtable+0x9c
|
||||
void VTable0xa4() override; // vtable+0xa4
|
||||
void VTable0xc4() override; // vtable+0xc4
|
||||
override; // vtable+0x68
|
||||
void VTable0x6c() override; // vtable+0x6c
|
||||
void VTable0x70(float) override; // vtable+0x70
|
||||
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
|
||||
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 VTable0xc4() override; // vtable+0xc4
|
||||
|
||||
virtual MxResult FUN_1002aae0();
|
||||
|
||||
|
||||
@ -46,7 +46,7 @@ class LegoPathActor : public LegoActor {
|
||||
virtual void VTable0x8c(); // vtable+0x8c
|
||||
|
||||
// FUNCTION: LEGO1 0x10002d40
|
||||
virtual MxU32 VTable0x90(float, MxMatrix&) { return FALSE; } // vtable+0x90
|
||||
virtual MxU32 VTable0x90(float, Matrix4&) { return FALSE; } // vtable+0x90
|
||||
|
||||
// FUNCTION: LEGO1 0x10002d50
|
||||
virtual MxS32 VTable0x94() { return 0; } // vtable+0x94
|
||||
|
||||
@ -31,7 +31,7 @@ class LegoRaceActor : public virtual LegoAnimActor {
|
||||
void VTable0x68(Mx3DPointFloat&, Mx3DPointFloat&, Mx3DPointFloat&) override; // vtable+0x68
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
|
||||
MxU32 VTable0x90(float, MxMatrix&) override; // vtable+0x90
|
||||
MxU32 VTable0x90(float, Matrix4&) override; // vtable+0x90
|
||||
MxS32 VTable0x94() override; // vtable+0x94
|
||||
|
||||
// FUNCTION: LEGO1 0x10014aa0
|
||||
|
||||
@ -10,7 +10,7 @@ DECOMP_SIZE_ASSERT(LegoCarRaceActor, 0x1a0)
|
||||
const char* g_fuel = "FUEL";
|
||||
|
||||
// STUB: LEGO1 0x100141a0
|
||||
MxU32 LegoCarRaceActor::VTable0x90(float, MxMatrix&)
|
||||
MxU32 LegoCarRaceActor::VTable0x90(float, Matrix4&)
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
|
||||
@ -26,7 +26,7 @@ LegoExtraActor::~LegoExtraActor()
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1002a720
|
||||
MxU32 LegoExtraActor::VTable0x90(float p_time, MxMatrix& p_transform)
|
||||
MxU32 LegoExtraActor::VTable0x90(float p_time, Matrix4& p_transform)
|
||||
{
|
||||
switch (m_unk0xdc & 0xff) {
|
||||
case 0:
|
||||
@ -39,25 +39,37 @@ MxU32 LegoExtraActor::VTable0x90(float p_time, MxMatrix& p_transform)
|
||||
m_lastTime = p_time;
|
||||
return FALSE;
|
||||
case 3: {
|
||||
Vector3 positionRef = Vector3(p_transform[3]);
|
||||
Vector3 positionRef(p_transform[3]);
|
||||
p_transform = m_roi->GetLocal2World();
|
||||
|
||||
if (p_time < m_scheduledTime) {
|
||||
Mx3DPointFloat position = positionRef;
|
||||
Mx3DPointFloat position;
|
||||
position = positionRef;
|
||||
positionRef.Clear();
|
||||
|
||||
switch (m_axis) {
|
||||
case e_posz:
|
||||
p_transform.RotateZ(0.7f);
|
||||
break;
|
||||
case e_negz:
|
||||
p_transform.RotateZ(-0.7f);
|
||||
break;
|
||||
case e_posx:
|
||||
p_transform.RotateX(0.7f);
|
||||
break;
|
||||
case e_negx:
|
||||
p_transform.RotateX(-0.7f);
|
||||
case e_posz: {
|
||||
float angle = 0.7f;
|
||||
p_transform.RotateZ(angle);
|
||||
break;
|
||||
}
|
||||
case e_negz: {
|
||||
float angle = -0.7f;
|
||||
p_transform.RotateZ(angle);
|
||||
break;
|
||||
}
|
||||
case e_posx: {
|
||||
float angle = 0.7f;
|
||||
p_transform.RotateX(angle);
|
||||
break;
|
||||
}
|
||||
case e_negx: {
|
||||
float angle = -0.7f;
|
||||
p_transform.RotateX(angle);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
positionRef = position;
|
||||
m_actorTime += (p_time - m_lastTime) * m_worldSpeed;
|
||||
m_lastTime = p_time;
|
||||
@ -67,7 +79,7 @@ MxU32 LegoExtraActor::VTable0x90(float p_time, MxMatrix& p_transform)
|
||||
else {
|
||||
m_unk0xdc = 0;
|
||||
m_scheduledTime = 0.0f;
|
||||
positionRef.Sub(&g_unk0x10104c18);
|
||||
((Vector3&) positionRef).Sub(&g_unk0x10104c18); // TODO: Fix call
|
||||
m_roi->FUN_100a58f0(p_transform);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -34,7 +34,7 @@ void LegoRaceActor::VTable0x70(float p_float)
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10014ce0
|
||||
MxU32 LegoRaceActor::VTable0x90(float, MxMatrix&)
|
||||
MxU32 LegoRaceActor::VTable0x90(float, Matrix4&)
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
|
||||
@ -114,7 +114,7 @@ class Matrix4 {
|
||||
}
|
||||
}
|
||||
|
||||
inline void RotateX(const float p_angle)
|
||||
inline void RotateX(const float& p_angle)
|
||||
{
|
||||
float s = sin(p_angle);
|
||||
float c = cos(p_angle);
|
||||
@ -126,7 +126,7 @@ class Matrix4 {
|
||||
}
|
||||
}
|
||||
|
||||
inline void RotateZ(const float p_angle)
|
||||
inline void RotateZ(const float& p_angle)
|
||||
{
|
||||
float s = sin(p_angle);
|
||||
float c = cos(p_angle);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user