mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-21 07:11:16 +00:00
WIP
This commit is contained in:
parent
6da5b39430
commit
f4c124ea86
@ -32,7 +32,7 @@ struct LegoBoundaryEdgeWithFloat {
|
|||||||
{
|
{
|
||||||
m_edge = NULL;
|
m_edge = NULL;
|
||||||
m_boundary = NULL;
|
m_boundary = NULL;
|
||||||
m_unk0x08 = 0;
|
m_next = NULL;
|
||||||
m_unk0x0c = 0.0f;
|
m_unk0x0c = 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,14 +41,28 @@ struct LegoBoundaryEdgeWithFloat {
|
|||||||
{
|
{
|
||||||
m_edge = p_edge;
|
m_edge = p_edge;
|
||||||
m_boundary = p_boundary;
|
m_boundary = p_boundary;
|
||||||
m_unk0x08 = 0;
|
m_next = NULL;
|
||||||
m_unk0x0c = p_unk0x0c;
|
m_unk0x0c = p_unk0x0c;
|
||||||
}
|
}
|
||||||
|
|
||||||
LegoPathCtrlEdge* m_edge; // 0x00
|
// FUNCTION: BETA10 0x100bd9f0
|
||||||
LegoPathBoundary* m_boundary; // 0x04
|
LegoBoundaryEdgeWithFloat(
|
||||||
undefined4 m_unk0x08; // 0x08
|
LegoPathCtrlEdge* p_edge,
|
||||||
MxFloat m_unk0x0c; // 0x0c
|
LegoPathBoundary* p_boundary,
|
||||||
|
LegoBoundaryEdgeWithFloat* p_next,
|
||||||
|
MxFloat p_unk0x0c
|
||||||
|
)
|
||||||
|
{
|
||||||
|
m_edge = p_edge;
|
||||||
|
m_boundary = p_boundary;
|
||||||
|
m_next = p_next;
|
||||||
|
m_unk0x0c = p_unk0x0c;
|
||||||
|
}
|
||||||
|
|
||||||
|
LegoPathCtrlEdge* m_edge; // 0x00
|
||||||
|
LegoPathBoundary* m_boundary; // 0x04
|
||||||
|
LegoBoundaryEdgeWithFloat* m_next; // 0x08
|
||||||
|
MxFloat m_unk0x0c; // 0x0c
|
||||||
|
|
||||||
int operator==(LegoBoundaryEdgeWithFloat) const { return 0; }
|
int operator==(LegoBoundaryEdgeWithFloat) const { return 0; }
|
||||||
int operator<(LegoBoundaryEdgeWithFloat) const { return 0; }
|
int operator<(LegoBoundaryEdgeWithFloat) const { return 0; }
|
||||||
|
|||||||
@ -832,12 +832,35 @@ MxResult LegoPathController::FUN_10048310(
|
|||||||
edgeWithFloat.m_edge = NULL;
|
edgeWithFloat.m_edge = NULL;
|
||||||
|
|
||||||
if (dist < local14) {
|
if (dist < local14) {
|
||||||
// TODO
|
local14 = dist;
|
||||||
|
p_grec->erase(p_grec->begin(), p_grec->end());
|
||||||
|
p_grec->SetBit1(TRUE);
|
||||||
|
|
||||||
|
do {
|
||||||
|
p_grec->push_front(LegoBoundaryEdge(pfs->m_edge, pfs->m_boundary));
|
||||||
|
pfs = pfs->m_next;
|
||||||
|
} while (pfs != NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// TODO
|
for (MxS32 i = 0; i < bOther->GetNumEdges(); i++) {
|
||||||
|
LegoPathCtrlEdge* edge = (LegoPathCtrlEdge*) p_oldBoundary->GetEdges()[i];
|
||||||
|
|
||||||
|
if (edge->GetMask0x03()) {
|
||||||
|
if (pathCtrlEdgeSet.find(edge) != pathCtrlEdgeSet.end()) {
|
||||||
|
shouldRemove = FALSE;
|
||||||
|
|
||||||
|
float dist = edge->DistanceBetweenMidpoints(*e) + (*boundarySetItA)->m_unk0x0c;
|
||||||
|
|
||||||
|
if (dist < local70) {
|
||||||
|
local70 = dist;
|
||||||
|
edgeWithFloat =
|
||||||
|
LegoBoundaryEdgeWithFloat(edge, bOther, *boundarySetItA, dist);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -74,6 +74,19 @@ struct LegoUnknown100db7f4 : public LegoEdge {
|
|||||||
return sqrt(point.LenSquared());
|
return sqrt(point.LenSquared());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FUNCTION: BETA10 0x100bd540
|
||||||
|
LegoFloat DistanceBetweenMidpoints(const LegoUnknown100db7f4& p_other)
|
||||||
|
{
|
||||||
|
Mx3DPointFloat point1(*m_pointA);
|
||||||
|
Mx3DPointFloat point2(*p_other.m_pointA);
|
||||||
|
((Vector3&) point1).Add(*m_pointB);
|
||||||
|
((Vector3&) point1).Mul(0.5f);
|
||||||
|
((Vector3&) point2).Add(*m_pointB);
|
||||||
|
((Vector3&) point2).Mul(0.5f);
|
||||||
|
((Vector3&) point1).Sub(point2);
|
||||||
|
return sqrt(point1.LenSquared());
|
||||||
|
}
|
||||||
|
|
||||||
// FUNCTION: BETA10 0x1001cc60
|
// FUNCTION: BETA10 0x1001cc60
|
||||||
LegoU32 GetMask0x03() { return m_flags & (c_bit1 | c_bit2); }
|
LegoU32 GetMask0x03() { return m_flags & (c_bit1 | c_bit2); }
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user