diff --git a/LEGO1/lego/legoomni/include/animstate.h b/LEGO1/lego/legoomni/include/animstate.h index ca1ad20a..8f3eda25 100644 --- a/LEGO1/lego/legoomni/include/animstate.h +++ b/LEGO1/lego/legoomni/include/animstate.h @@ -17,7 +17,7 @@ struct ModelInfo { struct AnimInfo { char* m_name; // 0x00 MxU32 m_objectId; // 0x04 - MxS16 m_unk0x08; // 0x08 + MxS16 m_location; // 0x08 MxBool m_unk0x0a; // 0x0a MxU8 m_unk0x0b; // 0x0b MxU8 m_unk0x0c; // 0x0c diff --git a/LEGO1/lego/legoomni/include/islepathactor.h b/LEGO1/lego/legoomni/include/islepathactor.h index 569221f1..6a2c1e78 100644 --- a/LEGO1/lego/legoomni/include/islepathactor.h +++ b/LEGO1/lego/legoomni/include/islepathactor.h @@ -38,7 +38,7 @@ class IslePathActor : public LegoPathActor { float p_srcScale, MxS16 p_dest, float p_destScale, - undefined4 p_unk0x30, + MxU32 p_location, JukeboxScript::Script p_music ) { @@ -50,7 +50,7 @@ class IslePathActor : public LegoPathActor { m_srcScale = p_srcScale; m_dest = p_dest; m_destScale = p_destScale; - m_unk0x30 = p_unk0x30; + m_location = p_location; m_music = p_music; } @@ -65,7 +65,7 @@ class IslePathActor : public LegoPathActor { m_srcScale = p_location.m_srcScale; m_dest = p_location.m_dest; m_destScale = p_location.m_destScale; - m_unk0x30 = p_location.m_unk0x30; + m_location = p_location.m_location; m_music = p_location.m_music; return *this; } @@ -78,7 +78,7 @@ class IslePathActor : public LegoPathActor { float m_srcScale; // 0x24 MxS16 m_dest; // 0x28 float m_destScale; // 0x2c - undefined4 m_unk0x30; // 0x30 + MxU32 m_location; // 0x30 JukeboxScript::Script m_music; // 0x34 }; diff --git a/LEGO1/lego/legoomni/include/legoanimationmanager.h b/LEGO1/lego/legoomni/include/legoanimationmanager.h index fd1c0c9e..18479255 100644 --- a/LEGO1/lego/legoomni/include/legoanimationmanager.h +++ b/LEGO1/lego/legoomni/include/legoanimationmanager.h @@ -9,6 +9,7 @@ #include "mxgeometry/mxgeometry3d.h" class AnimState; +class IslePathActor; class LegoAnimPresenter; class LegoEntity; class LegoExtraActor; @@ -81,7 +82,7 @@ class LegoAnimationManager : public MxCore { void Suspend(); void Resume(); void FUN_1005f6d0(MxBool p_unk0x400); - void FUN_1005f700(MxBool p_unk0x3a); + void EnableCamAnims(MxBool p_enableCamAnims); MxResult LoadScriptInfo(MxS32 p_scriptIndex); MxBool FindVehicle(const char* p_name, MxU32& p_index); MxResult ReadAnimInfo(LegoFile* p_file, AnimInfo* p_info); @@ -101,6 +102,7 @@ class LegoAnimationManager : public MxCore { MxBool p_param8, MxBool p_param9 ); + void CameraTriggerFire(IslePathActor* p_actor, undefined4, MxU32 p_location, MxBool p_bool); void FUN_10061010(MxBool p_und); LegoTranInfo* GetTranInfo(MxU32 p_index); void FUN_10062770(); @@ -183,8 +185,8 @@ class LegoAnimationManager : public MxCore { MxPresenter* m_unk0x28[2]; // 0x28 MxLong m_unk0x30[2]; // 0x30 MxBool m_unk0x38; // 0x38 - MxBool m_unk0x39; // 0x39 - MxBool m_unk0x3a; // 0x3a + MxBool m_animRunning; // 0x39 + MxBool m_enableCamAnims; // 0x3a Extra m_extras[40]; // 0x3c MxU32 m_lastExtraCharacterId; // 0x3fc MxBool m_unk0x400; // 0x400 @@ -199,7 +201,7 @@ class LegoAnimationManager : public MxCore { undefined4 m_unk0x41c; // 0x41c AnimState* m_animState; // 0x420 LegoROIList* m_unk0x424; // 0x424 - MxBool m_unk0x428; // 0x428 + MxBool m_suspendedEnableCamAnims; // 0x428 MxBool m_unk0x429; // 0x429 MxBool m_unk0x42a; // 0x42a MxBool m_suspended; // 0x42b diff --git a/LEGO1/lego/legoomni/include/legolocations.h b/LEGO1/lego/legoomni/include/legolocations.h index a049dc2f..35806a30 100644 --- a/LEGO1/lego/legoomni/include/legolocations.h +++ b/LEGO1/lego/legoomni/include/legolocations.h @@ -23,7 +23,8 @@ struct LegoLocation { float m_up[3]; // 0x20 Boundary m_boundaryA; // 0x2c Boundary m_boundaryB; // 0x44 - undefined4 m_unk0x5c; // 0x5c + MxBool m_unk0x5c; // 0x5c + MxU8 m_frequency; // 0x5d }; extern LegoLocation g_locations[70]; diff --git a/LEGO1/lego/legoomni/include/legotraninfo.h b/LEGO1/lego/legoomni/include/legotraninfo.h index aa35f31c..d84ac175 100644 --- a/LEGO1/lego/legoomni/include/legotraninfo.h +++ b/LEGO1/lego/legoomni/include/legotraninfo.h @@ -23,7 +23,7 @@ struct LegoTranInfo { m_unk0x08 = NULL; m_unk0x0c = NULL; m_unk0x10 = 0; - m_unk0x12 = -1; + m_location = -1; m_unk0x14 = FALSE; m_unk0x1c = NULL; m_unk0x20 = NULL; @@ -42,7 +42,7 @@ struct LegoTranInfo { LegoROI* m_unk0x08; // 0x08 MxMatrix* m_unk0x0c; // 0x0c MxU8 m_unk0x10; // 0x10 - MxS16 m_unk0x12; // 0x12 + MxS16 m_location; // 0x12 MxBool m_unk0x14; // 0x14 MxBool m_unk0x15; // 0x15 MxU32 m_objectId; // 0x18 diff --git a/LEGO1/lego/legoomni/include/legoutils.h b/LEGO1/lego/legoomni/include/legoutils.h index cb710947..36364268 100644 --- a/LEGO1/lego/legoomni/include/legoutils.h +++ b/LEGO1/lego/legoomni/include/legoutils.h @@ -24,7 +24,7 @@ Extra::ActionType MatchActionString(const char*); void InvokeAction(Extra::ActionType p_actionId, const MxAtomId& p_pAtom, MxS32 p_targetEntityId, LegoEntity* p_sender); void SetCameraControllerFromIsle(); void ConvertHSVToRGB(float p_h, float p_s, float p_v, float* p_rOut, float* p_bOut, float* p_gOut); -void FUN_1003ecc0(IslePathActor* p_actor, undefined4, undefined4, MxBool); +void PlayCamAnim(IslePathActor* p_actor, undefined4 p_unused, MxU32 p_location, MxBool p_bool); void FUN_1003eda0(); MxBool RemoveFromCurrentWorld(const MxAtomId& p_atomId, MxS32 p_id); void FUN_1003ef00(MxBool p_enable); diff --git a/LEGO1/lego/legoomni/src/actors/islepathactor.cpp b/LEGO1/lego/legoomni/src/actors/islepathactor.cpp index 02411891..91cf9804 100644 --- a/LEGO1/lego/legoomni/src/actors/islepathactor.cpp +++ b/LEGO1/lego/legoomni/src/actors/islepathactor.cpp @@ -498,10 +498,10 @@ void IslePathActor::SpawnPlayer(LegoGameState::Area p_area, MxBool p_und, MxU8 p LegoVehicleBuildState* state = NULL; if (p_flags & c_spawnBit1) { - MxBool und = FALSE; + MxBool camAnim = FALSE; IsleScript::Script anim; - switch (g_spawnLocations[i].m_unk0x30) { + switch (g_spawnLocations[i].m_location) { case 0x00: case 0x44: break; @@ -522,7 +522,7 @@ void IslePathActor::SpawnPlayer(LegoGameState::Area p_area, MxBool p_und, MxU8 p anim = IsleScript::c_irt007in_RunAnim; break; default: - und = TRUE; + camAnim = TRUE; break; } @@ -530,12 +530,12 @@ void IslePathActor::SpawnPlayer(LegoGameState::Area p_area, MxBool p_und, MxU8 p if (AnimationManager()->FUN_10060dc0(anim, NULL, TRUE, FALSE, NULL, FALSE, TRUE, TRUE, TRUE) == SUCCESS) { state->m_unk0x4e = TRUE; - und = FALSE; + camAnim = FALSE; } } - if (und) { - FUN_1003ecc0(this, 0, g_spawnLocations[i].m_unk0x30, TRUE); + if (camAnim) { + PlayCamAnim(this, 0, g_spawnLocations[i].m_location, TRUE); } } diff --git a/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp b/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp index 35a97b8d..031fe940 100644 --- a/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp +++ b/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp @@ -397,7 +397,7 @@ void LegoAnimationManager::Reset(MxBool p_und) Init(); m_suspended = suspended; - m_unk0x428 = m_unk0x3a; + m_suspendedEnableCamAnims = m_enableCamAnims; m_unk0x429 = m_unk0x400; m_unk0x42a = m_unk0x402; } @@ -417,7 +417,7 @@ void LegoAnimationManager::Suspend() if (!m_suspended) { m_suspended = TRUE; - m_unk0x428 = m_unk0x3a; + m_suspendedEnableCamAnims = m_enableCamAnims; m_unk0x429 = m_unk0x400; m_unk0x42a = m_unk0x402; m_unk0x402 = FALSE; @@ -460,7 +460,7 @@ void LegoAnimationManager::Suspend() m_unk0x18 = 0; m_unk0x1a = FALSE; - m_unk0x3a = FALSE; + m_enableCamAnims = FALSE; m_unk0x400 = FALSE; m_unk0x414 = 0; m_unk0x401 = FALSE; @@ -478,7 +478,7 @@ void LegoAnimationManager::Resume() if (m_suspended) { m_unk0x408 = m_unk0x40c = m_unk0x404 = Timer()->GetTime(); m_unk0x410 = 5000; - m_unk0x3a = m_unk0x428; + m_enableCamAnims = m_suspendedEnableCamAnims; m_unk0x400 = m_unk0x429; m_unk0x402 = m_unk0x42a; m_suspended = FALSE; @@ -513,8 +513,8 @@ void LegoAnimationManager::Init() } m_unk0x38 = FALSE; - m_unk0x39 = FALSE; - m_unk0x3a = TRUE; + m_animRunning = FALSE; + m_enableCamAnims = TRUE; m_lastExtraCharacterId = 0; m_unk0x400 = FALSE; m_unk0x414 = 0; @@ -564,13 +564,13 @@ void LegoAnimationManager::FUN_1005f6d0(MxBool p_unk0x400) // FUNCTION: LEGO1 0x1005f700 // FUNCTION: BETA10 0x1004024c -void LegoAnimationManager::FUN_1005f700(MxBool p_unk0x3a) +void LegoAnimationManager::EnableCamAnims(MxBool p_enableCamAnims) { if (m_suspended) { - m_unk0x428 = p_unk0x3a; + m_suspendedEnableCamAnims = p_enableCamAnims; } else { - m_unk0x3a = p_unk0x3a; + m_enableCamAnims = p_enableCamAnims; } } @@ -597,7 +597,7 @@ MxResult LegoAnimationManager::LoadScriptInfo(MxS32 p_scriptIndex) } m_unk0x38 = FALSE; - m_unk0x39 = FALSE; + m_animRunning = FALSE; m_unk0x430 = FALSE; m_unk0x42c = NULL; @@ -681,7 +681,7 @@ MxResult LegoAnimationManager::LoadScriptInfo(MxS32 p_scriptIndex) m_anims[j].m_unk0x2a[k] = -1; } - if (m_anims[j].m_unk0x08 == -1) { + if (m_anims[j].m_location == -1) { for (MxS32 l = 0; l < m_anims[j].m_modelCount; l++) { MxS32 index = GetCharacterIndex(m_anims[j].m_models[l].m_name); @@ -714,10 +714,10 @@ MxResult LegoAnimationManager::LoadScriptInfo(MxS32 p_scriptIndex) m_unk0x402 = TRUE; if (m_suspended) { - m_unk0x428 = m_unk0x3a; + m_suspendedEnableCamAnims = m_enableCamAnims; m_unk0x429 = m_unk0x400; m_unk0x42a = TRUE; - m_unk0x3a = FALSE; + m_enableCamAnims = FALSE; m_unk0x400 = FALSE; m_unk0x402 = FALSE; } @@ -769,7 +769,7 @@ MxResult LegoAnimationManager::ReadAnimInfo(LegoFile* p_file, AnimInfo* p_info) goto done; } - if (p_file->Read(&p_info->m_unk0x08, sizeof(p_info->m_unk0x08)) == FAILURE) { + if (p_file->Read(&p_info->m_location, sizeof(p_info->m_location)) == FAILURE) { goto done; } if (p_file->Read(&p_info->m_unk0x0a, sizeof(p_info->m_unk0x0a)) == FAILURE) { @@ -896,7 +896,7 @@ void LegoAnimationManager::FUN_10060540(MxBool p_unk0x29) // FUNCTION: BETA10 0x10041463 void LegoAnimationManager::FUN_10060570(MxBool p_unk0x1a) { - m_unk0x39 = FALSE; + m_animRunning = FALSE; m_unk0x430 = FALSE; m_unk0x42c = NULL; @@ -938,7 +938,7 @@ MxResult LegoAnimationManager::FUN_100605e0( AnimInfo& animInfo = m_anims[p_index]; if (!p_bool1) { - if (m_unk0x39 || !animInfo.m_unk0x29) { + if (m_animRunning || !animInfo.m_unk0x29) { return FAILURE; } @@ -958,7 +958,7 @@ MxResult LegoAnimationManager::FUN_100605e0( tranInfo->m_index = ++m_unk0x1c; tranInfo->m_unk0x10 = 0; tranInfo->m_unk0x08 = p_roi; - tranInfo->m_unk0x12 = m_anims[p_index].m_unk0x08; + tranInfo->m_location = m_anims[p_index].m_location; tranInfo->m_unk0x14 = p_unk0x0a; tranInfo->m_objectId = animInfo.m_objectId; tranInfo->m_unk0x15 = p_bool2; @@ -1002,7 +1002,7 @@ MxResult LegoAnimationManager::FUN_100605e0( } } - m_unk0x39 = TRUE; + m_animRunning = TRUE; result = SUCCESS; } } @@ -1024,7 +1024,7 @@ MxResult LegoAnimationManager::FUN_100609f0(MxU32 p_objectId, MxMatrix* p_matrix info->m_index = ++m_unk0x1c; info->m_unk0x10 = 0; info->m_unk0x08 = NULL; - info->m_unk0x12 = -1; + info->m_location = -1; info->m_unk0x14 = FALSE; info->m_objectId = p_objectId; @@ -1054,7 +1054,7 @@ MxResult LegoAnimationManager::FUN_100609f0(MxU32 p_objectId, MxMatrix* p_matrix if (StartActionIfUnknown0x13c(action) == SUCCESS) { BackgroundAudioManager()->LowerVolume(); info->m_flags |= LegoTranInfo::c_bit2; - m_unk0x39 = TRUE; + m_animRunning = TRUE; m_unk0x404 = Timer()->GetTime(); result = SUCCESS; } @@ -1151,6 +1151,49 @@ MxResult LegoAnimationManager::FUN_10060dc0( return result; } +// FUNCTION: LEGO1 0x10060eb0 +// FUNCTION: BETA10 0x1004206c +void LegoAnimationManager::CameraTriggerFire(IslePathActor* p_actor, undefined4, MxU32 p_location, MxBool p_bool) +{ + if (Lego()->m_unk0x13c && m_enableCamAnims && !m_animRunning) { + LegoLocation* location = LegoNavController::GetLocation(p_location); + + if (location != NULL) { + if (location->m_frequency == 0) { + return; + } + + if (location->m_unk0x5c && location->m_frequency < rand() % 100) { + return; + } + } + + MxU16 unk0x0e, unk0x10; + if (FUN_100617c0(p_location, unk0x0e, unk0x10) == SUCCESS) { + MxU16 index = unk0x0e; + MxU32 unk0x22 = -1; + MxBool success = FALSE; + + for (MxU16 i = unk0x0e; i <= unk0x10; i++) { + AnimInfo& animInfo = m_anims[i]; + + if ((p_bool || !FUN_100623a0(animInfo)) && !FUN_10062710(animInfo) && animInfo.m_unk0x29 && + animInfo.m_unk0x22 < unk0x22 && (animInfo.m_unk0x22 == 0 || *animInfo.m_name != 'i') && + *animInfo.m_name != 'I') { + index = i; + unk0x22 = animInfo.m_unk0x22; + success = TRUE; + } + } + + if (success) { + FUN_100605e0(index, m_anims[index].m_unk0x0a, NULL, TRUE, NULL, FALSE, TRUE, TRUE, TRUE); + location->m_unk0x5c = TRUE; + } + } + } +} + // FUNCTION: LEGO1 0x10061010 // FUNCTION: BETA10 0x100422cc void LegoAnimationManager::FUN_10061010(MxBool p_und) @@ -1168,7 +1211,7 @@ void LegoAnimationManager::FUN_10061010(MxBool p_und) // TODO: Match MxU32 flags = tranInfo->m_flags; - if (tranInfo->m_unk0x14 && tranInfo->m_unk0x12 != -1 && p_und) { + if (tranInfo->m_unk0x14 && tranInfo->m_location != -1 && p_und) { LegoAnim* anim; if (tranInfo->m_presenter->GetPresenter() != NULL && @@ -1211,7 +1254,7 @@ void LegoAnimationManager::FUN_10061010(MxBool p_und) } } - m_unk0x39 = unk0x39; + m_animRunning = unk0x39; m_unk0x404 = Timer()->GetTime(); } @@ -1245,18 +1288,18 @@ void LegoAnimationManager::FUN_10061530() // FUNCTION: LEGO1 0x100617c0 // FUNCTION: BETA10 0x1004240b -MxResult LegoAnimationManager::FUN_100617c0(MxS32 p_unk0x08, MxU16& p_unk0x0e, MxU16& p_unk0x10) +MxResult LegoAnimationManager::FUN_100617c0(MxS32 p_location, MxU16& p_unk0x0e, MxU16& p_unk0x10) { MxResult result = FAILURE; MxU16 unk0x0e = 0; MxU16 unk0x10 = 0; MxBool success = FALSE; - if (p_unk0x08 == -1) { + if (p_location == -1) { MxS32 i; for (i = 0; i < m_animCount; i++) { - if (m_anims[i].m_unk0x08 == p_unk0x08) { + if (m_anims[i].m_location == p_location) { unk0x0e = i; success = TRUE; break; @@ -1264,7 +1307,7 @@ MxResult LegoAnimationManager::FUN_100617c0(MxS32 p_unk0x08, MxU16& p_unk0x0e, M } if (success) { - for (; i < m_animCount && m_anims[i].m_unk0x08 == p_unk0x08; i++) { + for (; i < m_animCount && m_anims[i].m_location == p_location; i++) { unk0x10 = i; } } @@ -1272,8 +1315,8 @@ MxResult LegoAnimationManager::FUN_100617c0(MxS32 p_unk0x08, MxU16& p_unk0x0e, M else { MxS32 i; - for (i = 0; m_animCount > i && m_anims[i].m_unk0x08 != -1; i++) { - if (m_anims[i].m_unk0x08 == p_unk0x08) { + for (i = 0; m_animCount > i && m_anims[i].m_location != -1; i++) { + if (m_anims[i].m_location == p_location) { unk0x0e = i; success = TRUE; break; @@ -1281,7 +1324,7 @@ MxResult LegoAnimationManager::FUN_100617c0(MxS32 p_unk0x08, MxU16& p_unk0x0e, M } if (success) { - for (; i < m_animCount && m_anims[i].m_unk0x08 == p_unk0x08; i++) { + for (; i < m_animCount && m_anims[i].m_location == p_location; i++) { unk0x10 = i; } } @@ -1340,7 +1383,7 @@ MxLong LegoAnimationManager::Notify(MxParam& p_param) BackgroundAudioManager()->RaiseVolume(); } - m_unk0x39 = FALSE; + m_animRunning = FALSE; m_unk0x404 = Timer()->GetTime(); found = TRUE; @@ -1441,7 +1484,7 @@ MxResult LegoAnimationManager::Tickle() FUN_10064b50(time); - if (!m_unk0x39 && time - m_unk0x404 > 10000 && speed < g_unk0x100f74b0[0][0] && speed > g_unk0x100f74b0[5][0]) { + if (!m_animRunning && time - m_unk0x404 > 10000 && speed < g_unk0x100f74b0[0][0] && speed > g_unk0x100f74b0[5][0]) { LegoPathBoundary* boundary = actor->GetBoundary(); Mx3DPointFloat position(roi->GetWorldPosition()); @@ -1809,7 +1852,7 @@ void LegoAnimationManager::AddExtra(MxS32 p_location, MxBool p_und) { LegoLocation::Boundary* boundary = NULL; - if (p_und || (!m_unk0x39 && m_unk0x400)) { + if (p_und || (!m_animRunning && m_unk0x400)) { LegoWorld* world = CurrentWorld(); if (world != NULL) { diff --git a/LEGO1/lego/legoomni/src/common/legoanimmmpresenter.cpp b/LEGO1/lego/legoomni/src/common/legoanimmmpresenter.cpp index 0a3e882b..d1c73605 100644 --- a/LEGO1/lego/legoomni/src/common/legoanimmmpresenter.cpp +++ b/LEGO1/lego/legoomni/src/common/legoanimmmpresenter.cpp @@ -427,7 +427,7 @@ MxBool LegoAnimMMPresenter::FUN_1004b6d0(MxLong p_time) LegoROI* viewROI = VideoManager()->GetViewROI(); IslePathActor* actor = CurrentActor(); - if (m_tranInfo != NULL && m_tranInfo->m_unk0x14 && m_tranInfo->m_unk0x12 != -1 && actor != NULL) { + if (m_tranInfo != NULL && m_tranInfo->m_unk0x14 && m_tranInfo->m_location != -1 && actor != NULL) { if (m_unk0x64 != NULL) { undefined4 und = 1; diff --git a/LEGO1/lego/legoomni/src/common/legoutils.cpp b/LEGO1/lego/legoomni/src/common/legoutils.cpp index ef2631b4..0bc11754 100644 --- a/LEGO1/lego/legoomni/src/common/legoutils.cpp +++ b/LEGO1/lego/legoomni/src/common/legoutils.cpp @@ -20,6 +20,7 @@ #include "mxmisc.h" #include "mxnotificationmanager.h" #include "mxstreamer.h" +#include "mxtype19notificationparam.h" #include "mxtypes.h" #include "mxutilities.h" #include "mxvariabletable.h" @@ -341,11 +342,21 @@ void ConvertHSVToRGB(float p_h, float p_s, float p_v, float* p_rOut, float* p_bO } } -// STUB: LEGO1 0x1003ecc0 +// FUNCTION: LEGO1 0x1003ecc0 // FUNCTION: BETA10 0x100d4b38 -void FUN_1003ecc0(IslePathActor* p_actor, undefined4, undefined4, MxBool) +void PlayCamAnim(IslePathActor* p_actor, undefined4 p_unused, MxU32 p_location, MxBool p_bool) { - // TODO + LegoWorld* world = CurrentWorld(); + MxLong result = 0; + + if (world != NULL) { + MxType19NotificationParam param(c_notificationType19, p_actor, 0x43, p_location); + result = world->Notify(param); + } + + if (result == 0) { + AnimationManager()->CameraTriggerFire(p_actor, p_unused, p_location, p_bool); + } } // FUNCTION: LEGO1 0x1003eda0 diff --git a/LEGO1/lego/legoomni/src/entity/legolocations.cpp b/LEGO1/lego/legoomni/src/entity/legolocations.cpp index 68627a5d..393f4b68 100644 --- a/LEGO1/lego/legoomni/src/entity/legolocations.cpp +++ b/LEGO1/lego/legoomni/src/entity/legolocations.cpp @@ -16,9 +16,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 0}, {1, "LCAMBA1", 0.852546, @@ -30,9 +31,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"EDG02_13", 2, 0.75, 0, 0.25, TRUE}, - {NULL, 0, 0, 0, 0, FALSE}, - 10240}, + {"EDG02_13", 2, 0.75, 0, 0.25, 1}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 40}, {2, "LCAMBA2", 3.505301, @@ -44,9 +46,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"EDG02_37", 2, 0.75, 0, 0.25, TRUE}, - {NULL, 0, 0, 0, 0, FALSE}, - 5120}, + {"EDG02_37", 2, 0.75, 0, 0.25, 1}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 20}, {3, "LCAMBA3", -7.472569, @@ -58,9 +61,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"EDG02_26", 0, 0.75, 2, 0.25, TRUE}, - {NULL, 0, 0, 0, 0, FALSE}, - 5120}, + {"EDG02_26", 0, 0.75, 2, 0.25, 1}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 20}, {4, "LCAMBA4", 38.55205, @@ -72,9 +76,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"EDG00_146", 0, 0.5, 2, 0.5, TRUE}, - {NULL, 0, 0, 0, 0, FALSE}, - 7680}, + {"EDG00_146", 0, 0.5, 2, 0.5, 1}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 30}, {5, "LCAMCA1", -36.778473, @@ -86,8 +91,9 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"INT01", 2, 0.5, 6, 0.5, TRUE}, - {NULL, 0, 0, 0, 0, FALSE}, + {"INT01", 2, 0.5, 6, 0.5, 1}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {6, "LCAMCA2", @@ -100,8 +106,9 @@ LegoLocation g_locations[] = { 0.000446, 0.999999, -0.001387, - {"EDG00_104", 0, 0.5, 2, 0.5, TRUE}, - {NULL, 0, 0, 0, 0, FALSE}, + {"EDG00_104", 0, 0.5, 2, 0.5, 1}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {7, "LCAMCA3", @@ -114,8 +121,9 @@ LegoLocation g_locations[] = { -0.000173, 0.999998, 0.001888, - {"EDG02_58", 2, 0.25, 0, 0.75, TRUE}, - {NULL, 0, 0, 0, 0, FALSE}, + {"EDG02_58", 2, 0.25, 0, 0.75, 1}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {8, "LCAMGS1", @@ -128,9 +136,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"EDG02_40", 2, 0.25, 0, 0.25, TRUE}, - {NULL, 0, 0, 0, 0, FALSE}, - 17920}, + {"EDG02_40", 2, 0.25, 0, 0.25, 1}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 70}, {9, "LCAMGS2", 25.153421, @@ -142,8 +151,9 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"INT19", 1, 0.75, 0, 0.75, TRUE}, - {NULL, 0, 0, 0, 0, FALSE}, + {"INT19", 1, 0.75, 0, 0.75, 1}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {10, "LCAMGS3", @@ -156,8 +166,9 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"EDG00_74", 0, 0.5, 2, 0.5, TRUE}, - {NULL, 0, 0, 0, 0, FALSE}, + {"EDG00_74", 0, 0.5, 2, 0.5, 1}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {11, "LCAMHO1", @@ -170,9 +181,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 12800}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 50}, {12, "LCAMHO2", 90.92687, @@ -184,8 +196,9 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {13, "LCAMHO3", @@ -198,8 +211,9 @@ LegoLocation g_locations[] = { 0.005781, 0.999976, 0.003708, - {"EDG02_27", 1, 0.89, 2, 0.89, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {"EDG02_27", 1, 0.89, 2, 0.89, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {14, "LCAMHO4", @@ -212,9 +226,10 @@ LegoLocation g_locations[] = { -0.034088, 0.999355, -0.011255, - {"EDG02_27", 1, 0.89, 2, 0.89, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 25600}, + {"EDG02_27", 1, 0.89, 2, 0.89, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 100}, {15, "LCAMIC1", 80.11602, @@ -226,8 +241,9 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"EDG00_69", 2, 0.5, 0, 0.5, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {"EDG00_69", 2, 0.5, 0, 0.5, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {16, "LCAMIC2", @@ -240,8 +256,9 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"EDG02_66", 2, 0.5, 0, 0.5, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {"EDG02_66", 2, 0.5, 0, 0.5, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {17, "LCAMIC3", @@ -254,9 +271,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"EDG02_68", 0, 0.5, 2, 0.5, TRUE}, - {NULL, 0, 0, 0, 0, FALSE}, - 5120}, + {"EDG02_68", 0, 0.5, 2, 0.5, 1}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 20}, {18, "LCAMJA1", 95.05279, @@ -268,9 +286,10 @@ LegoLocation g_locations[] = { -0.006372, 0.999977, -0.002478, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 25600}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 100}, {19, "LCAMJA2", 97.214066, @@ -282,8 +301,9 @@ LegoLocation g_locations[] = { -0.010811, 0.999927, 0.005453, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {20, "LCAMJA3", @@ -296,8 +316,9 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"INT33", 1, 0.9, 3, 0.9, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {"INT33", 1, 0.9, 3, 0.9, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {21, "LCAMJA4", @@ -310,8 +331,9 @@ LegoLocation g_locations[] = { -0.001442, 0.999945, 0.010407, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {22, "LCAMJA5", @@ -324,8 +346,9 @@ LegoLocation g_locations[] = { -0.007107, 0.999949, -0.007199, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {23, "LCAMJS1", @@ -338,9 +361,10 @@ LegoLocation g_locations[] = { 0.000653, 0.999999, -0.000932, - {"INT26", 0, 0.5, 3, 0.5, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 25600}, + {"INT26", 0, 0.5, 3, 0.5, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 100}, {24, "LCAMJS2", 14.753909, @@ -352,9 +376,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 25600}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 100}, {25, "LCAMJS3", 12.373611, @@ -366,9 +391,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 25600}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 100}, {26, "LCAMJS4", 27.136557, @@ -380,8 +406,9 @@ LegoLocation g_locations[] = { -0.000261, 0.999999, -0.001364, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {27, "LCAMMT1", @@ -394,9 +421,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 12800}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 50}, {28, "LCAMMT2", -58.28056, @@ -408,8 +436,9 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {29, "LCAMPK1", @@ -422,9 +451,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"EDG00_83", 0, 0.9, 2, 0.9, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 12800}, + {"EDG00_83", 0, 0.9, 2, 0.9, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 50}, {30, "LCAMPK2", 63.75, @@ -436,8 +466,9 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {31, "LCAMPK4", @@ -450,9 +481,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 6400}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 25}, {32, "LCAMPO1", -24.38507, @@ -464,9 +496,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 5120}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 20}, {33, "LCAMPO2", -41.35899, @@ -478,8 +511,9 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"EDG00_191", 0, 0.5, 2, 0.5, TRUE}, - {NULL, 0, 0, 0, 0, FALSE}, + {"EDG00_191", 0, 0.5, 2, 0.5, 1}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {34, "LCAMPS1", @@ -492,9 +526,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"EDG02_40", 0, 0.5, 2, 0.5, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 6400}, + {"EDG02_40", 0, 0.5, 2, 0.5, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 25}, {35, "LCAMPS2", 70.99095, @@ -506,9 +541,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 6400}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 25}, {36, "LCAMPS3", 73.92391, @@ -520,9 +556,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"EDG02_66", 1, 0.15, 2, 0.15, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 6400}, + {"EDG02_66", 1, 0.15, 2, 0.15, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 25}, {37, "LCAMPS4", 61.471172, @@ -534,8 +571,9 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"EDG02_40", 0, 0.5, 2, 0.5, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {"EDG02_40", 0, 0.5, 2, 0.5, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {38, "LCAMPZ1", @@ -548,9 +586,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 20480}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 80}, {39, "LCAMPZ2", -21.870003, @@ -562,9 +601,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 23040}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 90}, {40, "LCAMPZ3", -21.860731, @@ -576,9 +616,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"EDG00_24", 0, 0.9, 2, 0.9, TRUE}, - {NULL, 0, 0, 0, 0, FALSE}, - 25600}, + {"EDG00_24", 0, 0.9, 2, 0.9, 1}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 100}, {41, "LCAMPZ4", -20.492962, @@ -590,9 +631,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 0}, {42, "LCAMPZ5", -11.0625, @@ -604,9 +646,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 12800}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 50}, {43, "LCAMPZ6", -14.837131, @@ -618,8 +661,9 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {44, "LCAMPZ7", @@ -632,8 +676,9 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {45, "LCAMRA1", @@ -646,8 +691,9 @@ LegoLocation g_locations[] = { -0.007751, 0.998685, -0.050677, - {"EDG00_03", 1, 0.5, 3, 0.5, TRUE}, - {NULL, 0, 0, 0, 0, FALSE}, + {"EDG00_03", 1, 0.5, 3, 0.5, 1}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {46, "LCAMRA2", @@ -660,9 +706,10 @@ LegoLocation g_locations[] = { -0.000078, 1, 0.000105, - {"EDG01_17", 0, 0.5, 3, 0.5, TRUE}, - {NULL, 0, 0, 0, 0, FALSE}, - 6400}, + {"EDG01_17", 0, 0.5, 3, 0.5, 1}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 25}, {47, "LCAMRA3", -57.06778, @@ -674,8 +721,9 @@ LegoLocation g_locations[] = { -0.000112, 1, 0.000021, - {"EDG01_40", 2, 0.5, 0, 0.5, TRUE}, - {NULL, 0, 0, 0, 0, FALSE}, + {"EDG01_40", 2, 0.5, 0, 0.5, 1}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {48, "LCAMRA4", @@ -688,9 +736,10 @@ LegoLocation g_locations[] = { 0.035939, 0.999346, -0.00388, - {"EDG01_27", 0, 0.5, 2, 0.5, TRUE}, - {NULL, 0, 0, 0, 0, FALSE}, - 6400}, + {"EDG01_27", 0, 0.5, 2, 0.5, 1}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 25}, {49, "LCAMRA5", -84.27638, @@ -702,9 +751,10 @@ LegoLocation g_locations[] = { 0.024875, 0.999675, -0.005499, - {"EDG01_08", 2, 0.7, 0, 0.7, TRUE}, - {NULL, 0, 0, 0, 0, FALSE}, - 6400}, + {"EDG01_08", 2, 0.7, 0, 0.7, 1}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 25}, {50, "LCAMRA6", -86.96998, @@ -716,8 +766,9 @@ LegoLocation g_locations[] = { 0.000378, 1, 0.000009, - {"EDG01_13", 1, 0.2, 0, 0.2, TRUE}, - {NULL, 0, 0, 0, 0, FALSE}, + {"EDG01_13", 1, 0.2, 0, 0.2, 1}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {51, "LCAMRT1", @@ -730,9 +781,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"EDG03_10", 0, 0.5, 2, 0.5, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 20480}, + {"EDG03_10", 0, 0.5, 2, 0.5, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 80}, {52, "LCAMRT2", -2.950222, @@ -744,9 +796,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"EDG03_10", 0, 0.5, 2, 0.5, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 25600}, + {"EDG03_10", 0, 0.5, 2, 0.5, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 100}, {53, "LCAMRT3", -0.87654, @@ -758,9 +811,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 25600}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 100}, {54, "LCAMRT4", 0.4375, @@ -772,9 +826,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 0}, {55, "LCAMRT5", -27.213715, @@ -786,8 +841,9 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"EDG03_05", 1, 0.5, 2, 0.5, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {"EDG03_05", 1, 0.5, 2, 0.5, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {56, "LCAMRT6", @@ -800,9 +856,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"EDG03_10", 0, 0.5, 2, 0.5, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 15360}, + {"EDG03_10", 0, 0.5, 2, 0.5, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 60}, {57, "LCAMST1", -40.1615, @@ -814,9 +871,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 5120}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 20}, {58, "LCAMST2", -48.750553, @@ -828,8 +886,9 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {59, "LCAMZG1", @@ -842,8 +901,9 @@ LegoLocation g_locations[] = { 0, 1, 0, - {"INT22", 0, 0.4, 2, 0.4, TRUE}, - {NULL, 0, 0, 0, 0, FALSE}, + {"INT22", 0, 0.4, 2, 0.4, 1}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {60, "LCAMZI1", @@ -856,9 +916,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 0}, {61, "LCAMZI2", 93.37283, @@ -870,9 +931,10 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 0}, {62, "LCAMZIE", 93.375, @@ -884,8 +946,9 @@ LegoLocation g_locations[] = { 0.254493, 0.967075, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {63, "LCAMZIN", @@ -898,8 +961,9 @@ LegoLocation g_locations[] = { 0, 0.967203, 0.254006, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {64, "LCAMZIS", @@ -912,8 +976,9 @@ LegoLocation g_locations[] = { 0, 0.966946, -0.254982, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {65, "LCAMZIW", @@ -926,8 +991,9 @@ LegoLocation g_locations[] = { -0.254493, 0.967075, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {66, "LCAMZP1", @@ -940,8 +1006,9 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {67, "LCAMRT7", @@ -954,8 +1021,9 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, 0}, {68, "LCAMJS5", @@ -968,8 +1036,9 @@ LegoLocation g_locations[] = { 0, 1, 0, - {NULL, 0, 0, 0, 0, FALSE}, - {NULL, 0, 0, 0, 0, FALSE}, - 25600}, - {69, "overhead", 0, 135, 0, 0, -1, 0, 0, 0, 1, {NULL, 0, 0, 0, 0, FALSE}, {NULL, 0, 0, 0, 0, FALSE}, 0} + {NULL, 0, 0, 0, 0, 0}, + {NULL, 0, 0, 0, 0, 0}, + FALSE, + 100}, + {69, "overhead", 0, 135, 0, 0, -1, 0, 0, 0, 1, {NULL, 0, 0, 0, 0, 0}, {NULL, 0, 0, 0, 0, 0}, FALSE, 0} }; diff --git a/LEGO1/lego/legoomni/src/worlds/isle.cpp b/LEGO1/lego/legoomni/src/worlds/isle.cpp index 21d95cac..555d8317 100644 --- a/LEGO1/lego/legoomni/src/worlds/isle.cpp +++ b/LEGO1/lego/legoomni/src/worlds/isle.cpp @@ -722,7 +722,7 @@ void Isle::Enable(MxBool p_enable) m_act1state->m_unk0x018 = 8; AnimationManager()->FUN_1005f6d0(FALSE); - AnimationManager()->FUN_1005f700(FALSE); + AnimationManager()->EnableCamAnims(FALSE); g_unk0x100f1198 &= ~c_bit7; m_towtrack->FUN_1004dab0(); @@ -731,7 +731,7 @@ void Isle::Enable(MxBool p_enable) m_act1state->m_unk0x018 = 10; AnimationManager()->FUN_1005f6d0(FALSE); - AnimationManager()->FUN_1005f700(FALSE); + AnimationManager()->EnableCamAnims(FALSE); g_unk0x100f1198 &= ~c_bit7; m_ambulance->FUN_10036e60(); diff --git a/LEGO1/omni/include/mxnotificationparam.h b/LEGO1/omni/include/mxnotificationparam.h index afe2282b..fd0990f9 100644 --- a/LEGO1/omni/include/mxnotificationparam.h +++ b/LEGO1/omni/include/mxnotificationparam.h @@ -38,6 +38,7 @@ enum NotificationId { // SIZE 0x0c class MxNotificationParam : public MxParam { public: + inline MxNotificationParam() : m_type(c_notificationType0), m_sender(NULL) {} inline MxNotificationParam(NotificationId p_type, MxCore* p_sender) : MxParam(), m_type(p_type), m_sender(p_sender) { } diff --git a/LEGO1/omni/include/mxtype19notificationparam.h b/LEGO1/omni/include/mxtype19notificationparam.h index 51a6a713..0833f299 100644 --- a/LEGO1/omni/include/mxtype19notificationparam.h +++ b/LEGO1/omni/include/mxtype19notificationparam.h @@ -7,9 +7,31 @@ // VTABLE: LEGO1 0x100d6230 // SIZE 0x10 class MxType19NotificationParam : public MxNotificationParam { +public: + MxType19NotificationParam(NotificationId p_type, MxCore* p_sender, MxU8 p_unk0x0e, MxU16 p_unk0x0c) + : MxNotificationParam() + { + m_type = p_type; + m_sender = p_sender; + m_unk0x0c = p_unk0x0c; + m_unk0x0e = p_unk0x0e; + } + + // FUNCTION: LEGO1 0x1001bac0 + MxNotificationParam* Clone() const override + { + return new MxType19NotificationParam(m_type, m_sender, m_unk0x0e, m_unk0x0c); + } // vtable+0x04 + protected: MxU16 m_unk0x0c; // 0x0c MxU8 m_unk0x0e; // 0x0e }; +// SYNTHETIC: LEGO1 0x1001bb80 +// MxType19NotificationParam::`scalar deleting destructor' + +// SYNTHETIC: LEGO1 0x1001bbf0 +// MxType19NotificationParam::~MxType19NotificationParam + #endif // MXTYPE19NOTIFICATIONPARAM_H