Fix camera glitch (#1031)

This commit is contained in:
Christian Semmler 2024-06-13 16:09:14 -04:00 committed by GitHub
parent e5d66d597d
commit dd1c11a933
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 9 additions and 11 deletions

View file

@ -2790,7 +2790,7 @@ void LegoAnimationManager::FUN_10064b50(MxLong p_time)
if (m_unk0x430 && m_unk0x42c != NULL) { if (m_unk0x430 && m_unk0x42c != NULL) {
MxMatrix mat; MxMatrix mat;
if (p_time < 0 || p_time <= m_unk0x438) { if (p_time < 0 || m_unk0x438 <= p_time) {
m_unk0x430 = FALSE; m_unk0x430 = FALSE;
m_unk0x42c->m_flags &= ~LegoTranInfo::c_bit1; m_unk0x42c->m_flags &= ~LegoTranInfo::c_bit1;
m_unk0x42c = NULL; m_unk0x42c = NULL;
@ -2807,7 +2807,7 @@ void LegoAnimationManager::FUN_10064b50(MxLong p_time)
m_unk0x4cc.Unknown6(mat, (float) (p_time - m_unk0x434) / 1000.0f); m_unk0x4cc.Unknown6(mat, (float) (p_time - m_unk0x434) / 1000.0f);
VPV3(mat[3], m_unk0x43c[3], sub); VPV3(mat[3], m_unk0x43c[3], sub);
mat[3][4] = 1.0f; mat[3][3] = 1.0f;
} }
LegoROI* viewROI = VideoManager()->GetViewROI(); LegoROI* viewROI = VideoManager()->GetViewROI();

View file

@ -706,12 +706,10 @@ void TimeROI::FUN_100a9b40(Matrix4& p_matrix, LegoTime p_time)
m_time = p_time; m_time = p_time;
Mx3DPointFloat targetPosition(p_matrix[3]); Mx3DPointFloat targetPosition(p_matrix[3]);
Vector3 vec(m_local2world[3]);
// TODO: Figure out how to get type right for the call ((Vector3&) targetPosition).Sub(vec);
((Vector3&) targetPosition).Sub(Vector3(m_local2world[3])); ((Vector3&) targetPosition).Div(time * 0.001);
float division = time * 0.001;
((Vector3&) targetPosition).Div(division);
FUN_100a5a30(targetPosition); FUN_100a5a30(targetPosition);
} }

View file

@ -183,9 +183,9 @@ inline int UnknownMx4DPointFloat::FUN_100040a0(Vector4& p_v, float p_f)
if (d1 + 1.0 > 0.00001) { if (d1 + 1.0 > 0.00001) {
if (1.0 - d1 > 0.00001) { if (1.0 - d1 > 0.00001) {
double d = acos(d1); double d = acos(d1);
sin(d); double s = sin(d);
d1 = sin((1.0 - p_f) * d) / sin(d); d1 = sin((1.0 - p_f) * d) / s;
d2 = sin(p_f * d) / sin(d); d2 = sin(p_f * d) / s;
} }
else { else {
d1 = 1.0 - p_f; d1 = 1.0 - p_f;

View file

@ -138,7 +138,7 @@ class Vector2 {
virtual void Mul(const float& p_value) { MulScalarImpl((float*) &p_value); } // vtable+0x5c virtual void Mul(const float& p_value) { MulScalarImpl((float*) &p_value); } // vtable+0x5c
// FUNCTION: LEGO1 0x10002240 // FUNCTION: LEGO1 0x10002240
virtual void Div(float& p_value) { DivScalarImpl(&p_value); } // vtable+0x68 virtual void Div(const float& p_value) { DivScalarImpl((float*) &p_value); } // vtable+0x68
// FUNCTION: LEGO1 0x10002250 // FUNCTION: LEGO1 0x10002250
virtual void SetVector(float* p_other) { EqualsImpl(p_other); } // vtable+0x70 virtual void SetVector(float* p_other) { EqualsImpl(p_other); } // vtable+0x70