mirror of
https://github.com/isledecomp/isle.git
synced 2025-10-26 01:44:19 +00:00
Fix Vector2/Vector3 order (#1272)
* Fix Vector2/Vector3 order * Refactor vector classes to be const and reference param consistent * Add BETA10 annotations and fixes
This commit is contained in:
committed by
GitHub
parent
7c41ff4569
commit
c2c9c75f1a
@@ -138,7 +138,7 @@ MxResult LegoExtraActor::FUN_1002aae0()
|
||||
Vector3 positionRef(m_unk0xec[3]);
|
||||
|
||||
dirRef *= -1.0f;
|
||||
rightRef.EqualsCross(&upRef, &dirRef);
|
||||
rightRef.EqualsCross(upRef, dirRef);
|
||||
|
||||
if (m_boundary == m_destEdge->m_faceA) {
|
||||
m_boundary = (LegoPathBoundary*) m_destEdge->m_faceB;
|
||||
@@ -191,9 +191,10 @@ inline void LegoExtraActor::FUN_1002ad8a()
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1002aba0
|
||||
// FUNCTION: BETA10 0x1008114a
|
||||
MxResult LegoExtraActor::HitActor(LegoPathActor* p_actor, MxBool p_bool)
|
||||
{
|
||||
if (p_actor->GetActorState() != c_initial || m_actorState != c_initial) {
|
||||
if (p_actor->GetActorState() != c_initial || GetActorState() != c_initial) {
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
@@ -222,7 +223,7 @@ MxResult LegoExtraActor::HitActor(LegoPathActor* p_actor, MxBool p_bool)
|
||||
for (MxS32 i = 0; i < m_boundary->GetNumEdges(); i++) {
|
||||
Mx4DPointFloat* normal = m_boundary->GetEdgeNormal(i);
|
||||
|
||||
if (positionRef.Dot(normal, &positionRef) + (*normal)[3] < -0.001) {
|
||||
if (positionRef.Dot(*normal, positionRef) + normal->index_operator(3) < -0.001) {
|
||||
b = TRUE;
|
||||
break;
|
||||
}
|
||||
@@ -232,41 +233,34 @@ MxResult LegoExtraActor::HitActor(LegoPathActor* p_actor, MxBool p_bool)
|
||||
m_roi->FUN_100a58f0(matrix2);
|
||||
m_roi->VTable0x14();
|
||||
FUN_1002ad8a();
|
||||
assert(m_roi);
|
||||
assert(SoundManager()->GetCacheSoundManager());
|
||||
SoundManager()->GetCacheSoundManager()->Play("crash5", m_roi->GetName(), FALSE);
|
||||
m_scheduledTime = Timer()->GetTime() + m_disAnim->GetDuration();
|
||||
m_prevWorldSpeed = m_worldSpeed;
|
||||
m_prevWorldSpeed = GetWorldSpeed();
|
||||
VTable0xc4();
|
||||
SetWorldSpeed(0);
|
||||
m_whichAnim = 1;
|
||||
m_actorState = c_one | c_noCollide;
|
||||
SetActorState(c_one | c_noCollide);
|
||||
}
|
||||
}
|
||||
|
||||
if (b) {
|
||||
LegoROI* roi = m_roi;
|
||||
LegoROI* roi = GetROI();
|
||||
assert(roi);
|
||||
SoundManager()->GetCacheSoundManager()->Play("crash5", m_roi->GetName(), FALSE);
|
||||
VTable0xc4();
|
||||
m_actorState = c_two | c_noCollide;
|
||||
SetActorState(c_two | c_noCollide);
|
||||
Mx3DPointFloat dir = p_actor->GetWorldDirection();
|
||||
MxMatrix matrix3 = MxMatrix(roi->GetLocal2World());
|
||||
Vector3 positionRef(matrix3[3]);
|
||||
positionRef += g_unk0x10104c18;
|
||||
roi->FUN_100a58f0(matrix3);
|
||||
|
||||
#ifdef COMPAT_MODE
|
||||
float dotX, dotZ;
|
||||
{
|
||||
Mx3DPointFloat tmp(1.0f, 0, 0);
|
||||
dotX = dir.Dot(&dir, &tmp);
|
||||
Mx3DPointFloat tmp2(0, 0, 1.0f);
|
||||
dotZ = dir.Dot(&dir, &tmp2);
|
||||
}
|
||||
#else
|
||||
float dotX = dir.Dot(&dir, &Mx3DPointFloat(1.0f, 0, 0));
|
||||
float dotZ = dir.Dot(&dir, &Mx3DPointFloat(0, 0, 1.0f));
|
||||
#endif
|
||||
float dotX = dir.Dot(dir, Mx3DPointFloat(1.0f, 0, 0));
|
||||
float dotZ = dir.Dot(dir, Mx3DPointFloat(0, 0, 1.0f));
|
||||
|
||||
if (abs(dotZ) < abs(dotX)) {
|
||||
if (fabs(dotZ) < fabs(dotX)) {
|
||||
m_axis = dotX > 0.0 ? e_posz : e_negz;
|
||||
}
|
||||
else {
|
||||
@@ -463,9 +457,9 @@ MxU32 LegoExtraActor::VTable0x6c(
|
||||
Mx3DPointFloat local54(p_v1);
|
||||
|
||||
local54 -= local60;
|
||||
float local1c = p_v2.Dot(&p_v2, &p_v2);
|
||||
float local24 = p_v2.Dot(&p_v2, &local54) * 2.0f;
|
||||
float local20 = local54.Dot(&local54, &local54);
|
||||
float local1c = p_v2.Dot(p_v2, p_v2);
|
||||
float local24 = p_v2.Dot(p_v2, local54) * 2.0f;
|
||||
float local20 = local54.Dot(local54, local54);
|
||||
|
||||
if (m_unk0x15 != 0 && local20 < 10.0f) {
|
||||
return 0;
|
||||
|
||||
@@ -142,11 +142,11 @@ MxResult LegoPathActor::VTable0x88(
|
||||
dir *= -1.0f;
|
||||
}
|
||||
|
||||
right.EqualsCross(&up, &dir);
|
||||
right.EqualsCross(up, dir);
|
||||
m_roi->UpdateTransformationRelativeToParent(matrix);
|
||||
|
||||
if (!m_cameraFlag || !m_userNavFlag) {
|
||||
p5.EqualsCross(p_boundary->GetUnknown0x14(), &p3);
|
||||
p5.EqualsCross(*p_boundary->GetUnknown0x14(), p3);
|
||||
p5.Unitize();
|
||||
|
||||
if (VTable0x80(p1, p4, p2, p5) == SUCCESS) {
|
||||
@@ -208,11 +208,11 @@ MxResult LegoPathActor::VTable0x84(
|
||||
dir *= -1.0f;
|
||||
}
|
||||
|
||||
right.EqualsCross(&up, &dir);
|
||||
right.EqualsCross(up, dir);
|
||||
m_roi->UpdateTransformationRelativeToParent(matrix);
|
||||
|
||||
if (!m_cameraFlag || !m_userNavFlag) {
|
||||
p5.EqualsCross(p_boundary->GetUnknown0x14(), &p3);
|
||||
p5.EqualsCross(*p_boundary->GetUnknown0x14(), p3);
|
||||
p5.Unitize();
|
||||
|
||||
if (VTable0x80(p_p1, p_p4, p2, p5) == SUCCESS) {
|
||||
@@ -308,9 +308,9 @@ MxS32 LegoPathActor::VTable0x8c(float p_time, Matrix4& p_transform)
|
||||
|
||||
dir = p1;
|
||||
up = *m_boundary->GetUnknown0x14();
|
||||
right.EqualsCross(&up, &dir);
|
||||
right.EqualsCross(up, dir);
|
||||
right.Unitize();
|
||||
dir.EqualsCross(&right, &up);
|
||||
dir.EqualsCross(right, up);
|
||||
pos = p2;
|
||||
return result;
|
||||
}
|
||||
@@ -636,7 +636,7 @@ MxResult LegoPathActor::VTable0x9c()
|
||||
LERP3(local34, v1, v2, m_unk0xe4);
|
||||
|
||||
m_destEdge->FUN_1002ddc0(*m_boundary, local78);
|
||||
local48.EqualsCross(m_boundary->GetUnknown0x14(), &local78);
|
||||
local48.EqualsCross(*m_boundary->GetUnknown0x14(), local78);
|
||||
local48.Unitize();
|
||||
}
|
||||
|
||||
@@ -646,10 +646,10 @@ MxResult LegoPathActor::VTable0x9c()
|
||||
|
||||
upRef = *m_boundary->GetUnknown0x14();
|
||||
|
||||
rightRef.EqualsCross(&upRef, &dirRef);
|
||||
rightRef.EqualsCross(upRef, dirRef);
|
||||
rightRef.Unitize();
|
||||
|
||||
dirRef.EqualsCross(&rightRef, &upRef);
|
||||
dirRef.EqualsCross(rightRef, upRef);
|
||||
dirRef.Unitize();
|
||||
|
||||
Mx3DPointFloat localc0(m_unk0xec[3]);
|
||||
|
||||
@@ -54,11 +54,11 @@ void LegoPathBoundary::FUN_100575b0(Vector3& p_point1, Vector3& p_point2, LegoPa
|
||||
|
||||
v = p_point1;
|
||||
v -= *ccwV;
|
||||
float dot1 = v.Dot(&v, m_unk0x50);
|
||||
float dot1 = v.Dot(v, *m_unk0x50);
|
||||
|
||||
v = p_point2;
|
||||
v -= *ccwV;
|
||||
float dot2 = v.Dot(&v, m_unk0x50);
|
||||
float dot2 = v.Dot(v, *m_unk0x50);
|
||||
|
||||
if (dot2 > dot1) {
|
||||
for (MxS32 i = 0; i < m_numTriggers; i++) {
|
||||
@@ -197,7 +197,7 @@ MxU32 LegoPathBoundary::Intersect(
|
||||
for (MxS32 i = 0; i < m_numEdges; i++) {
|
||||
LegoUnknown100db7f4* edge = (LegoUnknown100db7f4*) m_edges[i];
|
||||
|
||||
if (p_point2.Dot(&m_edgeNormals[i], &p_point2) + m_edgeNormals[i][3] <= -1e-07) {
|
||||
if (p_point2.Dot(m_edgeNormals[i], p_point2) + m_edgeNormals[i][3] <= -1e-07) {
|
||||
if (local10 == 0) {
|
||||
local10 = 1;
|
||||
vec = p_point2;
|
||||
@@ -212,9 +212,9 @@ MxU32 LegoPathBoundary::Intersect(
|
||||
vec /= len;
|
||||
}
|
||||
|
||||
float dot = vec.Dot(&vec, &m_edgeNormals[i]);
|
||||
float dot = vec.Dot(vec, m_edgeNormals[i]);
|
||||
if (dot != 0.0f) {
|
||||
float local34 = (-m_edgeNormals[i][3] - p_point1.Dot(&p_point1, &m_edgeNormals[i])) / dot;
|
||||
float local34 = (-m_edgeNormals[i][3] - p_point1.Dot(p_point1, m_edgeNormals[i])) / dot;
|
||||
|
||||
if (local34 >= -0.001 && local34 <= len && (e == NULL || local34 < localc)) {
|
||||
e = edge;
|
||||
@@ -242,7 +242,7 @@ MxU32 LegoPathBoundary::Intersect(
|
||||
|
||||
e->FUN_1002ddc0(*this, local70);
|
||||
|
||||
float local58 = local50.Dot(&local50, &local70);
|
||||
float local58 = local50.Dot(local50, local70);
|
||||
LegoUnknown100db7f4* local54 = NULL;
|
||||
|
||||
if (local58 < 0.0f) {
|
||||
@@ -252,7 +252,7 @@ MxU32 LegoPathBoundary::Intersect(
|
||||
local88 = (LegoUnknown100db7f4*) local88->GetClockwiseEdge(*this)) {
|
||||
local88->FUN_1002ddc0(*this, local84);
|
||||
|
||||
if (local84.Dot(&local84, &local70) <= 0.9) {
|
||||
if (local84.Dot(local84, local70) <= 0.9) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -260,7 +260,7 @@ MxU32 LegoPathBoundary::Intersect(
|
||||
Mx3DPointFloat locala4(p_point3);
|
||||
locala4 -= *local90;
|
||||
|
||||
float local8c = locala4.Dot(&locala4, &local84);
|
||||
float local8c = locala4.Dot(locala4, local84);
|
||||
|
||||
if (local8c > local58 && local8c < local88->m_unk0x3c) {
|
||||
local54 = local88;
|
||||
@@ -279,7 +279,7 @@ MxU32 LegoPathBoundary::Intersect(
|
||||
locala8 = (LegoUnknown100db7f4*) locala8->GetCounterclockwiseEdge(*this)) {
|
||||
locala8->FUN_1002ddc0(*this, localbc);
|
||||
|
||||
if (localbc.Dot(&localbc, &local70) <= 0.9) {
|
||||
if (localbc.Dot(localbc, local70) <= 0.9) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -287,7 +287,7 @@ MxU32 LegoPathBoundary::Intersect(
|
||||
Mx3DPointFloat locald8(p_point3);
|
||||
locald8 -= *localc4;
|
||||
|
||||
float localc0 = locald8.Dot(&locald8, &localbc);
|
||||
float localc0 = locald8.Dot(locald8, localbc);
|
||||
|
||||
if (localc0 < local58 && localc0 >= 0.0f) {
|
||||
local54 = locala8;
|
||||
|
||||
@@ -256,7 +256,7 @@ MxResult LegoPathController::PlaceActor(
|
||||
for (j = 0; j < b.GetNumEdges(); j++) {
|
||||
Mx4DPointFloat normal(*b.GetEdgeNormal(j));
|
||||
|
||||
if (p_position.Dot(&p_position, &normal) + normal[3] < 0.0f) {
|
||||
if (p_position.Dot(p_position, normal) + normal[3] < 0.0f) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -282,7 +282,7 @@ MxResult LegoPathController::PlaceActor(
|
||||
Mx3DPointFloat vec;
|
||||
|
||||
if (((LegoUnknown100db7f4*) edge->GetClockwiseEdge(*boundary))->FUN_1002ddc0(*boundary, vec) == SUCCESS &&
|
||||
vec.Dot(&vec, &p_direction) < 0.0f) {
|
||||
vec.Dot(vec, p_direction) < 0.0f) {
|
||||
edge =
|
||||
(LegoUnknown100db7f4*) edge->GetCounterclockwiseEdge(*boundary)->GetCounterclockwiseEdge(*boundary);
|
||||
}
|
||||
@@ -949,7 +949,7 @@ MxS32 LegoPathController::FUN_1004a240(
|
||||
p_v1 *= p_f1;
|
||||
p_v1 += *p_edge->CWVertex(*p_boundary);
|
||||
p_edge->FUN_1002ddc0(*p_boundary, vec);
|
||||
p_v2.EqualsCross(p_boundary->GetUnknown0x14(), &vec);
|
||||
p_v2.EqualsCross(*p_boundary->GetUnknown0x14(), vec);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -974,14 +974,14 @@ MxResult LegoPathController::FUN_1004a380(
|
||||
|
||||
LegoPathBoundary* b = &m_boundaries[i];
|
||||
Mx4DPointFloat* unk0x14 = b->GetUnknown0x14();
|
||||
float local28 = p_param3[0].Dot(&p_param3[0], unk0x14);
|
||||
float local28 = p_param3[0].Dot(p_param3[0], *unk0x14);
|
||||
|
||||
if (local28 < 0.001 && local28 > -0.001) {
|
||||
continue;
|
||||
}
|
||||
|
||||
float local2c = p_param3[1].Dot(&p_param3[1], unk0x14);
|
||||
float local34 = p_param3[2].Dot(&p_param3[2], unk0x14) + unk0x14->index_operator(3);
|
||||
float local2c = p_param3[1].Dot(p_param3[1], *unk0x14);
|
||||
float local34 = p_param3[2].Dot(p_param3[2], *unk0x14) + unk0x14->index_operator(3);
|
||||
float local3c = local2c * local2c - local34 * local28 * 4.0f;
|
||||
|
||||
if (local3c < -0.001) {
|
||||
@@ -1022,7 +1022,7 @@ MxResult LegoPathController::FUN_1004a380(
|
||||
for (j = b->GetNumEdges() - 1; j >= 0; j--) {
|
||||
Mx4DPointFloat* local60 = b->GetEdgeNormal(j);
|
||||
|
||||
if (local24.Dot(local60, &local24) + local60->index_operator(3) < -0.001) {
|
||||
if (local24.Dot(*local60, local24) + local60->index_operator(3) < -0.001) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1031,7 +1031,7 @@ MxResult LegoPathController::FUN_1004a380(
|
||||
Mx3DPointFloat local74(p_param1);
|
||||
local74 -= local24;
|
||||
|
||||
if (local74.Dot(&local74, unk0x14) >= 0.0f) {
|
||||
if (local74.Dot(local74, *unk0x14) >= 0.0f) {
|
||||
p_param5 = local38;
|
||||
p_boundary = b;
|
||||
local8 = FALSE;
|
||||
|
||||
Reference in New Issue
Block a user