mirror of
https://github.com/isledecomp/isle.git
synced 2025-10-24 08:54:15 +00: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:
@@ -52,9 +52,17 @@ void LegoCarRaceActor::VTable0x1c()
|
||||
}
|
||||
|
||||
// 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
|
||||
return 0;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10081d10
|
||||
|
||||
@@ -44,9 +44,17 @@ void LegoJetski::SetWorldSpeed(MxFloat p_worldSpeed)
|
||||
}
|
||||
|
||||
// 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
|
||||
return 0;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10014180
|
||||
|
||||
@@ -18,9 +18,17 @@ LegoJetskiRaceActor::LegoJetskiRaceActor()
|
||||
}
|
||||
|
||||
// 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
|
||||
return 0;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100822c0
|
||||
|
||||
@@ -282,7 +282,7 @@ MxResult LegoExtraActor::WaitForAnimation()
|
||||
|
||||
if (m_boundary != oldBoundary) {
|
||||
MxU32 b = FALSE;
|
||||
LegoAnimPresenterSet* set = m_boundary->GetUnknown0x64();
|
||||
LegoAnimPresenterSet* set = m_boundary->GetPresenters();
|
||||
|
||||
for (LegoAnimPresenterSet::iterator it = set->begin(); it != set->end(); it++) {
|
||||
undefined4 tmp;
|
||||
@@ -307,7 +307,7 @@ void LegoExtraActor::Restart()
|
||||
{
|
||||
if (m_unk0x0e != 0) {
|
||||
MxU32 b = FALSE;
|
||||
LegoAnimPresenterSet* set = m_boundary->GetUnknown0x64();
|
||||
LegoAnimPresenterSet* set = m_boundary->GetPresenters();
|
||||
|
||||
for (LegoAnimPresenterSet::iterator it = set->begin(); it != set->end(); it++) {
|
||||
undefined4 tmp;
|
||||
@@ -424,6 +424,14 @@ MxS32 LegoExtraActor::VTable0x68(Vector3& p_point1, Vector3& p_point2, Vector3&
|
||||
}
|
||||
|
||||
// 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
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1002e8d0
|
||||
void LegoPathActor::VTable0x6c()
|
||||
// FUNCTION: LEGO1 0x1002e8d0
|
||||
// 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
|
||||
|
||||
@@ -13,7 +13,7 @@ LegoPathBoundary::LegoPathBoundary()
|
||||
// FUNCTION: LEGO1 0x100573f0
|
||||
MxResult LegoPathBoundary::AddActor(LegoPathActor* p_actor)
|
||||
{
|
||||
m_unk0x54.insert(p_actor);
|
||||
m_actors.insert(p_actor);
|
||||
p_actor->SetBoundary(this);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -64,9 +64,17 @@ void LegoRaceCar::SetWorldSpeed(MxFloat p_worldSpeed)
|
||||
}
|
||||
|
||||
// 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
|
||||
return 0;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10014530
|
||||
|
||||
@@ -805,9 +805,10 @@ void LegoAnimPresenter::FUN_1006c8a0(MxBool p_bool)
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1006c8f0
|
||||
void LegoAnimPresenter::VTable0x94()
|
||||
MxResult LegoAnimPresenter::VTable0x94(Vector3&, Vector3&, float, float, Vector3&)
|
||||
{
|
||||
// TODO
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1006ca50
|
||||
|
||||
Reference in New Issue
Block a user