diff --git a/LEGO1/lego/legoomni/src/actors/helicopter.cpp b/LEGO1/lego/legoomni/src/actors/helicopter.cpp index 86c29f33..8d88e6bf 100644 --- a/LEGO1/lego/legoomni/src/actors/helicopter.cpp +++ b/LEGO1/lego/legoomni/src/actors/helicopter.cpp @@ -387,28 +387,29 @@ void Helicopter::VTable0x74(Matrix4& p_transform) void Helicopter::Animate(float p_time) { if (m_state->m_unk0x08 == 4 || m_state->m_unk0x08 == 5) { - float f = m_unk0x1f0 - p_time + 3000; + float f = m_unk0x1f0 - p_time + 3000.0f; if (f >= 0) { float f2 = f / -3000.0f + 1; if (f2 < 0) { f2 = 0; } - if (1.0f < f2) { + if (f2 > 1.0f) { f2 = 1.0f; } MxMatrix mat; - Vector3 v(m_unk0x160[3]); - Vector3 v2(mat[3]); // likely correct according to stackcmp + Vector3 v1(m_unk0x160[3]); + Vector3 v2(mat[3]); + Vector3 v3(m_unk0x1a8[3]); - // float* loc = m_unk0x1a8[0]; // this looks more correct, but it mixes up the registers. Re-enable later mat.SetIdentity(); m_unk0x1f4.BETA_1004aaa0(mat, f2); - // v2 = loc; - v2 = m_unk0x1a8[0]; - v2 -= v; + + v2 = v3; + v2 -= v1; v2 *= f2; - v2 += v; + v2 += v1; + m_world->GetCamera()->FUN_100123e0(mat, 0); } else {