Fix Act3Brickster::Animate

This commit is contained in:
Christian Semmler 2024-12-21 08:59:35 -07:00
parent dfd0975cb1
commit c0f0513207

View File

@ -387,28 +387,29 @@ void Helicopter::VTable0x74(Matrix4& p_transform)
void Helicopter::Animate(float p_time) void Helicopter::Animate(float p_time)
{ {
if (m_state->m_unk0x08 == 4 || m_state->m_unk0x08 == 5) { 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) { if (f >= 0) {
float f2 = f / -3000.0f + 1; float f2 = f / -3000.0f + 1;
if (f2 < 0) { if (f2 < 0) {
f2 = 0; f2 = 0;
} }
if (1.0f < f2) { if (f2 > 1.0f) {
f2 = 1.0f; f2 = 1.0f;
} }
MxMatrix mat; MxMatrix mat;
Vector3 v(m_unk0x160[3]); Vector3 v1(m_unk0x160[3]);
Vector3 v2(mat[3]); // likely correct according to stackcmp 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(); mat.SetIdentity();
m_unk0x1f4.BETA_1004aaa0(mat, f2); m_unk0x1f4.BETA_1004aaa0(mat, f2);
// v2 = loc;
v2 = m_unk0x1a8[0]; v2 = v3;
v2 -= v; v2 -= v1;
v2 *= f2; v2 *= f2;
v2 += v; v2 += v1;
m_world->GetCamera()->FUN_100123e0(mat, 0); m_world->GetCamera()->FUN_100123e0(mat, 0);
} }
else { else {