mirror of
https://github.com/isledecomp/isle.git
synced 2025-10-24 08:54:15 +00:00
Implement LegoCarBuildAnimPresenter::FUN_10079920() (#1108)
* Implement `FUN_10079920()` * Fix formatting * Address review comment --------- Co-authored-by: jonschz <jonschz@users.noreply.github.com>
This commit is contained in:
@@ -202,7 +202,7 @@ private:
|
||||
|
||||
static MxS16 g_unk0x100f11cc;
|
||||
static MxFloat g_unk0x100d65a4;
|
||||
static MxFloat g_unk0x100d65a8;
|
||||
static MxFloat g_rotationAngleStepYAxis;
|
||||
};
|
||||
|
||||
#endif // LEGOCARBUILD_H
|
||||
|
||||
@@ -45,7 +45,8 @@ public:
|
||||
void EndAction() override; // vtable+0x40
|
||||
void PutFrame() override; // vtable+0x6c
|
||||
|
||||
void FUN_10079920(float p_param1);
|
||||
void FUN_10079160();
|
||||
void RotateAroundYAxis(MxFloat p_angle);
|
||||
MxBool FUN_10079c30(const LegoChar* p_name);
|
||||
MxBool FUN_10079ca0(const LegoChar* p_name);
|
||||
MxBool FUN_10079cf0(const LegoChar* p_string);
|
||||
@@ -64,11 +65,11 @@ private:
|
||||
undefined2 m_unk0xbc; // 0xbc
|
||||
MxS16 m_unk0xbe; // 0xbe
|
||||
MxS16 m_unk0xc0; // 0xc0
|
||||
undefined4 m_unk0xc4; // 0xc4
|
||||
LegoAnimNodeData* m_unk0xc4; // 0xc4
|
||||
LegoAnim m_unk0xc8; // 0xc8
|
||||
MxMatrix m_unk0xe0; // 0xe0
|
||||
UnknownListEntry* m_unk0x128; // 0x128
|
||||
undefined4 m_unk0x12c; // 0x12c
|
||||
MxFloat m_unk0x12c; // 0x12c
|
||||
undefined4 m_unk0x130; // 0x130
|
||||
undefined4 m_unk0x134; // 0x134
|
||||
undefined4 m_unk0x138; // 0x138
|
||||
|
||||
@@ -26,7 +26,7 @@ DECOMP_SIZE_ASSERT(LegoVehicleBuildState, 0x50)
|
||||
MxFloat LegoCarBuild::g_unk0x100d65a4 = -0.1f;
|
||||
|
||||
// GLOBAL: LEGO1 0x100d65a8
|
||||
MxFloat LegoCarBuild::g_unk0x100d65a8 = 0.07;
|
||||
MxFloat LegoCarBuild::g_rotationAngleStepYAxis = 0.07;
|
||||
|
||||
// GLOBAL: LEGO1 0x100f11cc
|
||||
MxS16 LegoCarBuild::g_unk0x100f11cc = -1;
|
||||
@@ -783,7 +783,7 @@ void LegoCarBuild::FUN_10024ef0()
|
||||
void LegoCarBuild::FUN_10024f50()
|
||||
{
|
||||
m_unk0x2d4 = FALSE;
|
||||
m_unk0x258->FUN_10079920(g_unk0x100d65a8);
|
||||
m_unk0x258->RotateAroundYAxis(g_rotationAngleStepYAxis);
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10024f70
|
||||
|
||||
@@ -14,7 +14,7 @@ LegoCarBuildAnimPresenter::LegoCarBuildAnimPresenter()
|
||||
m_unk0xbe = 0;
|
||||
m_unk0xc0 = 0;
|
||||
m_unk0x128 = NULL;
|
||||
m_unk0xc4 = 0;
|
||||
m_unk0xc4 = NULL;
|
||||
m_unk0x130 = 0;
|
||||
m_unk0x12c = 0;
|
||||
m_unk0x134 = 0;
|
||||
@@ -83,13 +83,46 @@ void LegoCarBuildAnimPresenter::EndAction()
|
||||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10079920
|
||||
// STUB: BETA10 0x1007225d
|
||||
void LegoCarBuildAnimPresenter::FUN_10079920(float p_param1)
|
||||
// STUB: LEGO1 0x10079160
|
||||
void LegoCarBuildAnimPresenter::FUN_10079160()
|
||||
{
|
||||
// called from LegoCarBuildAnimPresenter::StreamingTickle()
|
||||
// TODO
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10079920
|
||||
// FUNCTION: BETA10 0x1007225d
|
||||
void LegoCarBuildAnimPresenter::RotateAroundYAxis(MxFloat p_angle)
|
||||
{
|
||||
if (m_unk0xc4) {
|
||||
LegoRotationKey* rotationKey = m_unk0xc4->GetRotationKey(0);
|
||||
|
||||
Mx4DPointFloat
|
||||
currentRotation(rotationKey->GetX(), rotationKey->GetY(), rotationKey->GetZ(), rotationKey->GetAngle());
|
||||
Mx4DPointFloat additionalRotation(0.0f, 1.0f, 0.0f, -p_angle);
|
||||
Mx4DPointFloat newRotation;
|
||||
|
||||
additionalRotation.NormalizeQuaternion();
|
||||
newRotation.EqualsHamiltonProduct(¤tRotation, &additionalRotation);
|
||||
|
||||
if (newRotation[3] < 0.9999) {
|
||||
rotationKey->FUN_100739a0(TRUE);
|
||||
}
|
||||
else {
|
||||
rotationKey->FUN_100739a0(FALSE);
|
||||
}
|
||||
|
||||
m_unk0xc4->GetRotationKey(0)->SetX(newRotation[0]);
|
||||
m_unk0xc4->GetRotationKey(0)->SetY(newRotation[1]);
|
||||
m_unk0xc4->GetRotationKey(0)->SetZ(newRotation[2]);
|
||||
m_unk0xc4->GetRotationKey(0)->SetAngle(newRotation[3]);
|
||||
|
||||
if (m_unk0x140->GetROI()) {
|
||||
FUN_1006b9a0(&m_unk0xc8, m_unk0x12c, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10079b80
|
||||
// FUNCTION: BETA10 0x1007258f
|
||||
MxBool LegoCarBuildAnimPresenter::StringEndsOnYOrN(const LegoChar* p_string)
|
||||
|
||||
Reference in New Issue
Block a user