more fixes

This commit is contained in:
Christian Semmler 2024-04-14 09:53:14 -04:00
parent d1a7da3ac2
commit 510f656df2

View File

@ -249,8 +249,9 @@ MxS32 LegoPathActor::VTable0x8c(float p_time, Matrix4& p_transform)
m_boundary->FUN_100575b0(p4, p2, this); m_boundary->FUN_100575b0(p4, p2, this);
} }
if (m_unk0xe9 != 0) {
LegoPathBoundary* oldBoundary = m_boundary; LegoPathBoundary* oldBoundary = m_boundary;
if (m_unk0xe9 != 0) {
WaitForAnimation(); WaitForAnimation();
if (m_boundary == oldBoundary) { if (m_boundary == oldBoundary) {
@ -259,6 +260,7 @@ MxS32 LegoPathActor::VTable0x8c(float p_time, Matrix4& p_transform)
if (time - g_unk0x100f3308 > 1000) { if (time - g_unk0x100f3308 > 1000) {
g_unk0x100f3308 = time; g_unk0x100f3308 = time;
const char* var = VariableTable()->GetVariable(g_strHIT_WALL_SOUND); const char* var = VariableTable()->GetVariable(g_strHIT_WALL_SOUND);
if (var && var[0] != 0) { if (var && var[0] != 0) {
SoundManager()->GetCacheSoundManager()->FUN_1003dae0(var, NULL, FALSE); SoundManager()->GetCacheSoundManager()->FUN_1003dae0(var, NULL, FALSE);
} }
@ -267,20 +269,23 @@ MxS32 LegoPathActor::VTable0x8c(float p_time, Matrix4& p_transform)
m_worldSpeed *= m_unk0x144; m_worldSpeed *= m_unk0x144;
nav->SetLinearVel(m_worldSpeed); nav->SetLinearVel(m_worldSpeed);
Mx3DPointFloat p7(p2); Mx3DPointFloat p7(p2);
p7.Sub(&p6); ((Vector3&) p7).Sub(&p6);
if (p7.Unitize() == SUCCESS) { if (p7.Unitize() == 0) {
float f = sqrtf(p1.LenSquared()) * m_unk0x140; float f = sqrt(p1.LenSquared()) * m_unk0x140;
p7.Mul(f); ((Vector3&) p7).Mul(f);
p7.Add(&p1); ((Vector3&) p1).Add(&p7);
}
} }
} }
p_transform.SetIdentity(); p_transform.SetIdentity();
Vector3 right(p_transform[0]); Vector3 right(p_transform[0]);
Vector3 up(p_transform[1]); Vector3 up(p_transform[1]);
Vector3 dir(p_transform[2]); Vector3 dir(p_transform[2]);
Vector3 pos(p_transform[3]); Vector3 pos(p_transform[3]);
dir = p1; dir = p1;
up = *m_boundary->GetUnknown0x14(); up = *m_boundary->GetUnknown0x14();
right.EqualsCross(&up, &dir); right.EqualsCross(&up, &dir);
@ -289,7 +294,6 @@ MxS32 LegoPathActor::VTable0x8c(float p_time, Matrix4& p_transform)
pos = p2; pos = p2;
return result; return result;
} }
}
else { else {
if (p_time >= 0 && m_worldSpeed > 0) { if (p_time >= 0 && m_worldSpeed > 0) {
float f = (m_BADuration - m_unk0x7c) / m_worldSpeed + m_lastTime; float f = (m_BADuration - m_unk0x7c) / m_worldSpeed + m_lastTime;