mirror of
https://github.com/isledecomp/isle.git
synced 2024-11-22 07:37:59 -05:00
Implement LegoPathActor::Vtable0x6c (#810)
* Implement LegoPathActor::VTable0x6c * Update LEGO1/lego/legoomni/src/paths/legopathactor.cpp Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com> * Fix logic / match * Add BETA annotation --------- Co-authored-by: Christian Semmler <mail@csemmler.com> Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
This commit is contained in:
parent
536c4336f3
commit
d639eb4c2b
19 changed files with 189 additions and 30 deletions
|
@ -59,7 +59,7 @@ class LegoAnimPresenter : public MxVideoPresenter {
|
||||||
virtual MxResult CreateAnim(MxStreamChunk* p_chunk); // vtable+0x88
|
virtual MxResult CreateAnim(MxStreamChunk* p_chunk); // vtable+0x88
|
||||||
virtual void VTable0x8c(); // vtable+0x8c
|
virtual void VTable0x8c(); // vtable+0x8c
|
||||||
virtual void VTable0x90(); // vtable+0x90
|
virtual void VTable0x90(); // vtable+0x90
|
||||||
virtual void VTable0x94(); // vtable+0x94
|
virtual MxResult VTable0x94(Vector3&, Vector3&, float, float, Vector3&); // vtable+0x94
|
||||||
virtual void VTable0x98(); // vtable+0x98
|
virtual void VTable0x98(); // vtable+0x98
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000c990
|
// FUNCTION: LEGO1 0x1000c990
|
||||||
|
|
|
@ -27,7 +27,14 @@ class LegoCarRaceActor : public virtual LegoRaceActor {
|
||||||
return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoRaceActor::IsA(p_name);
|
return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoRaceActor::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VTable0x6c() override; // vtable+0x6c
|
MxU32 VTable0x6c(
|
||||||
|
LegoPathBoundary* p_boundary,
|
||||||
|
Vector3& p_v1,
|
||||||
|
Vector3& p_v2,
|
||||||
|
float p_f1,
|
||||||
|
float p_f2,
|
||||||
|
Vector3& p_v3
|
||||||
|
) override; // vtable+0x6c
|
||||||
void VTable0x70(float p_float) override; // vtable+0x70
|
void VTable0x70(float p_float) override; // vtable+0x70
|
||||||
MxU32 VTable0x90(float, Matrix4&) override; // vtable+0x90
|
MxU32 VTable0x90(float, Matrix4&) override; // vtable+0x90
|
||||||
MxResult VTable0x94(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
|
MxResult VTable0x94(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
|
||||||
|
|
|
@ -76,6 +76,7 @@ class LegoEntity : public MxEntity {
|
||||||
inline MxFloat GetWorldSpeed() { return m_worldSpeed; }
|
inline MxFloat GetWorldSpeed() { return m_worldSpeed; }
|
||||||
inline LegoROI* GetROI() { return m_roi; }
|
inline LegoROI* GetROI() { return m_roi; }
|
||||||
inline MxU8 GetUnknown0x59() { return m_unk0x59; }
|
inline MxU8 GetUnknown0x59() { return m_unk0x59; }
|
||||||
|
inline MxBool GetCameraFlag() { return m_cameraFlag; }
|
||||||
|
|
||||||
inline void SetFlags(MxU8 p_flags) { m_flags = p_flags; }
|
inline void SetFlags(MxU8 p_flags) { m_flags = p_flags; }
|
||||||
inline void SetFlag(MxU8 p_flag) { m_flags |= p_flag; }
|
inline void SetFlag(MxU8 p_flag) { m_flags |= p_flag; }
|
||||||
|
|
|
@ -33,9 +33,16 @@ class LegoExtraActor : public virtual LegoAnimActor {
|
||||||
return !strcmp(p_name, LegoExtraActor::ClassName()) || LegoAnimActor::IsA(p_name);
|
return !strcmp(p_name, LegoExtraActor::ClassName()) || LegoAnimActor::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
|
void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
|
||||||
MxS32 VTable0x68(Vector3&, Vector3&, Vector3&) override; // vtable+0x68
|
MxS32 VTable0x68(Vector3&, Vector3&, Vector3&) override; // vtable+0x68
|
||||||
void VTable0x6c() override; // vtable+0x6c
|
MxU32 VTable0x6c(
|
||||||
|
LegoPathBoundary* p_boundary,
|
||||||
|
Vector3& p_v1,
|
||||||
|
Vector3& p_v2,
|
||||||
|
float p_f1,
|
||||||
|
float p_f2,
|
||||||
|
Vector3& p_v3
|
||||||
|
) override; // vtable+0x6c
|
||||||
void VTable0x70(float) override; // vtable+0x70
|
void VTable0x70(float) override; // vtable+0x70
|
||||||
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
|
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
|
||||||
MxU32 VTable0x90(float p_float, Matrix4& p_matrix) override; // vtable+0x90
|
MxU32 VTable0x90(float p_float, Matrix4& p_matrix) override; // vtable+0x90
|
||||||
|
|
|
@ -31,9 +31,16 @@ class LegoJetski : public LegoJetskiRaceActor, public LegoRaceMap {
|
||||||
return !strcmp(p_name, LegoJetski::ClassName()) || LegoJetskiRaceActor::IsA(p_name);
|
return !strcmp(p_name, LegoJetski::ClassName()) || LegoJetskiRaceActor::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ParseAction(char*) override; // vtable+0x20
|
void ParseAction(char*) override; // vtable+0x20
|
||||||
void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
|
void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
|
||||||
void VTable0x6c() override; // vtable+0x6c
|
MxU32 VTable0x6c(
|
||||||
|
LegoPathBoundary* p_boundary,
|
||||||
|
Vector3& p_v1,
|
||||||
|
Vector3& p_v2,
|
||||||
|
float p_f1,
|
||||||
|
float p_f2,
|
||||||
|
Vector3& p_v3
|
||||||
|
) override; // vtable+0x6c
|
||||||
void VTable0x70(float p_float) override; // vtable+0x70
|
void VTable0x70(float p_float) override; // vtable+0x70
|
||||||
MxResult VTable0x94(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
|
MxResult VTable0x94(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
|
||||||
void VTable0x98() override; // vtable+0x98
|
void VTable0x98() override; // vtable+0x98
|
||||||
|
|
|
@ -27,7 +27,14 @@ class LegoJetskiRaceActor : public virtual LegoCarRaceActor {
|
||||||
return !strcmp(p_name, LegoJetskiRaceActor::ClassName()) || LegoCarRaceActor::IsA(p_name);
|
return !strcmp(p_name, LegoJetskiRaceActor::ClassName()) || LegoCarRaceActor::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VTable0x6c() override; // vtable+0x6c
|
MxU32 VTable0x6c(
|
||||||
|
LegoPathBoundary* p_boundary,
|
||||||
|
Vector3& p_v1,
|
||||||
|
Vector3& p_v2,
|
||||||
|
float p_f1,
|
||||||
|
float p_f2,
|
||||||
|
Vector3& p_v3
|
||||||
|
) override; // vtable+0x6c
|
||||||
void VTable0x70(float p_float) override; // vtable+0x70
|
void VTable0x70(float p_float) override; // vtable+0x70
|
||||||
void VTable0x98() override; // vtable+0x98
|
void VTable0x98() override; // vtable+0x98
|
||||||
MxResult WaitForAnimation() override; // vtable+0x9c
|
MxResult WaitForAnimation() override; // vtable+0x9c
|
||||||
|
|
|
@ -32,9 +32,16 @@ class LegoPathActor : public LegoActor {
|
||||||
|
|
||||||
void ParseAction(char* p_extra) override; // vtable+0x20
|
void ParseAction(char* p_extra) override; // vtable+0x20
|
||||||
virtual MxS32 VTable0x68(Vector3&, Vector3&, Vector3&); // vtable+0x68
|
virtual MxS32 VTable0x68(Vector3&, Vector3&, Vector3&); // vtable+0x68
|
||||||
virtual void VTable0x6c(); // vtable+0x6c
|
virtual MxU32 VTable0x6c(
|
||||||
virtual void VTable0x70(float p_time); // vtable+0x70
|
LegoPathBoundary* p_boundary,
|
||||||
virtual void VTable0x74(Matrix4& p_transform); // vtable+0x74
|
Vector3& p_v1,
|
||||||
|
Vector3& p_v2,
|
||||||
|
float p_f1,
|
||||||
|
float p_f2,
|
||||||
|
Vector3& p_v3
|
||||||
|
); // vtable+0x6c
|
||||||
|
virtual void VTable0x70(float p_time); // vtable+0x70
|
||||||
|
virtual void VTable0x74(Matrix4& p_transform); // vtable+0x74
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10002d20
|
// FUNCTION: LEGO1 0x10002d20
|
||||||
virtual void SetUserNavFlag(MxBool p_userNavFlag) { m_userNavFlag = p_userNavFlag; } // vtable+0x78
|
virtual void SetUserNavFlag(MxBool p_userNavFlag) { m_userNavFlag = p_userNavFlag; } // vtable+0x78
|
||||||
|
|
|
@ -32,17 +32,48 @@ class LegoPathBoundary : public LegoWEGEdge {
|
||||||
void FUN_100575b0(Vector3& p_point1, Vector3& p_point2, LegoPathActor* p_actor);
|
void FUN_100575b0(Vector3& p_point1, Vector3& p_point2, LegoPathActor* p_actor);
|
||||||
MxU32 Intersect(float p_scale, Vector3& p_point1, Vector3& p_point2, Vector3& p_point3, LegoEdge*& p_edge);
|
MxU32 Intersect(float p_scale, Vector3& p_point1, Vector3& p_point2, Vector3& p_point3, LegoEdge*& p_edge);
|
||||||
|
|
||||||
inline LegoAnimPresenterSet* GetUnknown0x64() { return &m_unk0x64; }
|
inline LegoPathActorSet* GetActors() { return &m_actors; }
|
||||||
|
inline LegoAnimPresenterSet* GetPresenters() { return &m_presenters; }
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10047a80
|
// SYNTHETIC: LEGO1 0x10047a80
|
||||||
// LegoPathBoundary::`scalar deleting destructor'
|
// LegoPathBoundary::`scalar deleting destructor'
|
||||||
|
|
||||||
private:
|
private:
|
||||||
LegoPathActorSet m_unk0x54; // 0x54
|
LegoPathActorSet m_actors; // 0x54
|
||||||
LegoAnimPresenterSet m_unk0x64; // 0x64
|
LegoAnimPresenterSet m_presenters; // 0x64
|
||||||
};
|
};
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
|
// 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 *> >
|
||||||
|
|
||||||
|
// TEMPLATE: LEGO1 0x1002c6c0
|
||||||
|
// Set<LegoPathActor *,LegoPathActorSetCompare>::~Set<LegoPathActor *,LegoPathActorSetCompare>
|
||||||
|
|
||||||
|
// TEMPLATE: LEGO1 0x1002eb10
|
||||||
|
// _Tree<LegoPathActor *,LegoPathActor *,set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Kfn,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Init
|
||||||
|
|
||||||
|
// TEMPLATE: LEGO1 0x1002ebc0
|
||||||
|
// _Tree<LegoAnimPresenter *,LegoAnimPresenter *,set<LegoAnimPresenter *,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Kfn,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Min
|
||||||
|
|
||||||
// TEMPLATE: LEGO1 0x10045d80
|
// TEMPLATE: LEGO1 0x10045d80
|
||||||
// _Tree<LegoPathActor *,LegoPathActor *,set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Kfn,LegoPathActorSetCompare,allocator<LegoPathActor *> >::iterator::_Dec
|
// _Tree<LegoPathActor *,LegoPathActor *,set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Kfn,LegoPathActorSetCompare,allocator<LegoPathActor *> >::iterator::_Dec
|
||||||
|
|
||||||
|
|
|
@ -31,9 +31,16 @@ class LegoRaceCar : public LegoCarRaceActor, public LegoRaceMap {
|
||||||
return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoCarRaceActor::IsA(p_name);
|
return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoCarRaceActor::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ParseAction(char*) override; // vtable+0x20
|
void ParseAction(char*) override; // vtable+0x20
|
||||||
void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
|
void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
|
||||||
void VTable0x6c() override; // vtable+0x6c
|
MxU32 VTable0x6c(
|
||||||
|
LegoPathBoundary* p_boundary,
|
||||||
|
Vector3& p_v1,
|
||||||
|
Vector3& p_v2,
|
||||||
|
float p_f1,
|
||||||
|
float p_f2,
|
||||||
|
Vector3& p_v3
|
||||||
|
) override; // vtable+0x6c
|
||||||
void VTable0x70(float p_float) override; // vtable+0x70
|
void VTable0x70(float p_float) override; // vtable+0x70
|
||||||
MxResult VTable0x94(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
|
MxResult VTable0x94(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
|
||||||
void VTable0x98() override; // vtable+0x98
|
void VTable0x98() override; // vtable+0x98
|
||||||
|
|
|
@ -52,9 +52,17 @@ void LegoCarRaceActor::VTable0x1c()
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x10081830
|
// STUB: LEGO1 0x10081830
|
||||||
void LegoCarRaceActor::VTable0x6c()
|
MxU32 LegoCarRaceActor::VTable0x6c(
|
||||||
|
LegoPathBoundary* p_boundary,
|
||||||
|
Vector3& p_v1,
|
||||||
|
Vector3& p_v2,
|
||||||
|
float p_f1,
|
||||||
|
float p_f2,
|
||||||
|
Vector3& p_v3
|
||||||
|
)
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x10081d10
|
// STUB: LEGO1 0x10081d10
|
||||||
|
|
|
@ -44,9 +44,17 @@ void LegoJetski::SetWorldSpeed(MxFloat p_worldSpeed)
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x10014140
|
// STUB: LEGO1 0x10014140
|
||||||
void LegoJetski::VTable0x6c()
|
MxU32 LegoJetski::VTable0x6c(
|
||||||
|
LegoPathBoundary* p_boundary,
|
||||||
|
Vector3& p_v1,
|
||||||
|
Vector3& p_v2,
|
||||||
|
float p_f1,
|
||||||
|
float p_f2,
|
||||||
|
Vector3& p_v3
|
||||||
|
)
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x10014180
|
// STUB: LEGO1 0x10014180
|
||||||
|
|
|
@ -18,9 +18,17 @@ LegoJetskiRaceActor::LegoJetskiRaceActor()
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x10081fc0
|
// STUB: LEGO1 0x10081fc0
|
||||||
void LegoJetskiRaceActor::VTable0x6c()
|
MxU32 LegoJetskiRaceActor::VTable0x6c(
|
||||||
|
LegoPathBoundary* p_boundary,
|
||||||
|
Vector3& p_v1,
|
||||||
|
Vector3& p_v2,
|
||||||
|
float p_f1,
|
||||||
|
float p_f2,
|
||||||
|
Vector3& p_v3
|
||||||
|
)
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x100822c0
|
// STUB: LEGO1 0x100822c0
|
||||||
|
|
|
@ -282,7 +282,7 @@ MxResult LegoExtraActor::WaitForAnimation()
|
||||||
|
|
||||||
if (m_boundary != oldBoundary) {
|
if (m_boundary != oldBoundary) {
|
||||||
MxU32 b = FALSE;
|
MxU32 b = FALSE;
|
||||||
LegoAnimPresenterSet* set = m_boundary->GetUnknown0x64();
|
LegoAnimPresenterSet* set = m_boundary->GetPresenters();
|
||||||
|
|
||||||
for (LegoAnimPresenterSet::iterator it = set->begin(); it != set->end(); it++) {
|
for (LegoAnimPresenterSet::iterator it = set->begin(); it != set->end(); it++) {
|
||||||
undefined4 tmp;
|
undefined4 tmp;
|
||||||
|
@ -307,7 +307,7 @@ void LegoExtraActor::Restart()
|
||||||
{
|
{
|
||||||
if (m_unk0x0e != 0) {
|
if (m_unk0x0e != 0) {
|
||||||
MxU32 b = FALSE;
|
MxU32 b = FALSE;
|
||||||
LegoAnimPresenterSet* set = m_boundary->GetUnknown0x64();
|
LegoAnimPresenterSet* set = m_boundary->GetPresenters();
|
||||||
|
|
||||||
for (LegoAnimPresenterSet::iterator it = set->begin(); it != set->end(); it++) {
|
for (LegoAnimPresenterSet::iterator it = set->begin(); it != set->end(); it++) {
|
||||||
undefined4 tmp;
|
undefined4 tmp;
|
||||||
|
@ -424,6 +424,14 @@ MxS32 LegoExtraActor::VTable0x68(Vector3& p_point1, Vector3& p_point2, Vector3&
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x1002b980
|
// STUB: LEGO1 0x1002b980
|
||||||
void LegoExtraActor::VTable0x6c()
|
MxU32 LegoExtraActor::VTable0x6c(
|
||||||
|
LegoPathBoundary* p_boundary,
|
||||||
|
Vector3& p_v1,
|
||||||
|
Vector3& p_v2,
|
||||||
|
float p_f1,
|
||||||
|
float p_f2,
|
||||||
|
Vector3& p_v3
|
||||||
|
)
|
||||||
{
|
{
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -413,10 +413,47 @@ void LegoPathActor::VTable0x98()
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x1002e8d0
|
// FUNCTION: LEGO1 0x1002e8d0
|
||||||
void LegoPathActor::VTable0x6c()
|
// FUNCTION: BETA10 0x100b1010
|
||||||
|
MxU32 LegoPathActor::VTable0x6c(
|
||||||
|
LegoPathBoundary* p_boundary,
|
||||||
|
Vector3& p_v1,
|
||||||
|
Vector3& p_v2,
|
||||||
|
float p_f1,
|
||||||
|
float p_f2,
|
||||||
|
Vector3& p_v3
|
||||||
|
)
|
||||||
{
|
{
|
||||||
// TODO
|
LegoAnimPresenterSet* laps = p_boundary->GetPresenters();
|
||||||
|
|
||||||
|
for (LegoAnimPresenterSet::iterator itap = laps->begin(); itap != laps->end(); itap++) {
|
||||||
|
if ((*itap)->VTable0x94(p_v1, p_v2, p_f1, p_f2, p_v3)) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LegoPathActorSet* plpas = p_boundary->GetActors();
|
||||||
|
LegoPathActorSet lpas(*plpas);
|
||||||
|
|
||||||
|
for (LegoPathActorSet::iterator itpa = lpas.begin(); itpa != lpas.end(); itpa++) {
|
||||||
|
if (plpas->find(*itpa) != plpas->end()) {
|
||||||
|
LegoPathActor* actor = *itpa;
|
||||||
|
|
||||||
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x1002ebe0
|
// STUB: LEGO1 0x1002ebe0
|
||||||
|
|
|
@ -13,7 +13,7 @@ LegoPathBoundary::LegoPathBoundary()
|
||||||
// FUNCTION: LEGO1 0x100573f0
|
// FUNCTION: LEGO1 0x100573f0
|
||||||
MxResult LegoPathBoundary::AddActor(LegoPathActor* p_actor)
|
MxResult LegoPathBoundary::AddActor(LegoPathActor* p_actor)
|
||||||
{
|
{
|
||||||
m_unk0x54.insert(p_actor);
|
m_actors.insert(p_actor);
|
||||||
p_actor->SetBoundary(this);
|
p_actor->SetBoundary(this);
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,9 +64,17 @@ void LegoRaceCar::SetWorldSpeed(MxFloat p_worldSpeed)
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x100144f0
|
// STUB: LEGO1 0x100144f0
|
||||||
void LegoRaceCar::VTable0x6c()
|
MxU32 LegoRaceCar::VTable0x6c(
|
||||||
|
LegoPathBoundary* p_boundary,
|
||||||
|
Vector3& p_v1,
|
||||||
|
Vector3& p_v2,
|
||||||
|
float p_f1,
|
||||||
|
float p_f2,
|
||||||
|
Vector3& p_v3
|
||||||
|
)
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x10014530
|
// STUB: LEGO1 0x10014530
|
||||||
|
|
|
@ -805,9 +805,10 @@ void LegoAnimPresenter::FUN_1006c8a0(MxBool p_bool)
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x1006c8f0
|
// STUB: LEGO1 0x1006c8f0
|
||||||
void LegoAnimPresenter::VTable0x94()
|
MxResult LegoAnimPresenter::VTable0x94(Vector3&, Vector3&, float, float, Vector3&)
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x1006ca50
|
// STUB: LEGO1 0x1006ca50
|
||||||
|
|
|
@ -505,6 +505,12 @@ LegoResult LegoROI::GetTexture(LegoTextureInfo*&)
|
||||||
return FAILURE;
|
return FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// STUB: LEGO1 0x100a9410
|
||||||
|
LegoU32 LegoROI::FUN_100a9410(Vector3&, Vector3&, float, float, Vector3&, LegoBool)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100a9a50
|
// FUNCTION: LEGO1 0x100a9a50
|
||||||
TimeROI::TimeROI(Tgl::Renderer* p_renderer, ViewLODList* p_lodList, LegoTime p_time) : LegoROI(p_renderer, p_lodList)
|
TimeROI::TimeROI(Tgl::Renderer* p_renderer, ViewLODList* p_lodList, LegoTime p_time) : LegoROI(p_renderer, p_lodList)
|
||||||
{
|
{
|
||||||
|
|
|
@ -37,6 +37,7 @@ class LegoROI : public ViewROI {
|
||||||
LegoResult FUN_100a9170(LegoFloat p_red, LegoFloat p_green, LegoFloat p_blue, LegoFloat p_alpha);
|
LegoResult FUN_100a9170(LegoFloat p_red, LegoFloat p_green, LegoFloat p_blue, LegoFloat p_alpha);
|
||||||
LegoResult FUN_100a9210(LegoTextureInfo* p_textureInfo);
|
LegoResult FUN_100a9210(LegoTextureInfo* p_textureInfo);
|
||||||
LegoResult GetTexture(LegoTextureInfo*&);
|
LegoResult GetTexture(LegoTextureInfo*&);
|
||||||
|
LegoU32 FUN_100a9410(Vector3&, Vector3&, float, float, Vector3&, LegoBool);
|
||||||
void SetName(const LegoChar* p_name);
|
void SetName(const LegoChar* p_name);
|
||||||
|
|
||||||
float IntrinsicImportance() const override; // vtable+0x04
|
float IntrinsicImportance() const override; // vtable+0x04
|
||||||
|
|
Loading…
Reference in a new issue