Clear unknowns LegoCameraController (#1647)

This commit is contained in:
Fabian Neundorf
2025-07-21 22:18:59 +02:00
committed by GitHub
parent b1dcc26d79
commit fd299137ff
8 changed files with 25 additions and 25 deletions

View File

@@ -38,17 +38,17 @@ public:
virtual MxResult Create(); // vtable+0x44
void SetWorldTransform(const Vector3& p_at, const Vector3& p_dir, const Vector3& p_up);
void FUN_10012290(float p_angle);
void FUN_10012320(float p_angle);
MxResult FUN_100123b0(Matrix4& p_matrix);
void FUN_100123e0(const Matrix4& p_transform, MxU32 p_und);
void RotateZ(float p_angle);
void RotateY(float p_angle);
MxResult GetPointOfView(Matrix4& p_matrix);
void TransformPointOfView(const Matrix4& p_transform, MxU32 p_multiply);
Mx3DPointFloat GetWorldUp();
Mx3DPointFloat GetWorldLocation();
Mx3DPointFloat GetWorldDirection();
private:
MxMatrix m_matrix1; // 0x38
MxMatrix m_matrix2; // 0x80
MxMatrix m_currentTransform; // 0x38
MxMatrix m_originalTransform; // 0x80
};
// SYNTHETIC: LEGO1 0x10011f50

View File

@@ -426,7 +426,7 @@ void Helicopter::Animate(float p_time)
v2 *= f2;
v2 += v1;
m_world->GetCameraController()->FUN_100123e0(mat, 0);
m_world->GetCameraController()->TransformPointOfView(mat, 0);
}
else {
if (m_state->m_unk0x08 == 4) {
@@ -459,7 +459,7 @@ void Helicopter::FUN_100042a0(const Matrix4& p_matrix)
// the typecast makes this function match for unknown reasons
Vector3 vec6((const float*) m_unk0x1a8[3]); // locala0 // esp+0x28
m_world->GetCameraController()->FUN_100123b0(local48);
m_world->GetCameraController()->GetPointOfView(local48);
m_unk0x1a8.SetIdentity();
local90 = p_matrix;

View File

@@ -120,28 +120,28 @@ void LegoCameraController::OnMouseMove(MxU8 p_modifier, MxPoint32 p_point)
// FUNCTION: LEGO1 0x10012260
void LegoCameraController::SetWorldTransform(const Vector3& p_at, const Vector3& p_dir, const Vector3& p_up)
{
CalcLocalTransform(p_at, p_dir, p_up, m_matrix1);
m_matrix2 = m_matrix1;
CalcLocalTransform(p_at, p_dir, p_up, m_currentTransform);
m_originalTransform = m_currentTransform;
}
// FUNCTION: LEGO1 0x10012290
// FUNCTION: BETA10 0x10068c34
void LegoCameraController::FUN_10012290(float p_angle)
void LegoCameraController::RotateZ(float p_angle)
{
m_matrix1 = m_matrix2;
m_matrix1.RotateZ(p_angle);
m_currentTransform = m_originalTransform;
m_currentTransform.RotateZ(p_angle);
}
// FUNCTION: LEGO1 0x10012320
// FUNCTION: BETA10 0x10068c73
void LegoCameraController::FUN_10012320(float p_angle)
void LegoCameraController::RotateY(float p_angle)
{
m_matrix1 = m_matrix2;
m_matrix1.RotateY(p_angle);
m_currentTransform = m_originalTransform;
m_currentTransform.RotateY(p_angle);
}
// FUNCTION: LEGO1 0x100123b0
MxResult LegoCameraController::FUN_100123b0(Matrix4& p_matrix)
MxResult LegoCameraController::GetPointOfView(Matrix4& p_matrix)
{
if (m_lego3DView) {
ViewROI* pov = m_lego3DView->GetPointOfView();
@@ -156,7 +156,7 @@ MxResult LegoCameraController::FUN_100123b0(Matrix4& p_matrix)
// FUNCTION: LEGO1 0x100123e0
// FUNCTION: BETA10 0x10068cb2
void LegoCameraController::FUN_100123e0(const Matrix4& p_transform, MxU32 p_und)
void LegoCameraController::TransformPointOfView(const Matrix4& p_transform, MxU32 p_multiply)
{
if (m_lego3DView != NULL) {
ViewROI* pov = m_lego3DView->GetPointOfView();
@@ -164,8 +164,8 @@ void LegoCameraController::FUN_100123e0(const Matrix4& p_transform, MxU32 p_und)
if (pov != NULL) {
MxMatrix mat;
if (p_und) {
MXM4(mat, m_matrix1, p_transform);
if (p_multiply) {
MXM4(mat, m_currentTransform, p_transform);
}
else {
mat = p_transform;

View File

@@ -194,7 +194,7 @@ void LegoEntity::FUN_10010c30()
LegoWorld* world = CurrentWorld();
if (m_cameraFlag && world && world->GetCameraController() && m_roi) {
world->GetCameraController()->FUN_100123e0(m_roi->GetLocal2World(), 1);
world->GetCameraController()->TransformPointOfView(m_roi->GetLocal2World(), 1);
}
}

View File

@@ -549,7 +549,7 @@ MxResult LegoNavController::ProcessJoystickInput(MxBool& p_und)
LegoWorld* world = CurrentWorld();
if (world && world->GetCameraController()) {
world->GetCameraController()->FUN_10012320(DTOR(povPosition));
world->GetCameraController()->RotateY(DTOR(povPosition));
p_und = TRUE;
}
}

View File

@@ -439,7 +439,7 @@ void LegoPathActor::Animate(float p_time)
LegoWorld* world = CurrentWorld();
if (world) {
world->GetCameraController()->FUN_10012290(DTOR(m_unk0x14c));
world->GetCameraController()->RotateZ(DTOR(m_unk0x14c));
}
}
}

View File

@@ -340,7 +340,7 @@ void LegoRaceCar::KickCamera(float p_param)
a->GetAnimTreePtr()->GetCamAnim()->FUN_1009f490(deltaTime, transformationMatrix);
if (r->GetCameraController()) {
r->GetCameraController()->FUN_100123e0(transformationMatrix, 0);
r->GetCameraController()->TransformPointOfView(transformationMatrix, 0);
}
m_roi->SetLocal2World(transformationMatrix);

View File

@@ -941,7 +941,7 @@ void LegoAnimPresenter::FUN_1006b9a0(LegoAnim* p_anim, MxLong p_time, Matrix4* p
p_anim->GetCamAnim()->FUN_1009f490(p_time, transform);
if (m_currentWorld != NULL && m_currentWorld->GetCameraController() != NULL) {
m_currentWorld->GetCameraController()->FUN_100123e0(transform, 0);
m_currentWorld->GetCameraController()->TransformPointOfView(transform, FALSE);
}
}