Fix logic / match

This commit is contained in:
Christian Semmler 2024-04-17 06:02:41 -04:00
parent 4e8af0ddc4
commit 14661988aa
3 changed files with 23 additions and 7 deletions

View File

@ -76,6 +76,7 @@ class LegoEntity : public MxEntity {
inline MxFloat GetWorldSpeed() { return m_worldSpeed; }
inline LegoROI* GetROI() { return m_roi; }
inline MxU8 GetUnknown0x59() { return m_unk0x59; }
inline MxBool GetCameraFlag() { return m_cameraFlag; }
inline void SetFlags(MxU8 p_flags) { m_flags = p_flags; }
inline void SetFlag(MxU8 p_flag) { m_flags |= p_flag; }

View File

@ -47,12 +47,21 @@ class LegoPathBoundary : public LegoWEGEdge {
// TEMPLATE: LEGO1 0x1002bee0
// _Tree<LegoPathActor *,LegoPathActor *,set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Kfn,LegoPathActorSetCompare,allocator<LegoPathActor *> >::~_Tree<LegoPathActor *,LegoPathActor *,set<LegoPathActor *,LegoPathActorSetCompare,a
// TEMPLATE: LEGO1 0x1002bfb0
// _Tree<LegoPathActor *,LegoPathActor *,set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Kfn,LegoPathActorSetCompare,allocator<LegoPathActor *> >::iterator::_Inc
// TEMPLATE: LEGO1 0x1002bff0
// _Tree<LegoPathActor *,LegoPathActor *,set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Kfn,LegoPathActorSetCompare,allocator<LegoPathActor *> >::erase
// TEMPLATE: LEGO1 0x1002c440
// _Tree<LegoPathActor *,LegoPathActor *,set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Kfn,LegoPathActorSetCompare,allocator<LegoPathActor *> >::find
// TEMPLATE: LEGO1 0x1002c4c0
// _Tree<LegoPathActor *,LegoPathActor *,set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Kfn,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Copy
// TEMPLATE: LEGO1 0x1002c630
// _Tree<LegoPathActor *,LegoPathActor *,set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Kfn,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Erase
// TEMPLATE: LEGO1 0x1002c670
// set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >::~set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >

View File

@ -435,17 +435,23 @@ MxU32 LegoPathActor::VTable0x6c(
LegoPathActorSet lpas(*plpas);
for (LegoPathActorSet::iterator itpa = lpas.begin(); itpa != lpas.end(); itpa++) {
LegoPathActor* actor = *itpa;
if (plpas->find(*itpa) != plpas->end()) {
LegoPathActor* actor = *itpa;
if (plpas->find(actor) != plpas->end() && this != actor && (actor->m_state & 0x100) && actor->m_roi &&
(actor->m_roi->GetVisibility() || actor->m_cameraFlag)) {
if (actor->m_roi->FUN_100a9410(p_v1, p_v2, p_f1, p_f2, p_v3, m_unk0xe8 != 0 && actor->m_unk0xe8 != 0)) {
VTable0x94(actor, TRUE);
VTable0x94(actor, FALSE);
return 2;
if (this != actor && !(actor->GetState() & 0x100)) {
LegoROI* roi = actor->GetROI();
if (roi != NULL && (roi->GetVisibility() || actor->GetCameraFlag())) {
if (roi->FUN_100a9410(p_v1, p_v2, p_f1, p_f2, p_v3, m_unk0xe8 != 0 && actor->m_unk0xe8 != 0)) {
VTable0x94(actor, TRUE);
actor->VTable0x94(this, FALSE);
return 2;
}
}
}
}
}
return 0;
}