mirror of
https://github.com/isledecomp/isle-portable.git
synced 2026-02-03 12:31:15 +00:00
* Implement/match LegoAnimationManager::FUN_10064b50 (#926) * Implement/match LegoAnimationManager::FUN_10063d10 (#927) * Implement/match LegoAnimationManager::FUN_10064380 (#928) * Implement/match LegoAnimationManager::FUN_10064380 * Fix naming * Revert * Implement/matche LegoAnimationManager::FUN_10064740 and FUN_10064670 (#929) * Implement/match FUN_1003ef00 and related (#931) * Implement/match LegoAnimationManager::FUN_10064120 (#932) * Implement/match LegoAnimationManager::FUN_10064120 * Fix naming * Fix parentheses * Implement LegoAnimationManager::FUN_10064010 (#933) * Implement/match ViewManager::FUN_100a6150 (#934) * Implement/match PlayCamAnim and CameraTriggerFire (#935) * Implement/match PlayCamAnim and CameraTriggerFire * Fix type * Name var * Implement/match LegoAnimationManager::FUN_10063fb0 (#936) * basic name improvements (#930) * basic name improvements * clang-format --------- Co-authored-by: Christian Semmler <mail@csemmler.com> * Implement/match LegoPathBoundary::Intersect (#937) * Implement LegoPathActor::VTable0x68 (#938) * Implement LegoPathActor::VTable0x68 * Fix naming * Implement/match LegoPathBoundary::FUN_100575b0 (#939) * Implement LegoUnknown::FUN_1009a1e0 (#940) * Implement/match LegoPathController::FUN_1004a240 (#941) * Implement LegoPathActor::VTable0x9c (#942) * Implement LegoPathActor::VTable0x9c * Add annotation * Implement/match LegoPathActor::SwitchBoundary (#943) * Implement/match LegoPathActor::SwitchBoundary * Rename var * Implement/match LegoPathStruct (#944) * Implement/match LegoPathStruct * Rename some nums * Consistent naming * Naming * relax regex * Name some functions * Improve naming * Rename * Implement/match LegoPathActor::VTable0xa4 and VTable0xa8 (#945) * Implement/match LegoPathActor::VTable0xa4 * Implement/match LegoPathActor::VTable0xa8 * Name enum constants --------- Co-authored-by: Cameron <25990062+crtdll@users.noreply.github.com>
231 lines
6.6 KiB
C++
231 lines
6.6 KiB
C++
#ifndef MXREGIONLIST_H
|
|
#define MXREGIONLIST_H
|
|
|
|
#include "mxlist.h"
|
|
|
|
// SIZE 0x08
|
|
struct MxRegionLeftRight {
|
|
MxRegionLeftRight(MxS32 p_left, MxS32 p_right)
|
|
{
|
|
m_left = p_left;
|
|
m_right = p_right;
|
|
}
|
|
|
|
MxRegionLeftRight* Clone() { return new MxRegionLeftRight(m_left, m_right); }
|
|
|
|
inline MxS32 GetLeft() { return m_left; }
|
|
inline MxS32 GetRight() { return m_right; }
|
|
|
|
inline void SetLeft(MxS32 p_left) { m_left = p_left; }
|
|
inline void SetRight(MxS32 p_right) { m_right = p_right; }
|
|
|
|
inline MxBool IntersectsWith(MxRect32& p_rect) { return m_left < p_rect.GetRight() && p_rect.GetTop() < m_right; }
|
|
|
|
private:
|
|
MxS32 m_left; // 0x00
|
|
MxS32 m_right; // 0x04
|
|
};
|
|
|
|
// VTABLE: LEGO1 0x100dcc40
|
|
// class MxCollection<MxRegionLeftRight *>
|
|
|
|
// VTABLE: LEGO1 0x100dcc58
|
|
// class MxList<MxRegionLeftRight *>
|
|
|
|
// VTABLE: LEGO1 0x100dcc70
|
|
// class MxPtrList<MxRegionLeftRight>
|
|
|
|
// VTABLE: LEGO1 0x100dcc88
|
|
// SIZE 0x18
|
|
class MxRegionLeftRightList : public MxPtrList<MxRegionLeftRight> {
|
|
public:
|
|
MxRegionLeftRightList() : MxPtrList<MxRegionLeftRight>(TRUE) {}
|
|
|
|
// SYNTHETIC: LEGO1 0x100c4e90
|
|
// MxRegionLeftRightList::`scalar deleting destructor'
|
|
};
|
|
|
|
// VTABLE: LEGO1 0x100dcbf8
|
|
// class MxPtrListCursor<MxRegionLeftRight>
|
|
|
|
// VTABLE: LEGO1 0x100dcc28
|
|
// class MxListCursor<MxRegionLeftRight *>
|
|
|
|
// VTABLE: LEGO1 0x100dcc10
|
|
class MxRegionLeftRightListCursor : public MxPtrListCursor<MxRegionLeftRight> {
|
|
public:
|
|
MxRegionLeftRightListCursor(MxRegionLeftRightList* p_list) : MxPtrListCursor<MxRegionLeftRight>(p_list) {}
|
|
};
|
|
|
|
// SIZE 0x0c
|
|
struct MxRegionTopBottom {
|
|
MxRegionTopBottom(MxRect32& p_rect);
|
|
MxRegionTopBottom(MxS32 p_top, MxS32 p_bottom);
|
|
~MxRegionTopBottom() { delete m_leftRightList; }
|
|
|
|
MxRegionTopBottom* Clone();
|
|
void MergeOrExpandRegions(MxS32 p_left, MxS32 p_right);
|
|
MxBool CheckHorizontalOverlap(MxRect32& p_rect);
|
|
|
|
inline MxS32 GetTop() { return m_top; }
|
|
inline MxS32 GetBottom() { return m_bottom; }
|
|
|
|
inline void SetTop(MxS32 p_top) { m_top = p_top; }
|
|
inline void SetBottom(MxS32 p_bottom) { m_bottom = p_bottom; }
|
|
|
|
inline MxBool IntersectsWith(MxRect32& p_rect) { return m_top < p_rect.GetBottom() && p_rect.GetTop() < m_bottom; }
|
|
|
|
friend class MxRegionTopBottomList;
|
|
friend class MxRegionCursor;
|
|
|
|
private:
|
|
MxS32 m_top; // 0x00
|
|
MxS32 m_bottom; // 0x04
|
|
MxRegionLeftRightList* m_leftRightList; // 0x08
|
|
};
|
|
|
|
// VTABLE: LEGO1 0x100dcb10
|
|
// class MxCollection<MxRegionTopBottom *>
|
|
|
|
// VTABLE: LEGO1 0x100dcb28
|
|
// class MxList<MxRegionTopBottom *>
|
|
|
|
// VTABLE: LEGO1 0x100dcb40
|
|
// class MxPtrList<MxRegionTopBottom>
|
|
|
|
// VTABLE: LEGO1 0x100dcb58
|
|
// SIZE 0x18
|
|
class MxRegionTopBottomList : public MxPtrList<MxRegionTopBottom> {
|
|
public:
|
|
MxRegionTopBottomList() : MxPtrList<MxRegionTopBottom>(TRUE) {}
|
|
|
|
// SYNTHETIC: LEGO1 0x100c3410
|
|
// MxRegionTopBottomList::`scalar deleting destructor'
|
|
};
|
|
|
|
// VTABLE: LEGO1 0x100dcb70
|
|
// class MxPtrListCursor<MxRegionTopBottom>
|
|
|
|
// VTABLE: LEGO1 0x100dcba0
|
|
// class MxListCursor<MxRegionTopBottom *>
|
|
|
|
// TODO: The initialize list param type should be MxRegionTopBottomList, but doing that
|
|
// drastically reduced the match percentage for MxRegion::VTable0x18.
|
|
// It also works with MxPtrList, so we'll do that until we figure this out.
|
|
|
|
// VTABLE: LEGO1 0x100dcb88
|
|
class MxRegionTopBottomListCursor : public MxPtrListCursor<MxRegionTopBottom> {
|
|
public:
|
|
MxRegionTopBottomListCursor(MxPtrList<MxRegionTopBottom>* p_list) : MxPtrListCursor<MxRegionTopBottom>(p_list) {}
|
|
};
|
|
|
|
// TEMPLATE: LEGO1 0x100c32e0
|
|
// MxCollection<MxRegionTopBottom *>::Compare
|
|
|
|
// TEMPLATE: LEGO1 0x100c32f0
|
|
// MxCollection<MxRegionTopBottom *>::~MxCollection<MxRegionTopBottom *>
|
|
|
|
// TEMPLATE: LEGO1 0x100c3340
|
|
// MxCollection<MxRegionTopBottom *>::Destroy
|
|
|
|
// TEMPLATE: LEGO1 0x100c3350
|
|
// MxList<MxRegionTopBottom *>::~MxList<MxRegionTopBottom *>
|
|
|
|
// TEMPLATE: LEGO1 0x100c33e0
|
|
// MxPtrList<MxRegionTopBottom>::Destroy
|
|
|
|
// TEMPLATE: LEGO1 0x100c3480
|
|
// MxPtrList<MxRegionTopBottom>::~MxPtrList<MxRegionTopBottom>
|
|
|
|
// SYNTHETIC: LEGO1 0x100c34d0
|
|
// MxCollection<MxRegionTopBottom *>::`scalar deleting destructor'
|
|
|
|
// SYNTHETIC: LEGO1 0x100c3540
|
|
// MxList<MxRegionTopBottom *>::`scalar deleting destructor'
|
|
|
|
// SYNTHETIC: LEGO1 0x100c35f0
|
|
// MxPtrList<MxRegionTopBottom>::`scalar deleting destructor'
|
|
|
|
// SYNTHETIC: LEGO1 0x100c3be0
|
|
// MxRegionTopBottomListCursor::`scalar deleting destructor'
|
|
|
|
// TEMPLATE: LEGO1 0x100c3c50
|
|
// MxPtrListCursor<MxRegionTopBottom>::~MxPtrListCursor<MxRegionTopBottom>
|
|
|
|
// SYNTHETIC: LEGO1 0x100c3ca0
|
|
// MxListCursor<MxRegionTopBottom *>::`scalar deleting destructor'
|
|
|
|
// SYNTHETIC: LEGO1 0x100c3d10
|
|
// MxPtrListCursor<MxRegionTopBottom>::`scalar deleting destructor'
|
|
|
|
// TEMPLATE: LEGO1 0x100c3d80
|
|
// MxListCursor<MxRegionTopBottom *>::~MxListCursor<MxRegionTopBottom *>
|
|
|
|
// FUNCTION: LEGO1 0x100c3dd0
|
|
// MxRegionTopBottomListCursor::~MxRegionTopBottomListCursor
|
|
|
|
// SYNTHETIC: LEGO1 0x100c4790
|
|
// MxRegionLeftRightListCursor::`scalar deleting destructor'
|
|
|
|
// TEMPLATE: LEGO1 0x100c4800
|
|
// MxPtrListCursor<MxRegionLeftRight>::~MxPtrListCursor<MxRegionLeftRight>
|
|
|
|
// SYNTHETIC: LEGO1 0x100c4850
|
|
// MxListCursor<MxRegionLeftRight *>::`scalar deleting destructor'
|
|
|
|
// SYNTHETIC: LEGO1 0x100c48c0
|
|
// MxPtrListCursor<MxRegionLeftRight>::`scalar deleting destructor'
|
|
|
|
// TEMPLATE: LEGO1 0x100c4930
|
|
// MxListCursor<MxRegionLeftRight *>::~MxListCursor<MxRegionLeftRight *>
|
|
|
|
// TEMPLATE: LEGO1 0x100c4d80
|
|
// MxCollection<MxRegionLeftRight *>::Compare
|
|
|
|
// TEMPLATE: LEGO1 0x100c4d90
|
|
// MxCollection<MxRegionLeftRight *>::~MxCollection<MxRegionLeftRight *>
|
|
|
|
// TEMPLATE: LEGO1 0x100c4de0
|
|
// MxCollection<MxRegionLeftRight *>::Destroy
|
|
|
|
// TEMPLATE: LEGO1 0x100c4df0
|
|
// MxList<MxRegionLeftRight *>::~MxList<MxRegionLeftRight *>
|
|
|
|
// TEMPLATE: LEGO1 0x100c4f00
|
|
// MxPtrList<MxRegionLeftRight>::~MxPtrList<MxRegionLeftRight>
|
|
|
|
// SYNTHETIC: LEGO1 0x100c4f50
|
|
// MxCollection<MxRegionLeftRight *>::`scalar deleting destructor'
|
|
|
|
// TEMPLATE: LEGO1 0x100c4e80
|
|
// MxPtrList<MxRegionLeftRight>::Destroy
|
|
|
|
// SYNTHETIC: LEGO1 0x100c4fc0
|
|
// MxList<MxRegionLeftRight *>::`scalar deleting destructor'
|
|
|
|
// SYNTHETIC: LEGO1 0x100c5070
|
|
// MxPtrList<MxRegionLeftRight>::`scalar deleting destructor'
|
|
|
|
// TEMPLATE: LEGO1 0x100c54f0
|
|
// MxListCursor<MxRegionLeftRight *>::MxListCursor<MxRegionLeftRight *>
|
|
|
|
// FUNCTION: LEGO1 0x100c5560
|
|
// MxRegionLeftRightListCursor::~MxRegionLeftRightListCursor
|
|
|
|
// TEMPLATE: LEGO1 0x100c55b0
|
|
// MxListCursor<MxRegionLeftRight *>::operator=
|
|
|
|
// TEMPLATE: LEGO1 0x100c58c0
|
|
// MxList<MxRegionLeftRight *>::InsertEntry
|
|
|
|
// TEMPLATE: LEGO1 0x100c5970
|
|
// MxList<MxRegionTopBottom *>::InsertEntry
|
|
|
|
// TEMPLATE: LEGO1 0x100c5a20
|
|
// MxListEntry<MxRegionTopBottom *>::MxListEntry<MxRegionTopBottom *>
|
|
|
|
// TEMPLATE: LEGO1 0x100c5a40
|
|
// MxList<MxRegionLeftRight *>::DeleteEntry
|
|
|
|
#endif // MXREGIONLIST_H
|