mirror of
https://github.com/isledecomp/isle-portable.git
synced 2026-02-01 03:21:15 +00:00
Merge remote-tracking branch 'isle/master'
This commit is contained in:
commit
ba14b48284
@ -129,7 +129,7 @@ class Act3 : public LegoWorld {
|
|||||||
void RemoveDonut(Act3Ammo& p_p);
|
void RemoveDonut(Act3Ammo& p_p);
|
||||||
MxResult ShootPizza(LegoPathController* p_controller, Vector3& p_location, Vector3& p_direction, Vector3& p_up);
|
MxResult ShootPizza(LegoPathController* p_controller, Vector3& p_location, Vector3& p_direction, Vector3& p_up);
|
||||||
MxResult ShootDonut(LegoPathController* p_controller, Vector3& p_location, Vector3& p_direction, Vector3& p_up);
|
MxResult ShootDonut(LegoPathController* p_controller, Vector3& p_location, Vector3& p_direction, Vector3& p_up);
|
||||||
void FUN_10072ad0(undefined4 p_param1);
|
void TriggerHitSound(undefined4 p_param1);
|
||||||
MxResult FUN_10073360(Act3Ammo& p_ammo, const Vector3& p_param2);
|
MxResult FUN_10073360(Act3Ammo& p_ammo, const Vector3& p_param2);
|
||||||
MxResult FUN_10073390(Act3Ammo& p_ammo, const Vector3& p_param2);
|
MxResult FUN_10073390(Act3Ammo& p_ammo, const Vector3& p_param2);
|
||||||
void SetBrickster(Act3Brickster* p_brickster);
|
void SetBrickster(Act3Brickster* p_brickster);
|
||||||
@ -168,12 +168,12 @@ class Act3 : public LegoWorld {
|
|||||||
Helicopter* m_copter; // 0x420c
|
Helicopter* m_copter; // 0x420c
|
||||||
Act3Shark* m_shark; // 0x4210
|
Act3Shark* m_shark; // 0x4210
|
||||||
MxFloat m_time; // 0x4214
|
MxFloat m_time; // 0x4214
|
||||||
MxU8 m_unk0x4218; // 0x4218
|
MxU8 m_pizzaHitSound; // 0x4218
|
||||||
MxU8 m_unk0x4219; // 0x4219
|
MxU8 m_pizzaMissSound; // 0x4219
|
||||||
MxU8 m_unk0x421a; // 0x421a
|
MxU8 m_copDonutSound; // 0x421a
|
||||||
MxU8 m_unk0x421b; // 0x421b
|
MxU8 m_donutMissSound; // 0x421b
|
||||||
MxU8 m_unk0x421c; // 0x421c
|
MxU8 m_islanderSound; // 0x421c
|
||||||
MxU8 m_unk0x421d; // 0x421d
|
MxU8 m_bricksterDonutSound; // 0x421d
|
||||||
undefined m_unk0x421e; // 0x421e
|
undefined m_unk0x421e; // 0x421e
|
||||||
Act3List m_unk0x4220; // 0x4220
|
Act3List m_unk0x4220; // 0x4220
|
||||||
MxPresenter* m_helicopterDots[15]; // 0x4230
|
MxPresenter* m_helicopterDots[15]; // 0x4230
|
||||||
|
|||||||
@ -580,7 +580,7 @@ void Act3Brickster::Animate(float p_time)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (m_unk0x54 < p_time) {
|
if (m_unk0x54 < p_time) {
|
||||||
((Act3*) m_world)->FUN_10072ad0(5);
|
((Act3*) m_world)->TriggerHitSound(5);
|
||||||
m_unk0x54 = p_time + 15000.0f;
|
m_unk0x54 = p_time + 15000.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -596,7 +596,7 @@ void Act3Brickster::Animate(float p_time)
|
|||||||
assert(SoundManager()->GetCacheSoundManager());
|
assert(SoundManager()->GetCacheSoundManager());
|
||||||
|
|
||||||
if (m_unk0x58 >= 8) {
|
if (m_unk0x58 >= 8) {
|
||||||
((Act3*) m_world)->FUN_10072ad0(6);
|
((Act3*) m_world)->TriggerHitSound(6);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
SoundManager()->GetCacheSoundManager()->Play("eatpz", NULL, FALSE);
|
SoundManager()->GetCacheSoundManager()->Play("eatpz", NULL, FALSE);
|
||||||
|
|||||||
@ -378,11 +378,11 @@ void Act3Ammo::Animate(float p_time)
|
|||||||
if (IsBit4()) {
|
if (IsBit4()) {
|
||||||
if (IsPizza()) {
|
if (IsPizza()) {
|
||||||
m_world->RemovePizza(*this);
|
m_world->RemovePizza(*this);
|
||||||
m_world->FUN_10072ad0(2);
|
m_world->TriggerHitSound(2);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
m_world->RemoveDonut(*this);
|
m_world->RemoveDonut(*this);
|
||||||
m_world->FUN_10072ad0(4);
|
m_world->TriggerHitSound(4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
@ -511,7 +511,7 @@ MxBool RemoveFromCurrentWorld(const MxAtomId& p_atomId, MxS32 p_id)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (((MxPresenter*) object)->GetAction()) {
|
if (((MxPresenter*) object)->GetAction()) {
|
||||||
FUN_100b7220(((MxPresenter*) object)->GetAction(), MxDSAction::c_world, FALSE);
|
ApplyMask(((MxPresenter*) object)->GetAction(), MxDSAction::c_world, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
((MxPresenter*) object)->EndAction();
|
((MxPresenter*) object)->EndAction();
|
||||||
@ -540,7 +540,7 @@ MxBool RemoveFromWorld(MxAtomId& p_entityAtom, MxS32 p_entityId, MxAtomId& p_wor
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (((MxPresenter*) object)->GetAction()) {
|
if (((MxPresenter*) object)->GetAction()) {
|
||||||
FUN_100b7220(((MxPresenter*) object)->GetAction(), MxDSAction::c_world, FALSE);
|
ApplyMask(((MxPresenter*) object)->GetAction(), MxDSAction::c_world, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
((MxPresenter*) object)->EndAction();
|
((MxPresenter*) object)->EndAction();
|
||||||
|
|||||||
@ -46,7 +46,7 @@ MxResult MxControlPresenter::StartAction(MxStreamController* p_controller, MxDSA
|
|||||||
{
|
{
|
||||||
MxResult result = MxCompositePresenter::StartAction(p_controller, p_action);
|
MxResult result = MxCompositePresenter::StartAction(p_controller, p_action);
|
||||||
|
|
||||||
FUN_100b7220(m_action, MxDSAction::c_world | MxDSAction::c_looping, TRUE);
|
ApplyMask(m_action, MxDSAction::c_world | MxDSAction::c_looping, TRUE);
|
||||||
ParseExtra();
|
ParseExtra();
|
||||||
|
|
||||||
MxS16 i = 0;
|
MxS16 i = 0;
|
||||||
|
|||||||
@ -122,12 +122,12 @@ void LegoWorld::Destroy(MxBool p_fromDestructor)
|
|||||||
|
|
||||||
animPresenter->DecrementUnknown0xd4();
|
animPresenter->DecrementUnknown0xd4();
|
||||||
if (animPresenter->GetUnknown0xd4() == 0) {
|
if (animPresenter->GetUnknown0xd4() == 0) {
|
||||||
FUN_100b7220(action, MxDSAction::c_world, FALSE);
|
ApplyMask(action, MxDSAction::c_world, FALSE);
|
||||||
presenter->EndAction();
|
presenter->EndAction();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
FUN_100b7220(action, MxDSAction::c_world, FALSE);
|
ApplyMask(action, MxDSAction::c_world, FALSE);
|
||||||
presenter->EndAction();
|
presenter->EndAction();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -143,7 +143,7 @@ void LegoWorld::Destroy(MxBool p_fromDestructor)
|
|||||||
MxDSAction* action = presenter->GetAction();
|
MxDSAction* action = presenter->GetAction();
|
||||||
|
|
||||||
if (action) {
|
if (action) {
|
||||||
FUN_100b7220(action, MxDSAction::c_world, FALSE);
|
ApplyMask(action, MxDSAction::c_world, FALSE);
|
||||||
presenter->EndAction();
|
presenter->EndAction();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -159,7 +159,7 @@ void LegoWorld::Destroy(MxBool p_fromDestructor)
|
|||||||
|
|
||||||
MxDSAction* action = presenter->GetAction();
|
MxDSAction* action = presenter->GetAction();
|
||||||
if (action) {
|
if (action) {
|
||||||
FUN_100b7220(action, MxDSAction::c_world, FALSE);
|
ApplyMask(action, MxDSAction::c_world, FALSE);
|
||||||
presenter->EndAction();
|
presenter->EndAction();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -189,7 +189,7 @@ MxResult LegoPartPresenter::Read(MxDSChunk& p_chunk)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (j == 0) {
|
if (j == 0) {
|
||||||
if (surplusLODs != 0 && lod->GetUnknown0x08Test8()) {
|
if (surplusLODs != 0 && lod->IsExtraLOD()) {
|
||||||
numLODs++;
|
numLODs++;
|
||||||
surplusLODs--;
|
surplusLODs--;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,7 +32,7 @@ DECOMP_SIZE_ASSERT(Act3ListElement, 0x0c)
|
|||||||
DECOMP_SIZE_ASSERT(Act3List, 0x10)
|
DECOMP_SIZE_ASSERT(Act3List, 0x10)
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100d94f8
|
// GLOBAL: LEGO1 0x100d94f8
|
||||||
Act3Script::Script g_unk0x100d94f8[] = {
|
Act3Script::Script g_pizzaHitSounds[] = {
|
||||||
Act3Script::c_sns02xni_PlayWav,
|
Act3Script::c_sns02xni_PlayWav,
|
||||||
Act3Script::c_sns03xni_PlayWav,
|
Act3Script::c_sns03xni_PlayWav,
|
||||||
Act3Script::c_sns04xni_PlayWav,
|
Act3Script::c_sns04xni_PlayWav,
|
||||||
@ -52,7 +52,7 @@ Act3Script::Script g_unk0x100d94f8[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100d9538
|
// GLOBAL: LEGO1 0x100d9538
|
||||||
Act3Script::Script g_unk0x100d9538[] = {
|
Act3Script::Script g_pizzaMissSounds[] = {
|
||||||
Act3Script::c_sns19xni_PlayWav,
|
Act3Script::c_sns19xni_PlayWav,
|
||||||
Act3Script::c_sns20xni_PlayWav,
|
Act3Script::c_sns20xni_PlayWav,
|
||||||
Act3Script::c_sns22xni_PlayWav,
|
Act3Script::c_sns22xni_PlayWav,
|
||||||
@ -62,7 +62,7 @@ Act3Script::Script g_unk0x100d9538[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100d9550
|
// GLOBAL: LEGO1 0x100d9550
|
||||||
Act3Script::Script g_unk0x100d9550[] = {
|
Act3Script::Script g_copDonutSounds[] = {
|
||||||
Act3Script::c_sns25xni_PlayWav,
|
Act3Script::c_sns25xni_PlayWav,
|
||||||
Act3Script::c_sns26xni_PlayWav,
|
Act3Script::c_sns26xni_PlayWav,
|
||||||
Act3Script::c_sns27xni_PlayWav,
|
Act3Script::c_sns27xni_PlayWav,
|
||||||
@ -74,7 +74,7 @@ Act3Script::Script g_unk0x100d9550[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100d9570
|
// GLOBAL: LEGO1 0x100d9570
|
||||||
Act3Script::Script g_unk0x100d9570[] = {
|
Act3Script::Script g_donutMissSounds[] = {
|
||||||
Act3Script::c_sns30xni_PlayWav,
|
Act3Script::c_sns30xni_PlayWav,
|
||||||
Act3Script::c_sns31xni_PlayWav,
|
Act3Script::c_sns31xni_PlayWav,
|
||||||
Act3Script::c_sns32xni_PlayWav,
|
Act3Script::c_sns32xni_PlayWav,
|
||||||
@ -84,7 +84,7 @@ Act3Script::Script g_unk0x100d9570[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100d9588
|
// GLOBAL: LEGO1 0x100d9588
|
||||||
Act3Script::Script g_unk0x100d9588[] = {
|
Act3Script::Script g_islanderSounds[] = {
|
||||||
Act3Script::c_sns43xma_PlayWav, Act3Script::c_sns46xin_PlayWav, Act3Script::c_sns60xna_PlayWav,
|
Act3Script::c_sns43xma_PlayWav, Act3Script::c_sns46xin_PlayWav, Act3Script::c_sns60xna_PlayWav,
|
||||||
Act3Script::c_sns52xro_PlayWav, Act3Script::c_sns58xna_PlayWav, Act3Script::c_sns68xbu_PlayWav,
|
Act3Script::c_sns52xro_PlayWav, Act3Script::c_sns58xna_PlayWav, Act3Script::c_sns68xbu_PlayWav,
|
||||||
Act3Script::c_sns59xna_PlayWav, Act3Script::c_sns51xin_PlayWav, Act3Script::c_sns61xva_PlayWav,
|
Act3Script::c_sns59xna_PlayWav, Act3Script::c_sns51xin_PlayWav, Act3Script::c_sns61xva_PlayWav,
|
||||||
@ -95,7 +95,7 @@ Act3Script::Script g_unk0x100d9588[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100d95d8
|
// GLOBAL: LEGO1 0x100d95d8
|
||||||
Act3Script::Script g_unk0x100d95d8[] = {
|
Act3Script::Script g_bricksterDonutSounds[] = {
|
||||||
Act3Script::c_tns080br_PlayWav,
|
Act3Script::c_tns080br_PlayWav,
|
||||||
Act3Script::c_tnsx07br_PlayWav,
|
Act3Script::c_tnsx07br_PlayWav,
|
||||||
Act3Script::c_snsxx2br_PlayWav,
|
Act3Script::c_snsxx2br_PlayWav,
|
||||||
@ -404,58 +404,58 @@ MxResult Act3::ShootDonut(LegoPathController* p_controller, Vector3& p_location,
|
|||||||
|
|
||||||
// FUNCTION: LEGO1 0x10072ad0
|
// FUNCTION: LEGO1 0x10072ad0
|
||||||
// FUNCTION: BETA10 0x10015eec
|
// FUNCTION: BETA10 0x10015eec
|
||||||
void Act3::FUN_10072ad0(undefined4 p_param1)
|
void Act3::TriggerHitSound(undefined4 p_param1)
|
||||||
{
|
{
|
||||||
float time = Timer()->GetTime();
|
float time = Timer()->GetTime();
|
||||||
Act3Script::Script objectId;
|
Act3Script::Script objectId;
|
||||||
|
|
||||||
switch (p_param1) {
|
switch (p_param1) {
|
||||||
case 1: {
|
case 1: {
|
||||||
if (m_unk0x4218 >= sizeOfArray(g_unk0x100d94f8)) {
|
if (m_pizzaHitSound >= sizeOfArray(g_pizzaHitSounds)) {
|
||||||
m_unk0x4218 = 0;
|
m_pizzaHitSound = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
objectId = g_unk0x100d94f8[m_unk0x4218++];
|
objectId = g_pizzaHitSounds[m_pizzaHitSound++];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 2: {
|
case 2: {
|
||||||
if (m_unk0x4219 >= sizeOfArray(g_unk0x100d9538) - 1) {
|
if (m_pizzaMissSound >= sizeOfArray(g_pizzaMissSounds) - 1) {
|
||||||
m_unk0x4219 = 0;
|
m_pizzaMissSound = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
objectId = g_unk0x100d9538[m_unk0x4219++];
|
objectId = g_pizzaMissSounds[m_pizzaMissSound++];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 3: {
|
case 3: {
|
||||||
if (m_unk0x421a >= sizeOfArray(g_unk0x100d9550)) {
|
if (m_copDonutSound >= sizeOfArray(g_copDonutSounds)) {
|
||||||
m_unk0x421a = 0;
|
m_copDonutSound = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
objectId = g_unk0x100d9550[m_unk0x421a++];
|
objectId = g_copDonutSounds[m_copDonutSound++];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 4: {
|
case 4: {
|
||||||
if (m_unk0x421b >= sizeOfArray(g_unk0x100d9570)) {
|
if (m_donutMissSound >= sizeOfArray(g_donutMissSounds)) {
|
||||||
m_unk0x421b = 0;
|
m_donutMissSound = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
objectId = g_unk0x100d9570[m_unk0x421b++];
|
objectId = g_donutMissSounds[m_donutMissSound++];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 5: {
|
case 5: {
|
||||||
if (m_unk0x421c >= sizeOfArray(g_unk0x100d9588)) {
|
if (m_islanderSound >= sizeOfArray(g_islanderSounds)) {
|
||||||
m_unk0x421c = 0;
|
m_islanderSound = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
objectId = g_unk0x100d9588[m_unk0x421c++];
|
objectId = g_islanderSounds[m_islanderSound++];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 6: {
|
case 6: {
|
||||||
if (m_unk0x421d >= sizeOfArray(g_unk0x100d95d8)) {
|
if (m_bricksterDonutSound >= sizeOfArray(g_bricksterDonutSounds)) {
|
||||||
m_unk0x421d = 0;
|
m_bricksterDonutSound = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_unk0x4220.Insert(g_unk0x100d95d8[m_unk0x421d++], 1);
|
m_unk0x4220.Insert(g_bricksterDonutSounds[m_bricksterDonutSound++], 1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -576,13 +576,12 @@ MxLong Act3::Notify(MxParam& p_param)
|
|||||||
m_cop2->VTable0xa8();
|
m_cop2->VTable0xa8();
|
||||||
|
|
||||||
m_brickster->VTable0xa8();
|
m_brickster->VTable0xa8();
|
||||||
|
m_pizzaHitSound = 0;
|
||||||
m_unk0x4218 = 0;
|
m_pizzaMissSound = 0;
|
||||||
m_unk0x4219 = 0;
|
m_copDonutSound = 0;
|
||||||
m_unk0x421a = 0;
|
m_donutMissSound = 0;
|
||||||
m_unk0x421b = 0;
|
m_islanderSound = 0;
|
||||||
m_unk0x421c = 0;
|
m_bricksterDonutSound = 0;
|
||||||
m_unk0x421d = 0;
|
|
||||||
|
|
||||||
MxS32 length;
|
MxS32 length;
|
||||||
LegoBuildingInfo* info = BuildingManager()->GetInfoArray(length);
|
LegoBuildingInfo* info = BuildingManager()->GetInfoArray(length);
|
||||||
@ -702,7 +701,7 @@ MxResult Act3::FUN_10073360(Act3Ammo& p_ammo, const Vector3& p_param2)
|
|||||||
{
|
{
|
||||||
assert(m_brickster);
|
assert(m_brickster);
|
||||||
m_brickster->FUN_100417a0(p_ammo, p_param2);
|
m_brickster->FUN_100417a0(p_ammo, p_param2);
|
||||||
FUN_10072ad0(1);
|
TriggerHitSound(1);
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -719,7 +718,7 @@ MxResult Act3::FUN_10073390(Act3Ammo& p_ammo, const Vector3& p_param2)
|
|||||||
m_cop2->FUN_10040350(p_ammo, p_param2);
|
m_cop2->FUN_10040350(p_ammo, p_param2);
|
||||||
}
|
}
|
||||||
|
|
||||||
FUN_10072ad0(3);
|
TriggerHitSound(3);
|
||||||
g_unk0x100f7814++;
|
g_unk0x100f7814++;
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1457,7 +1457,7 @@ void Infocenter::StartCredits()
|
|||||||
MxDSAction* action = presenter->GetAction();
|
MxDSAction* action = presenter->GetAction();
|
||||||
|
|
||||||
if (action) {
|
if (action) {
|
||||||
FUN_100b7220(action, MxDSAction::c_world, FALSE);
|
ApplyMask(action, MxDSAction::c_world, FALSE);
|
||||||
presenter->EndAction();
|
presenter->EndAction();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1473,7 +1473,7 @@ void Infocenter::StartCredits()
|
|||||||
|
|
||||||
MxDSAction* action = presenter->GetAction();
|
MxDSAction* action = presenter->GetAction();
|
||||||
if (action) {
|
if (action) {
|
||||||
FUN_100b7220(action, MxDSAction::c_world, FALSE);
|
ApplyMask(action, MxDSAction::c_world, FALSE);
|
||||||
presenter->EndAction();
|
presenter->EndAction();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -71,11 +71,11 @@ LegoResult LegoLOD::Read(Tgl::Renderer* p_renderer, LegoTextureContainer* p_text
|
|||||||
LegoU32 i, indexBackwards, indexForwards, tempNumVertsAndNormals;
|
LegoU32 i, indexBackwards, indexForwards, tempNumVertsAndNormals;
|
||||||
unsigned char paletteEntries[256];
|
unsigned char paletteEntries[256];
|
||||||
|
|
||||||
if (p_storage->Read(&m_unk0x08, sizeof(undefined4)) != SUCCESS) {
|
if (p_storage->Read(&m_flags, sizeof(LegoU32)) != SUCCESS) {
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GetUnknown0x08Test4()) {
|
if (SkipReadingData()) {
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,11 +86,11 @@ LegoResult LegoLOD::Read(Tgl::Renderer* p_renderer, LegoTextureContainer* p_text
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (m_numMeshes == 0) {
|
if (m_numMeshes == 0) {
|
||||||
ClearFlag(c_bit4);
|
ClearFlag(c_hasMesh);
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
SetFlag(c_bit4);
|
SetFlag(c_hasMesh);
|
||||||
|
|
||||||
m_melems = new Mesh[m_numMeshes];
|
m_melems = new Mesh[m_numMeshes];
|
||||||
memset(m_melems, 0, sizeof(*m_melems) * m_numMeshes);
|
memset(m_melems, 0, sizeof(*m_melems) * m_numMeshes);
|
||||||
@ -317,7 +317,7 @@ LegoLOD* LegoLOD::Clone(Tgl::Renderer* p_renderer)
|
|||||||
dupLod->m_melems[i].m_textured = m_melems[i].m_textured;
|
dupLod->m_melems[i].m_textured = m_melems[i].m_textured;
|
||||||
}
|
}
|
||||||
|
|
||||||
dupLod->m_unk0x08 = m_unk0x08;
|
dupLod->m_flags = m_flags;
|
||||||
dupLod->m_numMeshes = m_numMeshes;
|
dupLod->m_numMeshes = m_numMeshes;
|
||||||
dupLod->m_numVertices = m_numVertices;
|
dupLod->m_numVertices = m_numVertices;
|
||||||
dupLod->m_numPolys = m_numPolys;
|
dupLod->m_numPolys = m_numPolys;
|
||||||
|
|||||||
@ -260,7 +260,7 @@ LegoResult LegoROI::Read(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (j == 0) {
|
if (j == 0) {
|
||||||
if (surplusLODs != 0 && lod->GetUnknown0x08Test8()) {
|
if (surplusLODs != 0 && lod->IsExtraLOD()) {
|
||||||
numLODs++;
|
numLODs++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -277,7 +277,7 @@ LegoResult LegoROI::Read(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
if (surplusLODs != 0 && lod->GetUnknown0x08Test8()) {
|
if (surplusLODs != 0 && lod->IsExtraLOD()) {
|
||||||
numLODs++;
|
numLODs++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -92,7 +92,7 @@ void MakeSourceName(char*, const char*);
|
|||||||
void OmniError(const char* p_message, MxS32 p_status);
|
void OmniError(const char* p_message, MxS32 p_status);
|
||||||
void SetOmniUserMessage(void (*p_omniUserMessage)(const char*, MxS32));
|
void SetOmniUserMessage(void (*p_omniUserMessage)(const char*, MxS32));
|
||||||
MxBool ContainsPresenter(MxCompositePresenterList& p_presenterList, MxPresenter* p_presenter);
|
MxBool ContainsPresenter(MxCompositePresenterList& p_presenterList, MxPresenter* p_presenter);
|
||||||
void FUN_100b7220(MxDSAction* p_action, MxU32 p_newFlags, MxBool p_setFlags);
|
void ApplyMask(MxDSAction* p_action, MxU32 p_mask, MxBool p_setFlags);
|
||||||
MxBool KeyValueStringParse(char*, const char*, const char*);
|
MxBool KeyValueStringParse(char*, const char*, const char*);
|
||||||
|
|
||||||
// TEMPLATE: BETA10 0x1012dfd0
|
// TEMPLATE: BETA10 0x1012dfd0
|
||||||
|
|||||||
@ -153,16 +153,16 @@ void SetOmniUserMessage(void (*p_omniUserMessage)(const char*, MxS32))
|
|||||||
|
|
||||||
// FUNCTION: LEGO1 0x100b7220
|
// FUNCTION: LEGO1 0x100b7220
|
||||||
// FUNCTION: BETA10 0x10136f37
|
// FUNCTION: BETA10 0x10136f37
|
||||||
void FUN_100b7220(MxDSAction* p_action, MxU32 p_newFlags, MxBool p_setFlags)
|
void ApplyMask(MxDSAction* p_action, MxU32 p_mask, MxBool p_setFlags)
|
||||||
{
|
{
|
||||||
MxU32 oldFlags = p_action->GetFlags();
|
MxU32 oldFlags = p_action->GetFlags();
|
||||||
MxU32 newFlags;
|
MxU32 newFlags;
|
||||||
|
|
||||||
if (p_setFlags) {
|
if (p_setFlags) {
|
||||||
newFlags = oldFlags | p_newFlags;
|
newFlags = oldFlags | p_mask;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
newFlags = oldFlags & ~p_newFlags;
|
newFlags = oldFlags & ~p_mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
p_action->SetFlags(newFlags);
|
p_action->SetFlags(newFlags);
|
||||||
@ -172,7 +172,7 @@ void FUN_100b7220(MxDSAction* p_action, MxU32 p_newFlags, MxBool p_setFlags)
|
|||||||
MxDSAction* action;
|
MxDSAction* action;
|
||||||
|
|
||||||
while (cursor.Next(action)) {
|
while (cursor.Next(action)) {
|
||||||
FUN_100b7220(action, p_newFlags, p_setFlags);
|
ApplyMask(action, p_mask, p_setFlags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,10 +14,10 @@
|
|||||||
class ViewLOD : public LODObject {
|
class ViewLOD : public LODObject {
|
||||||
public:
|
public:
|
||||||
enum {
|
enum {
|
||||||
c_bit4 = 0x10
|
c_hasMesh = 0x10
|
||||||
};
|
};
|
||||||
|
|
||||||
ViewLOD(Tgl::Renderer* pRenderer) : m_meshBuilder(NULL), m_unk0x08(3) {}
|
ViewLOD(Tgl::Renderer* pRenderer) : m_meshBuilder(NULL), m_flags(3) {}
|
||||||
~ViewLOD() override;
|
~ViewLOD() override;
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100a6f30
|
// FUNCTION: LEGO1 0x100a6f30
|
||||||
@ -28,19 +28,19 @@ class ViewLOD : public LODObject {
|
|||||||
|
|
||||||
Tgl::MeshBuilder* GetMeshBuilder() { return m_meshBuilder; }
|
Tgl::MeshBuilder* GetMeshBuilder() { return m_meshBuilder; }
|
||||||
const Tgl::MeshBuilder* GetMeshBuilder() const { return m_meshBuilder; }
|
const Tgl::MeshBuilder* GetMeshBuilder() const { return m_meshBuilder; }
|
||||||
undefined4 GetUnknown0x08() { return m_unk0x08; }
|
unsigned int GetFlags() { return m_flags; }
|
||||||
unsigned char GetUnknown0x08Test4() { return m_unk0x08 & 0xffffff04; }
|
unsigned char SkipReadingData() { return m_flags & 0xffffff04; }
|
||||||
unsigned char GetUnknown0x08Test8() { return m_unk0x08 & 0xffffff08; }
|
unsigned char IsExtraLOD() { return m_flags & 0xffffff08; }
|
||||||
|
|
||||||
void SetFlag(unsigned char p_flag) { m_unk0x08 |= p_flag; }
|
void SetFlag(unsigned char p_flag) { m_flags |= p_flag; }
|
||||||
void ClearFlag(unsigned char p_flag) { m_unk0x08 &= ~p_flag; }
|
void ClearFlag(unsigned char p_flag) { m_flags &= ~p_flag; }
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x100a6f60
|
// SYNTHETIC: LEGO1 0x100a6f60
|
||||||
// ViewLOD::`scalar deleting destructor'
|
// ViewLOD::`scalar deleting destructor'
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Tgl::MeshBuilder* m_meshBuilder; // 0x04
|
Tgl::MeshBuilder* m_meshBuilder; // 0x04
|
||||||
undefined4 m_unk0x08; // 0x08
|
unsigned int m_flags; // 0x08
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // VIEWLOD_H
|
#endif // VIEWLOD_H
|
||||||
|
|||||||
@ -165,7 +165,7 @@ void ViewManager::UpdateROIDetailBasedOnLOD(ViewROI* p_roi, int p_lodLevel)
|
|||||||
if (lodLevel < 0) {
|
if (lodLevel < 0) {
|
||||||
lod = (ViewLOD*) p_roi->GetLOD(p_lodLevel);
|
lod = (ViewLOD*) p_roi->GetLOD(p_lodLevel);
|
||||||
|
|
||||||
if (lod->GetUnknown0x08() & ViewLOD::c_bit4) {
|
if (lod->GetFlags() & ViewLOD::c_hasMesh) {
|
||||||
scene->Add(group);
|
scene->Add(group);
|
||||||
SetAppData(p_roi, reinterpret_cast<LPD3DRM_APPDATA>(p_roi));
|
SetAppData(p_roi, reinterpret_cast<LPD3DRM_APPDATA>(p_roi));
|
||||||
}
|
}
|
||||||
@ -184,7 +184,7 @@ void ViewManager::UpdateROIDetailBasedOnLOD(ViewROI* p_roi, int p_lodLevel)
|
|||||||
lod = (ViewLOD*) p_roi->GetLOD(p_lodLevel);
|
lod = (ViewLOD*) p_roi->GetLOD(p_lodLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lod->GetUnknown0x08() & ViewLOD::c_bit4) {
|
if (lod->GetFlags() & ViewLOD::c_hasMesh) {
|
||||||
meshBuilder = lod->GetMeshBuilder();
|
meshBuilder = lod->GetMeshBuilder();
|
||||||
|
|
||||||
if (meshBuilder != NULL) {
|
if (meshBuilder != NULL) {
|
||||||
@ -389,7 +389,7 @@ inline int ViewManager::GetFirstLODIndex(ViewROI* p_roi)
|
|||||||
const LODListBase* lods = p_roi->GetLODs();
|
const LODListBase* lods = p_roi->GetLODs();
|
||||||
|
|
||||||
if (lods != NULL && lods->Size() > 0) {
|
if (lods != NULL && lods->Size() > 0) {
|
||||||
if (((ViewLOD*) p_roi->GetLOD(0))->GetUnknown0x08Test8()) {
|
if (((ViewLOD*) p_roi->GetLOD(0))->IsExtraLOD()) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -404,7 +404,7 @@ inline int ViewManager::GetFirstLODIndex(ViewROI* p_roi)
|
|||||||
const LODListBase* lods = ((ViewROI*) *it)->GetLODs();
|
const LODListBase* lods = ((ViewROI*) *it)->GetLODs();
|
||||||
|
|
||||||
if (lods != NULL && lods->Size() > 0) {
|
if (lods != NULL && lods->Size() > 0) {
|
||||||
if (((ViewLOD*) ((ViewROI*) *it)->GetLOD(0))->GetUnknown0x08Test8()) {
|
if (((ViewLOD*) ((ViewROI*) *it)->GetLOD(0))->IsExtraLOD()) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user