diff --git a/LEGO1/lego/legoomni/src/paths/legopathactor.cpp b/LEGO1/lego/legoomni/src/paths/legopathactor.cpp index db1d1dec..ba80ea53 100644 --- a/LEGO1/lego/legoomni/src/paths/legopathactor.cpp +++ b/LEGO1/lego/legoomni/src/paths/legopathactor.cpp @@ -295,40 +295,41 @@ MxS32 LegoPathActor::VTable0x8c(float p_time, Matrix4& p_transform) return result; } else { - if (p_time >= 0 && m_worldSpeed > 0) { - float f = (m_BADuration - m_unk0x7c) / m_worldSpeed + m_lastTime; + if (p_time < 0 || m_worldSpeed <= 0) { + return -1; + } - if (f < p_time) { - m_unk0x7c = m_BADuration; - m_unk0xe9 = 1; - } - else { - f = p_time; - m_unk0xe9 = 0; - m_unk0x7c += (p_time - m_lastTime) * m_worldSpeed; - } + float f = (m_BADuration - m_unk0x7c) / m_worldSpeed + m_lastTime; - m_actorTime += (f - m_lastTime) * m_worldSpeed; - m_lastTime = f; - p_transform.SetIdentity(); - m_unk0x8c - .FUN_1009a1e0(m_BADuration / m_unk0x7c, p_transform, *m_boundary->GetUnknown0x14(), !m_userNavFlag); - Vector3 pos1(p_transform[3]); - Vector3 pos2(m_unk0xec[3]); - Mx3DPointFloat p1; + if (f < p_time) { + m_unk0x7c = m_BADuration; + m_unk0xe9 = 1; + } + else { + f = p_time; + m_unk0xe9 = 0; + m_unk0x7c += (p_time - m_lastTime) * m_worldSpeed; + } - if (VTable0x68(pos2, pos1, p1) > 0) { - m_lastTime = p_time; - return 1; - } + m_actorTime += (f - m_lastTime) * m_worldSpeed; + m_lastTime = f; + p_transform.SetIdentity(); + m_unk0x8c.FUN_1009a1e0(m_BADuration / m_unk0x7c, p_transform, *m_boundary->GetUnknown0x14(), !m_userNavFlag); + Vector3 pos1(p_transform[3]); + Vector3 pos2(m_unk0xec[3]); + Mx3DPointFloat p1; - m_boundary->FUN_100575b0(pos2, pos1, this); - pos2 = pos1; + if (VTable0x68(pos2, pos1, p1) > 0) { + m_lastTime = p_time; + return 1; + } - if (m_unk0xe9 != 0) { - WaitForAnimation(); - return 0; - } + m_boundary->FUN_100575b0(pos2, pos1, this); + pos2 = pos1; + + if (m_unk0xe9 != 0) { + WaitForAnimation(); + return 0; } }