Fix Vector2/Vector3 order

This commit is contained in:
Christian Semmler 2024-12-24 12:02:16 -07:00
parent 7c41ff4569
commit 0036b7e601

View File

@ -42,28 +42,25 @@ class Vector2 {
m_data[1] -= p_value[1]; m_data[1] -= p_value[1];
} // vtable+0x08 } // vtable+0x08
// Those are also overloads in all likelihood,
// but we need a type to do that.
// FUNCTION: LEGO1 0x10002000
virtual void MulScalarImpl(float* p_value)
{
m_data[0] *= *p_value;
m_data[1] *= *p_value;
} // vtable+0x0c
// FUNCTION: LEGO1 0x10001fe0 // FUNCTION: LEGO1 0x10001fe0
virtual void MulVectorImpl(float* p_value) virtual void MulImpl(float* p_value)
{ {
m_data[0] *= p_value[0]; m_data[0] *= p_value[0];
m_data[1] *= p_value[1]; m_data[1] *= p_value[1];
} // vtable+0x10 } // vtable+0x10
// FUNCTION: LEGO1 0x10002020 // FUNCTION: LEGO1 0x10002000
virtual void DivScalarImpl(float* p_value) virtual void MulImpl(const float& p_value)
{ {
m_data[0] /= *p_value; m_data[0] *= p_value;
m_data[1] /= *p_value; m_data[1] *= p_value;
} // vtable+0x0c
// FUNCTION: LEGO1 0x10002020
virtual void DivImpl(const float& p_value)
{
m_data[0] /= p_value;
m_data[1] /= p_value;
} // vtable+0x14 } // vtable+0x14
// FUNCTION: LEGO1 0x10002040 // FUNCTION: LEGO1 0x10002040
@ -110,7 +107,7 @@ class Vector2 {
if (sq > 0.0f) { if (sq > 0.0f) {
float root = sqrt(sq); float root = sqrt(sq);
if (root > 0.0f) { if (root > 0.0f) {
DivScalarImpl(&root); DivImpl(root);
return 0; return 0;
} }
} }
@ -135,16 +132,16 @@ class Vector2 {
virtual void Sub(const Vector2& p_other) { SubImpl((float*) p_other.m_data); } // vtable+0x54 virtual void Sub(const Vector2& p_other) { SubImpl((float*) p_other.m_data); } // vtable+0x54
// FUNCTION: LEGO1 0x10002210 // FUNCTION: LEGO1 0x10002210
virtual void Mul(float* p_other) { MulVectorImpl(p_other); } // vtable+0x64 virtual void Mul(float* p_other) { MulImpl(p_other); } // vtable+0x64
// FUNCTION: LEGO1 0x10002220 // FUNCTION: LEGO1 0x10002220
virtual void Mul(Vector2* p_other) { MulVectorImpl(p_other->m_data); } // vtable+0x60 virtual void Mul(Vector2* p_other) { MulImpl(p_other->m_data); } // vtable+0x60
// FUNCTION: LEGO1 0x10002230 // FUNCTION: LEGO1 0x10002230
virtual void Mul(const float& p_value) { MulScalarImpl((float*) &p_value); } // vtable+0x5c virtual void Mul(const float& p_value) { MulImpl(p_value); } // vtable+0x5c
// FUNCTION: LEGO1 0x10002240 // FUNCTION: LEGO1 0x10002240
virtual void Div(const float& p_value) { DivScalarImpl((float*) &p_value); } // vtable+0x68 virtual void Div(const float& p_value) { DivImpl(p_value); } // vtable+0x68
public: public:
// FUNCTION: LEGO1 0x10002250 // FUNCTION: LEGO1 0x10002250
@ -279,28 +276,28 @@ class Vector3 : public Vector2 {
m_data[2] -= p_value[2]; m_data[2] -= p_value[2];
} // vtable+0x08 } // vtable+0x08
// FUNCTION: LEGO1 0x10003b20
void MulScalarImpl(float* p_value) override
{
m_data[0] *= *p_value;
m_data[1] *= *p_value;
m_data[2] *= *p_value;
} // vtable+0x0c
// FUNCTION: LEGO1 0x10003af0 // FUNCTION: LEGO1 0x10003af0
void MulVectorImpl(float* p_value) override void MulImpl(float* p_value) override
{ {
m_data[0] *= p_value[0]; m_data[0] *= p_value[0];
m_data[1] *= p_value[1]; m_data[1] *= p_value[1];
m_data[2] *= p_value[2]; m_data[2] *= p_value[2];
} // vtable+0x10 } // vtable+0x10
// FUNCTION: LEGO1 0x10003b50 // FUNCTION: LEGO1 0x10003b20
void DivScalarImpl(float* p_value) override void MulImpl(const float& p_value) override
{ {
m_data[0] /= *p_value; m_data[0] *= p_value;
m_data[1] /= *p_value; m_data[1] *= p_value;
m_data[2] /= *p_value; m_data[2] *= p_value;
} // vtable+0x0c
// FUNCTION: LEGO1 0x10003b50
void DivImpl(const float& p_value) override
{
m_data[0] /= p_value;
m_data[1] /= p_value;
m_data[2] /= p_value;
} // vtable+0x14 } // vtable+0x14
// FUNCTION: LEGO1 0x10003b80 // FUNCTION: LEGO1 0x10003b80
@ -392,17 +389,8 @@ class Vector4 : public Vector3 {
m_data[3] -= p_value[3]; m_data[3] -= p_value[3];
} // vtable+0x08 } // vtable+0x08
// FUNCTION: LEGO1 0x10002970
void MulScalarImpl(float* p_value) override
{
m_data[0] *= *p_value;
m_data[1] *= *p_value;
m_data[2] *= *p_value;
m_data[3] *= *p_value;
} // vtable+0x0c
// FUNCTION: LEGO1 0x10002930 // FUNCTION: LEGO1 0x10002930
void MulVectorImpl(float* p_value) override void MulImpl(float* p_value) override
{ {
m_data[0] *= p_value[0]; m_data[0] *= p_value[0];
m_data[1] *= p_value[1]; m_data[1] *= p_value[1];
@ -410,13 +398,22 @@ class Vector4 : public Vector3 {
m_data[3] *= p_value[3]; m_data[3] *= p_value[3];
} // vtable+0x10 } // vtable+0x10
// FUNCTION: LEGO1 0x100029b0 // FUNCTION: LEGO1 0x10002970
void DivScalarImpl(float* p_value) override void MulImpl(const float& p_value) override
{ {
m_data[0] /= *p_value; m_data[0] *= p_value;
m_data[1] /= *p_value; m_data[1] *= p_value;
m_data[2] /= *p_value; m_data[2] *= p_value;
m_data[3] /= *p_value; m_data[3] *= p_value;
} // vtable+0x0c
// FUNCTION: LEGO1 0x100029b0
void DivImpl(const float& p_value) override
{
m_data[0] /= p_value;
m_data[1] /= p_value;
m_data[2] /= p_value;
m_data[3] /= p_value;
} // vtable+0x14 } // vtable+0x14
// FUNCTION: LEGO1 0x100029f0 // FUNCTION: LEGO1 0x100029f0
@ -464,9 +461,10 @@ inline int Vector4::NormalizeQuaternion()
float theta = v[3] * 0.5f; float theta = v[3] * 0.5f;
v[3] = cos(theta); v[3] = cos(theta);
magnitude = sin(theta) / sqrt(magnitude); magnitude = sin(theta) / sqrt(magnitude);
Vector3::MulScalarImpl(&magnitude); Vector3::MulImpl(magnitude);
return 0; return 0;
} }
return -1; return -1;
} }