This commit is contained in:
Christian Semmler 2024-12-05 17:47:01 -07:00
parent 96a33e4c6b
commit 6da5b39430
3 changed files with 51 additions and 6 deletions

View File

@ -22,7 +22,9 @@ class Vector3;
// VTABLE: LEGO1 0x100d7da8
// SIZE 0x40
struct LegoPathCtrlEdge : public LegoUnknown100db7f4 {};
struct LegoPathCtrlEdge : public LegoUnknown100db7f4 {
undefined4 FUN_10048c40(const Vector3&);
};
struct LegoPathCtrlEdgeCompare {
MxU32 operator()(const LegoPathCtrlEdge* p_lhs, const LegoPathCtrlEdge* p_rhs) const

View File

@ -7,20 +7,19 @@
class LegoPathBoundary;
struct LegoPathCtrlEdge;
struct LegoUnknown100db7f4;
// SIZE 0x08
struct LegoBoundaryEdge {
LegoBoundaryEdge() {}
// FUNCTION: BETA10 0x100bd620
LegoBoundaryEdge(LegoUnknown100db7f4* p_edge, LegoPathBoundary* p_boundary)
LegoBoundaryEdge(LegoPathCtrlEdge* p_edge, LegoPathBoundary* p_boundary)
{
m_edge = p_edge;
m_boundary = p_boundary;
}
LegoUnknown100db7f4* m_edge; // 0x00
LegoPathCtrlEdge* m_edge; // 0x00
LegoPathBoundary* m_boundary; // 0x04
int operator==(LegoBoundaryEdge) const { return 0; }

View File

@ -820,7 +820,21 @@ MxResult LegoPathController::FUN_10048310(
if (e->Unknown(*bOther, p_mask)) {
if (bOther == p_newBoundary) {
// TODO
shouldRemove = FALSE;
LegoBoundaryEdgeWithFloat* pfs = *boundarySetItA;
assert(pfs);
float dist = pfs->m_edge->DistanceToMidpoint(p_newPosition) + pfs->m_unk0x0c;
if (dist < local70) {
local70 = dist;
edgeWithFloat.m_edge = NULL;
if (dist < local14) {
// TODO
}
}
}
else {
// TODO
@ -853,12 +867,42 @@ MxResult LegoPathController::FUN_10048310(
return FAILURE;
}
// TODO
if (p_grec->size() != 0) {
LegoPathCtrlEdge* edge = p_grec->front().m_edge;
if (edge->FUN_10048c40(p_oldPosition)) {
p_grec->pop_front();
}
}
if (p_grec->size() != 0) {
LegoPathCtrlEdge* edge = p_grec->back().m_edge;
if (edge->FUN_10048c40(p_newPosition)) {
if (edge->OtherFace(p_grec->back().m_boundary) != NULL &&
edge->OtherFace(p_grec->back().m_boundary)->IsEqual(*p_newBoundary)) {
p_grec->m_boundary = p_grec->back().m_boundary;
p_grec->pop_back();
}
}
}
if (p_param9 != NULL) {
*p_param9 = local14;
}
}
return SUCCESS;
}
// STUB: LEGO1 0x10048c40
// STUB: BETA10 0x1001cc90
undefined4 LegoPathCtrlEdge::FUN_10048c40(const Vector3&)
{
// TODO
return 0;
}
// FUNCTION: LEGO1 0x1004a240
// FUNCTION: BETA10 0x100b9160
MxS32 LegoPathController::FUN_1004a240(