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