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) {
MxMatrix mat;
if (p_time < 0 || p_time <= m_unk0x438) {
if (p_time < 0 || m_unk0x438 <= p_time) {
m_unk0x430 = FALSE;
m_unk0x42c->m_flags &= ~LegoTranInfo::c_bit1;
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);
VPV3(mat[3], m_unk0x43c[3], sub);
mat[3][4] = 1.0f;
mat[3][3] = 1.0f;
}
LegoROI* viewROI = VideoManager()->GetViewROI();

View file

@ -706,12 +706,10 @@ void TimeROI::FUN_100a9b40(Matrix4& p_matrix, LegoTime p_time)
m_time = p_time;
Mx3DPointFloat targetPosition(p_matrix[3]);
Vector3 vec(m_local2world[3]);
// TODO: Figure out how to get type right for the call
((Vector3&) targetPosition).Sub(Vector3(m_local2world[3]));
float division = time * 0.001;
((Vector3&) targetPosition).Div(division);
((Vector3&) targetPosition).Sub(vec);
((Vector3&) targetPosition).Div(time * 0.001);
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 (1.0 - d1 > 0.00001) {
double d = acos(d1);
sin(d);
d1 = sin((1.0 - p_f) * d) / sin(d);
d2 = sin(p_f * d) / sin(d);
double s = sin(d);
d1 = sin((1.0 - p_f) * d) / s;
d2 = sin(p_f * d) / s;
}
else {
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
// 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
virtual void SetVector(float* p_other) { EqualsImpl(p_other); } // vtable+0x70