Match functions, fixes

This commit is contained in:
Christian Semmler 2024-04-07 07:51:07 -04:00
parent 828908fd56
commit 238fd35611
7 changed files with 33 additions and 48 deletions

View File

@ -11,12 +11,7 @@ class LegoPathController;
struct LegoActorStruct {
LegoActorStruct();
~LegoActorStruct();
void FUN_1009a140(
Mx3DPointFloat& p_point1,
Mx3DPointFloat& p_point2,
Mx3DPointFloat& p_point3,
Mx3DPointFloat& p_point4
);
void FUN_1009a140(Vector3& p_point1, Vector3& p_point2, Vector3& p_point3, Vector3& p_point4);
Mx3DPointFloat m_unk0x00[4]; // 0x00
};
@ -54,10 +49,10 @@ class LegoPathActor : public LegoActor {
virtual MxU8 GetUserNavFlag() { return m_userNavFlag; } // vtable+0x7c
virtual MxResult VTable0x80(
Mx3DPointFloat& p_point1,
Mx3DPointFloat& p_point2,
Mx3DPointFloat& p_point3,
Mx3DPointFloat& p_point4
Vector3& p_point1,
Vector3& p_point2,
Vector3& p_point3,
Vector3& p_point4
); // vtable+0x80
virtual void VTable0x84(); // vtable+0x84
virtual void VTable0x88(); // vtable+0x88

View File

@ -1,6 +1,6 @@
#include "legopathactor.h"
#include "vec.h"
#include <vec.h>
DECOMP_SIZE_ASSERT(LegoPathActor, 0x154)
@ -32,29 +32,24 @@ LegoPathActor::~LegoPathActor()
}
// FUNCTION: LEGO1 0x1002d8d0
MxResult LegoPathActor::VTable0x80(
Mx3DPointFloat& p_point1,
Mx3DPointFloat& p_point2,
Mx3DPointFloat& p_point3,
Mx3DPointFloat& p_point4
)
MxResult LegoPathActor::VTable0x80(Vector3& p_point1, Vector3& p_point2, Vector3& p_point3, Vector3& p_point4)
{
Mx3DPointFloat p1, p2, p3;
p3 = p_point3;
((Mx3DPointFloat&) p3).Sub(&p_point1);
m_BADuration = NORMSQRD3(p3.GetData());
p1 = p_point3;
((Vector3&) p1).Sub(&p_point1);
m_BADuration = p1.LenSquared();
if (m_BADuration > 0.0f) {
m_BADuration = sqrtf(m_BADuration);
p1 = p_point2;
p2 = p_point4;
m_unk0x8c.FUN_1009a140(p_point1, p1, p_point3, p2);
m_BADuration *= 1000.0;
p2 = p_point2;
p3 = p_point4;
m_unk0x8c.FUN_1009a140(p_point1, p2, p_point3, p3);
m_BADuration /= 0.001;
return SUCCESS;
}
else {
return FAILURE;
}
return FAILURE;
}
// STUB: LEGO1 0x1002d9c0
@ -144,17 +139,12 @@ LegoActorStruct::~LegoActorStruct()
}
// FUNCTION: LEGO1 0x1009a140
void LegoActorStruct::FUN_1009a140(
Mx3DPointFloat& p_point1,
Mx3DPointFloat& p_point2,
Mx3DPointFloat& p_point3,
Mx3DPointFloat& p_point4
)
void LegoActorStruct::FUN_1009a140(Vector3& p_point1, Vector3& p_point2, Vector3& p_point3, Vector3& p_point4)
{
m_unk0x00[0] = p_point1;
m_unk0x00[1] = p_point2;
for (MxU32 i = 0; i < 3; i++) {
for (MxS32 i = 0; i < 3; i++) {
m_unk0x00[2][i] = (p_point3[i] - p_point1[i]) * 3.0f - p_point2[i] * 2.0f - p_point4[i];
m_unk0x00[3][i] = (p_point1[i] - p_point3[i]) * 2.0f + p_point4[i] + p_point2[i];
}

View File

@ -32,8 +32,8 @@ class Mx3DPointFloat : public Vector3 {
inline float GetY() { return m_data[1]; }
inline float GetZ() { return m_data[2]; }
inline float& operator[](size_t idx) { return m_data[idx]; }
inline const float& operator[](size_t idx) const { return m_data[idx]; }
inline float& operator[](int idx) { return m_data[idx]; }
inline const float& operator[](int idx) const { return m_data[idx]; }
// SYNTHETIC: LEGO1 0x10010c00
// Mx3DPointFloat::operator=
@ -60,8 +60,8 @@ class Mx4DPointFloat : public Vector4 {
// FUNCTION: LEGO1 0x10003200
virtual void operator=(const Vector4& p_impl) { EqualsImpl(p_impl.m_data); } // vtable+0x98
inline float& operator[](size_t idx) { return m_data[idx]; }
inline const float& operator[](size_t idx) const { return m_data[idx]; }
inline float& operator[](int idx) { return m_data[idx]; }
inline const float& operator[](int idx) const { return m_data[idx]; }
private:
float m_elements[4]; // 0x08

View File

@ -14,8 +14,8 @@ class MxMatrix : public Matrix4 {
inline MxMatrix(const Matrix4& p_matrix) : Matrix4(m_elements) { Equals(p_matrix); }
float* operator[](size_t idx) { return m_data[idx]; }
const float* operator[](size_t idx) const { return m_data[idx]; }
float* operator[](int idx) { return m_data[idx]; }
const float* operator[](int idx) const { return m_data[idx]; }
// FUNCTION: LEGO1 0x10002850
void operator=(const Matrix4& p_matrix) override { Equals(p_matrix); } // vtable+0x28

View File

@ -144,8 +144,8 @@ class Matrix4 {
inline virtual void ToQuaternion(Vector4& p_resultQuat); // vtable+0x40
inline virtual int FromQuaternion(const Vector4& p_vec); // vtable+0x44
float* operator[](size_t idx) { return m_data[idx]; }
const float* operator[](size_t idx) const { return m_data[idx]; }
float* operator[](int idx) { return m_data[idx]; }
const float* operator[](int idx) const { return m_data[idx]; }
protected:
float (*m_data)[4];

View File

@ -152,8 +152,8 @@ class Vector2 {
Vector2::SetVector(&p_other);
return *this;
}
inline float& operator[](size_t idx) { return m_data[idx]; }
inline const float& operator[](size_t idx) const { return m_data[idx]; }
inline float& operator[](int idx) { return m_data[idx]; }
inline const float& operator[](int idx) const { return m_data[idx]; }
protected:
float* m_data; // 0x04
@ -265,7 +265,7 @@ class Vector3 : public Vector2 {
// FUNCTION: LEGO1 0x10003bd0
float LenSquared() const override
{
return m_data[1] * m_data[1] + m_data[0] * m_data[0] + m_data[2] * m_data[2];
return m_data[0] * m_data[0] + m_data[1] * m_data[1] + m_data[2] * m_data[2];
} // vtable+0x40
inline void Fill(float p_value) { EqualsScalar(&p_value); }

View File

@ -2,9 +2,10 @@
#include "mxdirectx/mxstopwatch.h"
#include "tgl/d3drm/impl.h"
#include "vec.h"
#include "viewlod.h"
#include <vec.h>
DECOMP_SIZE_ASSERT(ViewManager, 0x1bc)
// GLOBAL: LEGO1 0x100dbcd8
@ -372,8 +373,7 @@ void ViewManager::FUN_100a6b90()
{
flags &= ~c_bit2;
// TODO: Should be signed, but worsens match
unsigned int i, j, k;
int i, j, k;
for (i = 0; i < 8; i++) {
for (j = 0; j < 3; j++) {