mirror of
https://github.com/isledecomp/isle-portable.git
synced 2024-11-29 02:45:37 -05:00
Fix camera glitch (#1031)
This commit is contained in:
parent
e5d66d597d
commit
dd1c11a933
4 changed files with 9 additions and 11 deletions
|
@ -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();
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue