mirror of
https://github.com/isledecomp/isle.git
synced 2025-12-10 08:03:13 +00:00
Implement LegoPathController::FUN_10048310 (#1192)
* WIP * Rename * Fix * More WIP * WIP * WIP * Fix * Annotations * Add more annotations, improve match * Raise max functions
This commit is contained in:
committed by
GitHub
parent
6ca54824e6
commit
4d8098a6c2
@@ -11,10 +11,10 @@
|
||||
class Act2Actor : public LegoAnimActor {
|
||||
public:
|
||||
struct UnknownListStructure {
|
||||
MxFloat m_unk0x00[3]; // 0x00
|
||||
MxFloat m_unk0x0c[3]; // 0x0c
|
||||
const char* m_unk0x18; // 0x18
|
||||
undefined m_unk0x1c; // 0x1c
|
||||
MxFloat m_position[3]; // 0x00
|
||||
MxFloat m_direction[3]; // 0x0c
|
||||
const char* m_boundary; // 0x18
|
||||
undefined m_unk0x1c; // 0x1c
|
||||
};
|
||||
|
||||
Act2Actor();
|
||||
|
||||
@@ -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
|
||||
@@ -119,13 +121,13 @@ public:
|
||||
);
|
||||
MxResult FUN_10048310(
|
||||
LegoPathEdgeContainer* p_grec,
|
||||
const Vector3& p_position,
|
||||
const Vector3& p_direction,
|
||||
LegoPathBoundary* p_boundary1,
|
||||
const Vector3& p_param5,
|
||||
const Vector3& p_param6,
|
||||
LegoPathBoundary* p_boundary2,
|
||||
MxBool p_param8,
|
||||
const Vector3& p_oldPosition,
|
||||
const Vector3& p_oldDirection,
|
||||
LegoPathBoundary* p_oldBoundary,
|
||||
const Vector3& p_newPosition,
|
||||
const Vector3& p_newDirection,
|
||||
LegoPathBoundary* p_newBoundary,
|
||||
LegoU8 p_mask,
|
||||
MxFloat* p_param9
|
||||
);
|
||||
|
||||
@@ -182,6 +184,15 @@ private:
|
||||
// TEMPLATE: LEGO1 0x100451a0
|
||||
// _Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Kfn,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::~_Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathControl
|
||||
|
||||
// TEMPLATE: LEGO1 0x10045270
|
||||
// _Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Kfn,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::iterator::_Inc
|
||||
|
||||
// TEMPLATE: LEGO1 0x100452b0
|
||||
// _Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Kfn,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::erase
|
||||
|
||||
// TEMPLATE: LEGO1 0x10045700
|
||||
// _Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Kfn,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Erase
|
||||
|
||||
// TEMPLATE: LEGO1 0x100457e0
|
||||
// Set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare>::~Set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare>
|
||||
|
||||
@@ -221,14 +232,74 @@ private:
|
||||
// SYNTHETIC: LEGO1 0x10047ae0
|
||||
// LegoUnknown100db7f4::~LegoUnknown100db7f4
|
||||
|
||||
// TEMPLATE: LEGO1 0x10048f00
|
||||
// list<LegoBoundaryEdge,allocator<LegoBoundaryEdge> >::begin
|
||||
|
||||
// TEMPLATE: LEGO1 0x10048f10
|
||||
// list<LegoBoundaryEdge,allocator<LegoBoundaryEdge> >::insert
|
||||
|
||||
// TEMPLATE: LEGO1 0x10048f70
|
||||
// list<LegoBoundaryEdge,allocator<LegoBoundaryEdge> >::erase
|
||||
|
||||
// TEMPLATE: LEGO1 0x10048fc0
|
||||
// _Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Kfn,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,Le
|
||||
|
||||
// TEMPLATE: LEGO1 0x10049160
|
||||
// ?erase@?$_Tree@PAULegoPathCtrlEdge@@PAU1@U_Kfn@?$set@PAULegoPathCtrlEdge@@ULegoPathCtrlEdgeCompare@@V?$allocator@PAULegoPathCtrlEdge@@@@@@ULegoPathCtrlEdgeCompare@@V?$allocator@PAULegoPathCtrlEdge@@@@@@QAEIABQAULegoPathCtrlEdge@@@Z
|
||||
|
||||
// TEMPLATE: LEGO1 0x10049290
|
||||
// _Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Kfn,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::find
|
||||
|
||||
// TEMPLATE: LEGO1 0x100492f0
|
||||
// _Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Kfn,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Copy
|
||||
|
||||
// TEMPLATE: LEGO1 0x10049370
|
||||
// _Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Kfn,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Ubound
|
||||
|
||||
// TEMPLATE: LEGO1 0x10049410
|
||||
// list<LegoBEWithFloat,allocator<LegoBEWithFloat> >::insert
|
||||
|
||||
// TEMPLATE: LEGO1 0x10049470
|
||||
// list<LegoBEWithFloat,allocator<LegoBEWithFloat> >::_Buynode
|
||||
|
||||
// TEMPLATE: LEGO1 0x100494a0
|
||||
// _Tree<LegoBEWithFloat *,LegoBEWithFloat *,multiset<LegoBEWithFloat *,LegoBEWithFloatComparator,allocator<LegoBEWithFloat *> >::_Kfn,LegoBEWithFloatComparator,allocator<LegoBEWithFloat *> >::iterator::_Inc
|
||||
|
||||
// TEMPLATE: LEGO1 0x100495b0
|
||||
// _Tree<LegoBEWithFloat *,LegoBEWithFloat *,multiset<LegoBEWithFloat *,LegoBEWithFloatComparator,allocator<LegoBEWithFloat *> >::_Kfn,LegoBEWithFloatComparator,allocator<LegoBEWithFloat *> >::insert
|
||||
|
||||
// TEMPLATE: LEGO1 0x10049840
|
||||
// _Tree<LegoBEWithFloat *,LegoBEWithFloat *,multiset<LegoBEWithFloat *,LegoBEWithFloatComparator,allocator<LegoBEWithFloat *> >::_Kfn,LegoBEWithFloatComparator,allocator<LegoBEWithFloat *> >::iterator::_Dec
|
||||
|
||||
// TEMPLATE: LEGO1 0x10049890
|
||||
// _Tree<LegoBEWithFloat *,LegoBEWithFloat *,multiset<LegoBEWithFloat *,LegoBEWithFloatComparator,allocator<LegoBEWithFloat *> >::_Kfn,LegoBEWithFloatComparator,allocator<LegoBEWithFloat *> >::erase
|
||||
|
||||
// TEMPLATE: LEGO1 0x10049cf0
|
||||
// _Tree<LegoBEWithFloat *,LegoBEWithFloat *,multiset<LegoBEWithFloat *,LegoBEWithFloatComparator,allocator<LegoBEWithFloat *> >::_Kfn,LegoBEWithFloatComparator,allocator<LegoBEWithFloat *> >::_Buynode
|
||||
|
||||
// TEMPLATE: LEGO1 0x10049d50
|
||||
// _Tree<LegoBEWithFloat *,LegoBEWithFloat *,multiset<LegoBEWithFloat *,LegoBEWithFloatComparator,allocator<LegoBEWithFloat *> >::_Kfn,LegoBEWithFloatComparator,allocator<LegoBEWithFloat *> >::_Init
|
||||
|
||||
// TEMPLATE: LEGO1 0x10049e00
|
||||
// _Tree<LegoBEWithFloat *,LegoBEWithFloat *,multiset<LegoBEWithFloat *,LegoBEWithFloatComparator,allocator<LegoBEWithFloat *> >::_Kfn,LegoBEWithFloatComparator,allocator<LegoBEWithFloat *> >::_Insert
|
||||
|
||||
// TEMPLATE: LEGO1 0x1004a090
|
||||
// _Tree<LegoBEWithFloat *,LegoBEWithFloat *,multiset<LegoBEWithFloat *,LegoBEWithFloatComparator,allocator<LegoBEWithFloat *> >::_Kfn,LegoBEWithFloatComparator,allocator<LegoBEWithFloat *> >::_Lrotate
|
||||
|
||||
// TEMPLATE: LEGO1 0x1004a0f0
|
||||
// _Tree<LegoBEWithFloat *,LegoBEWithFloat *,multiset<LegoBEWithFloat *,LegoBEWithFloatComparator,allocator<LegoBEWithFloat *> >::_Kfn,LegoBEWithFloatComparator,allocator<LegoBEWithFloat *> >::_Rrotate
|
||||
|
||||
// TEMPLATE: LEGO1 0x1004a760
|
||||
// _Construct
|
||||
|
||||
// TEMPLATE: LEGO1 0x1004a780
|
||||
// _Construct
|
||||
|
||||
// GLOBAL: LEGO1 0x100f4360
|
||||
// _Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Kfn,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Nil
|
||||
|
||||
// GLOBAL: LEGO1 0x100f4364
|
||||
// _Tree<LegoBEWithFloat *,LegoBEWithFloat *,multiset<LegoBEWithFloat *,LegoBEWithFloatComparator,allocator<LegoBEWithFloat *> >::_Kfn,LegoBEWithFloatComparator,allocator<LegoBEWithFloat *> >::_Nil
|
||||
// clang-format on
|
||||
|
||||
#endif // LEGOPATHCONTROLLER_H
|
||||
|
||||
@@ -6,17 +6,73 @@
|
||||
#include "mxtypes.h"
|
||||
|
||||
class LegoPathBoundary;
|
||||
struct LegoUnknown100db7f4;
|
||||
struct LegoPathCtrlEdge;
|
||||
|
||||
// SIZE 0x08
|
||||
struct LegoBoundaryEdge {
|
||||
LegoUnknown100db7f4* m_edge; // 0x00
|
||||
LegoBoundaryEdge() {}
|
||||
|
||||
// FUNCTION: BETA10 0x100bd620
|
||||
LegoBoundaryEdge(LegoPathCtrlEdge* p_edge, LegoPathBoundary* p_boundary)
|
||||
{
|
||||
m_edge = p_edge;
|
||||
m_boundary = p_boundary;
|
||||
}
|
||||
|
||||
LegoPathCtrlEdge* m_edge; // 0x00
|
||||
LegoPathBoundary* m_boundary; // 0x04
|
||||
|
||||
int operator==(LegoBoundaryEdge) const { return 0; }
|
||||
int operator<(LegoBoundaryEdge) const { return 0; }
|
||||
};
|
||||
|
||||
// SIZE 0x10
|
||||
struct LegoBEWithFloat {
|
||||
LegoBEWithFloat()
|
||||
{
|
||||
m_edge = NULL;
|
||||
m_boundary = NULL;
|
||||
m_next = NULL;
|
||||
m_unk0x0c = 0.0f;
|
||||
}
|
||||
|
||||
// FUNCTION: BETA10 0x100bd9a0
|
||||
LegoBEWithFloat(LegoPathCtrlEdge* p_edge, LegoPathBoundary* p_boundary, MxFloat p_unk0x0c)
|
||||
{
|
||||
m_edge = p_edge;
|
||||
m_boundary = p_boundary;
|
||||
m_next = NULL;
|
||||
m_unk0x0c = p_unk0x0c;
|
||||
}
|
||||
|
||||
// FUNCTION: BETA10 0x100bd9f0
|
||||
LegoBEWithFloat(LegoPathCtrlEdge* p_edge, LegoPathBoundary* p_boundary, LegoBEWithFloat* 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
|
||||
LegoBEWithFloat* m_next; // 0x08
|
||||
MxFloat m_unk0x0c; // 0x0c
|
||||
|
||||
int operator==(LegoBEWithFloat) const { return 0; }
|
||||
int operator<(LegoBEWithFloat) const { return 0; }
|
||||
};
|
||||
|
||||
struct LegoBEWithFloatComparator {
|
||||
// FUNCTION: BETA10 0x100bef80
|
||||
bool operator()(LegoBEWithFloat* const& p_a, LegoBEWithFloat* const& p_b) const
|
||||
{
|
||||
return p_a->m_unk0x0c < p_b->m_unk0x0c;
|
||||
}
|
||||
};
|
||||
|
||||
typedef multiset<LegoBEWithFloat*, LegoBEWithFloatComparator> LegoBEWithFloatSet;
|
||||
|
||||
// SIZE 0x3c
|
||||
struct LegoPathEdgeContainer : public list<LegoBoundaryEdge> {
|
||||
enum {
|
||||
@@ -30,9 +86,10 @@ struct LegoPathEdgeContainer : public list<LegoBoundaryEdge> {
|
||||
m_flags = 0;
|
||||
}
|
||||
|
||||
void SetBit1(MxU32 p_flag)
|
||||
// FUNCTION: BETA10 0x100bd660
|
||||
void SetBit1(MxU32 p_set)
|
||||
{
|
||||
if (p_flag) {
|
||||
if (p_set) {
|
||||
m_flags |= c_bit1;
|
||||
}
|
||||
else {
|
||||
@@ -40,10 +97,11 @@ struct LegoPathEdgeContainer : public list<LegoBoundaryEdge> {
|
||||
}
|
||||
}
|
||||
|
||||
// FUNCTION: BETA10 0x1001cb50
|
||||
MxU32 GetBit1() { return m_flags & c_bit1; }
|
||||
|
||||
Mx3DPointFloat m_unk0x0c; // 0x0c
|
||||
Mx3DPointFloat m_unk0x20; // 0x20
|
||||
Mx3DPointFloat m_position; // 0x0c
|
||||
Mx3DPointFloat m_direction; // 0x20
|
||||
LegoPathBoundary* m_boundary; // 0x34
|
||||
MxU8 m_flags; // 0x38
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user