Isle
Loading...
Searching...
No Matches
act3.cpp
Go to the documentation of this file.
1#include "act3.h"
2
4#include "act3_actions.h"
5#include "act3actors.h"
6#include "helicopter.h"
7#include "jukebox_actions.h"
10#include "legocontrolmanager.h"
11#include "legomain.h"
12#include "legonavcontroller.h"
13#include "legoplantmanager.h"
14#include "legoutils.h"
15#include "legovideomanager.h"
16#include "misc.h"
19#include "mxmisc.h"
21#include "mxticklemanager.h"
22#include "mxtimer.h"
23#include "mxtransitionmanager.h"
24#include "scripts.h"
25
26#include <vec.h>
27
32
33// GLOBAL: LEGO1 0x100d94f8
51};
52
53// GLOBAL: LEGO1 0x100d9538
61};
62
63// GLOBAL: LEGO1 0x100d9550
73};
74
75// GLOBAL: LEGO1 0x100d9570
83};
84
85// GLOBAL: LEGO1 0x100d9588
94};
95
96// GLOBAL: LEGO1 0x100d95d8
102};
103
104// GLOBAL: LEGO1 0x100f7814
106
107// GLOBAL: LEGO1 0x100d95e8
110
111// FUNCTION: LEGO1 0x10071d40
112void Act3List::Insert(MxS32 p_objectId, MxS32 p_option)
113{
114 if (m_unk0x0c) {
115 return;
116 }
117
118 switch (p_option) {
119 case 1:
120 if (!empty()) {
121 FUN_10071fa0();
122 push_back(Act3ListElement(p_objectId, p_option, FALSE));
123 }
124 else {
126 push_back(Act3ListElement(p_objectId, p_option, TRUE));
127 }
128 break;
129 case 2:
130 if (empty()) {
131 push_back(Act3ListElement(p_objectId, p_option, TRUE));
133 }
134 else {
135 push_back(Act3ListElement(p_objectId, p_option, FALSE));
136 }
137 break;
138 case 3:
139 if (empty()) {
140 push_back(Act3ListElement(p_objectId, p_option, TRUE));
142 }
143 break;
144 }
145}
146
147// FUNCTION: LEGO1 0x10071fa0
149{
150 DeleteAction();
151}
152
153// FUNCTION: LEGO1 0x10071fb0
155{
156 m_unk0x0c = 1;
158
159 if (empty()) {
160 return;
161 }
162
163 for (Act3List::iterator it = begin(); it != end();) {
164 if ((*it).m_unk0x08) {
165 MxDSAction ds;
167 ds.SetObjectId((*it).m_objectId);
168 DeleteObject(ds);
169 }
170
171 erase(it++);
172 }
173}
174
175// FUNCTION: LEGO1 0x100720d0
177{
178 if (m_unk0x0c == 0) {
179 MxU32 removed = FALSE;
180
181 if (!empty()) {
182 if (p_objectId != 0) {
183 for (Act3List::iterator it = begin(); it != end(); it++) {
184 if ((*it).m_unk0x08 && (*it).m_objectId == p_objectId) {
185 erase(it);
186 removed = TRUE;
187 break;
188 }
189 }
190 }
191 else {
192 pop_front();
193 removed = TRUE;
194 }
195
196 if (removed && size() > 0) {
197 // TODO: Match
198 Act3List::iterator it = begin();
199 Act3ListElement& item = *(it++);
200
201 for (; it != end(); it++) {
202 if ((*it).m_unk0x04 == 1) {
203 for (Act3List::iterator it2 = begin(); it2 != it;) {
204 if ((*it2).m_unk0x08) {
205 FUN_10071fa0();
206 return;
207 }
208
209 it2 = erase(it2);
210 }
211 }
212 }
213
214 if (!item.m_unk0x08) {
215 item.m_unk0x08 = TRUE;
217 }
218 }
219 }
220 }
221}
222
223// FUNCTION: LEGO1 0x10072270
224// FUNCTION: BETA10 0x10015470
226{
227 m_state = NULL;
228 m_unk0x41fc = 0;
229 m_cop1 = NULL;
230 m_cop2 = NULL;
232 m_copter = NULL;
233 m_shark = NULL;
234 m_time = -1;
235 m_unk0x421e = 0;
236
237 memset(m_helicopterDots, 0, sizeof(m_helicopterDots));
238
239 NavController()->ResetMaxLinearAccel(NavController()->GetMaxLinearAccel() * 30.0f);
240 NavController()->ResetMaxLinearDeccel(NavController()->GetMaxLinearDeccel() * 30.0f);
242}
243
244// FUNCTION: LEGO1 0x100726a0
245// FUNCTION: BETA10 0x100155da
247{
248 Destroy(TRUE);
251}
252
253// FUNCTION: LEGO1 0x10072780
254// FUNCTION: BETA10 0x100156ac
256{
257 assert(p_index < MAX_PIZZAS);
258 RemovePizza(m_pizzas[p_index]);
259}
260
261// FUNCTION: LEGO1 0x100727a0
262// FUNCTION: BETA10 0x1001570d
264{
265 assert(p_index < MAX_DONUTS);
266 RemoveDonut(m_donuts[p_index]);
267}
268
269// FUNCTION: LEGO1 0x100727c0
270// FUNCTION: BETA10 0x1001576e
272{
273#ifdef _DEBUG
274 MxS32 i;
275 for (i = 0; i < MAX_PIZZAS; i++) {
276 if (&m_pizzas[i] == &p_p) {
277 break;
278 }
279 }
280
281 assert(i != MAX_PIZZAS);
282#endif
283
284 assert(p_p.IsValid());
285 p_p.Remove();
286}
287
288// FUNCTION: LEGO1 0x100727d0
289// FUNCTION: BETA10 0x10015828
291{
292#ifdef _DEBUG
293 MxS32 i;
294 for (i = 0; i < MAX_DONUTS; i++) {
295 if (&m_donuts[i] == &p_p) {
296 break;
297 }
298 }
299
300 assert(i != MAX_DONUTS);
301#endif
302
303 assert(p_p.IsValid());
304 p_p.Remove();
305}
306
307// FUNCTION: LEGO1 0x100727e0
308// FUNCTION: BETA10 0x100158e2
309MxResult Act3::ShootPizza(LegoPathController* p_controller, Vector3& p_location, Vector3& p_direction, Vector3& p_up)
310{
311 MxS32 nextPizza;
312 for (nextPizza = 0; nextPizza < (MxS32) sizeOfArray(m_pizzas); nextPizza++) {
313 if (!m_pizzas[nextPizza].IsValid()) {
314 LegoPathBoundary* boundary = NULL;
315 MxU32 local18 = TRUE;
316
317 m_pizzas[nextPizza].Create(this, TRUE, nextPizza);
318
319 if (m_pizzas[nextPizza].FUN_10053b40(p_location, p_direction, p_up) != SUCCESS) {
320 return FAILURE;
321 }
322
323 MxFloat unk0x19c = *m_pizzas[nextPizza].GetUnknown0x19c();
324 if (p_controller->FUN_1004a380(
325 p_location,
326 p_direction,
327 m_pizzas[nextPizza].GetUnknown0x160(),
328 boundary,
329 unk0x19c
330 ) == SUCCESS) {
331 Mx3DPointFloat direction;
332
333 direction = p_direction;
334 direction *= unk0x19c;
335 direction += p_location;
336
337 assert(m_brickster && m_brickster->GetROI());
338
339 direction -= m_brickster->GetROI()->GetLocal2World()[3];
340
341 local18 = FALSE;
342 if (m_pizzas[nextPizza].FUN_10053cb0(p_controller, boundary, unk0x19c) == SUCCESS) {
343 p_controller->PlaceActor(&m_pizzas[nextPizza]);
344 boundary->AddActor(&m_pizzas[nextPizza]);
345 m_pizzas[nextPizza].SetWorldSpeed(10.0f);
346 return SUCCESS;
347 }
348 }
349
350 if (local18 && m_pizzas[nextPizza].FUN_10053d30(p_controller, unk0x19c) == SUCCESS) {
351 p_controller->PlaceActor(&m_pizzas[nextPizza]);
352 m_pizzas[nextPizza].SetWorldSpeed(10.0f);
353 return SUCCESS;
354 }
355
356 break;
357 }
358 }
359
360 return FAILURE;
361}
362
363// FUNCTION: LEGO1 0x10072980
364// FUNCTION: BETA10 0x10015c69
365MxResult Act3::ShootDonut(LegoPathController* p_controller, Vector3& p_location, Vector3& p_direction, Vector3& p_up)
366{
367 MxS32 nextDonut;
368 for (nextDonut = 0; nextDonut < (MxS32) sizeOfArray(m_donuts); nextDonut++) {
369 if (!m_donuts[nextDonut].IsValid()) {
370 LegoPathBoundary* boundary = NULL;
371
372 m_donuts[nextDonut].Create(this, FALSE, nextDonut);
373
374 if (m_donuts[nextDonut].FUN_10053b40(p_location, p_direction, p_up) != SUCCESS) {
375 return FAILURE;
376 }
377
378 MxFloat unk0x19c = *m_donuts[nextDonut].GetUnknown0x19c();
379 if (p_controller->FUN_1004a380(
380 p_location,
381 p_direction,
382 m_donuts[nextDonut].GetUnknown0x160(),
383 boundary,
384 unk0x19c
385 ) == SUCCESS) {
386 if (m_donuts[nextDonut].FUN_10053cb0(p_controller, boundary, unk0x19c) == SUCCESS) {
387 p_controller->PlaceActor(&m_donuts[nextDonut]);
388 boundary->AddActor(&m_donuts[nextDonut]);
389 m_donuts[nextDonut].SetWorldSpeed(10.0f);
390 return SUCCESS;
391 }
392 }
393 else if (m_donuts[nextDonut].FUN_10053d30(p_controller, unk0x19c) == SUCCESS) {
394 p_controller->PlaceActor(&m_donuts[nextDonut]);
395 m_donuts[nextDonut].SetWorldSpeed(10.0f);
396 return SUCCESS;
397 }
398 }
399 }
400
401 return FAILURE;
402}
403
404// FUNCTION: LEGO1 0x10072ad0
405// FUNCTION: BETA10 0x10015eec
407{
408 float time = Timer()->GetTime();
409 Act3Script::Script objectId;
410
411 switch (p_param1) {
412 case 1: {
414 m_unk0x4218 = 0;
415 }
416
417 objectId = g_unk0x100d94f8[m_unk0x4218++];
418 break;
419 }
420 case 2: {
422 m_unk0x4219 = 0;
423 }
424
425 objectId = g_unk0x100d9538[m_unk0x4219++];
426 break;
427 }
428 case 3: {
430 m_unk0x421a = 0;
431 }
432
433 objectId = g_unk0x100d9550[m_unk0x421a++];
434 break;
435 }
436 case 4: {
438 m_unk0x421b = 0;
439 }
440
441 objectId = g_unk0x100d9570[m_unk0x421b++];
442 break;
443 }
444 case 5: {
446 m_unk0x421c = 0;
447 }
448
449 objectId = g_unk0x100d9588[m_unk0x421c++];
450 break;
451 }
452 case 6: {
454 m_unk0x421d = 0;
455 }
456
458 return;
459 }
460 default:
461 return;
462 }
463
464 m_unk0x4220.Insert(objectId, 3);
465}
466
467// FUNCTION: LEGO1 0x10072c30
468// FUNCTION: BETA10 0x100160fb
470{
472
473 MxResult result = LegoWorld::Create(p_dsAction);
474 if (result == SUCCESS) {
475 ControlManager()->Register(this);
476 InputManager()->SetWorld(this);
477 InputManager()->Register(this);
478
479 switch (GameState()->GetLoadedAct()) {
483 break;
487 break;
491 if (GameState()->GetPreviousArea() == LegoGameState::e_infomain) {
493 }
494 }
495
496 LegoGameState* gameState = GameState();
497 Act3State* state = (Act3State*) gameState->GetState("Act3State");
498
499 if (state == NULL) {
500 state = (Act3State*) gameState->CreateState("Act3State");
501 }
502
503 m_state = state;
504 assert(m_state);
505
509 }
510
511 return result;
512}
513
514// FUNCTION: LEGO1 0x10072d50
515// FUNCTION: BETA10 0x1001627f
516void Act3::Destroy(MxBool p_fromDestructor)
517{
518 NavController()->Reset();
519 ControlManager()->Unregister(this);
520
521 if (InputManager()->GetWorld() == this) {
523 }
524
525 InputManager()->UnRegister(this);
526
527 if (UserActor() != NULL) {
528 if ((IslePathActor*) UserActor() == m_copter) {
529 ((IslePathActor*) UserActor())->Exit();
530 }
531
532 Remove(UserActor());
533 }
534
535 if (!p_fromDestructor) {
537 }
538}
539
540// FUNCTION: LEGO1 0x10072de0
541// FUNCTION: BETA10 0x10016322
543{
544 MxNotificationParam& param = (MxNotificationParam&) p_param;
545 LegoWorld::Notify(p_param);
546
547 if (m_worldStarted) {
548 switch (param.GetNotification()) {
551
552 if (param.GetAction() != NULL && param.GetAction()->GetAtomId() == *g_act3Script) {
554 MxDSAction action;
557 VideoManager()->Get3DManager()->SetFrustrum(45.0f, 0.1f, 125.0f);
558
561 assert(BackgroundAudioManager());
562
563 action.SetAtomId(*g_jukeboxScript);
565
568
570 m_cop1->SetWorldSpeed(2.0f);
572
574 m_cop2->SetWorldSpeed(2.0f);
576
578
579 m_unk0x4218 = 0;
580 m_unk0x4219 = 0;
581 m_unk0x421a = 0;
582 m_unk0x421b = 0;
583 m_unk0x421c = 0;
584 m_unk0x421d = 0;
585
586 MxS32 length;
588 m_unk0x421e = 0;
589
590 while (--length >= 0) {
591 if (info[length].m_unk0x11 < 0 && info[length].m_boundary != NULL &&
592 info[length].m_entity != NULL) {
593 m_unk0x421e++;
594 }
595 }
596
597 length = 0;
598 m_unk0x421e--;
599 char buf[80];
600
601 do {
602 sprintf(buf, "HelicopterDotOn%d_Bitmap", length + 1);
603 m_helicopterDots[length] = (MxPresenter*) Find("MxPresenter", buf);
604
605 if (m_unk0x421e > length) {
606 m_helicopterDots[length]->Enable(TRUE);
607 }
608 else {
609 m_helicopterDots[length]->Enable(FALSE);
610 }
611
612 length++;
613 } while (length < (MxS32) sizeOfArray(m_helicopterDots));
614 }
615 else {
617 }
618 }
619 break;
620 }
622 if (m_state->m_unk0x08 == 1 && ((LegoEventNotificationParam&) p_param).GetKey() == ' ') {
624 return 1;
625 }
626 break;
629 if (m_state->m_unk0x08 == 1) {
630 return 1;
631 }
632 break;
634 if (m_state->m_unk0x08 == 1) {
635 assert(m_copter && m_brickster && m_cop1 && m_cop2);
637 m_state->m_unk0x08 = 0;
642 }
643 break;
646 return 1;
647 }
648 }
649
650 return 0;
651}
652
653// FUNCTION: LEGO1 0x10073240
655{
659 }
660
661 return 1;
662}
663
664// FUNCTION: LEGO1 0x10073270
666{
670 VideoManager()->Get3DManager()->SetFrustrum(90.0f, 0.1f, 125.0f);
671
672 m_unk0x426c = g_unk0x100d95e8[rand() % 3];
675
676 m_state->m_unk0x08 = 1;
677}
678
679// FUNCTION: LEGO1 0x10073300
681{
682 if (!m_worldStarted) {
684 return SUCCESS;
685 }
686
687 if (m_unk0x426c != (Act3Script::Script) 0) {
688 if (AnimationManager()->FUN_10064ee0(m_unk0x426c)) {
692 }
693 }
694
695 return SUCCESS;
696}
697
698// FUNCTION: LEGO1 0x10073360
699// FUNCTION: BETA10 0x100169d5
701{
702 assert(m_brickster);
703 m_brickster->FUN_100417a0(p_ammo, p_param2);
704 FUN_10072ad0(1);
705 return SUCCESS;
706}
707
708// FUNCTION: LEGO1 0x10073390
709// FUNCTION: BETA10 0x10016a40
711{
712 assert(m_cop1 && m_cop2);
713
714 if (!(g_unk0x100f7814 & 1)) {
715 m_cop1->FUN_10040350(p_ammo, p_param2);
716 }
717 else {
718 m_cop2->FUN_10040350(p_ammo, p_param2);
719 }
720
721 FUN_10072ad0(3);
723 return SUCCESS;
724}
725
726// FUNCTION: LEGO1 0x100733d0
727// FUNCTION: BETA10 0x10016b5d
729{
730 if (m_cop1) {
731 m_cop2 = p_cop;
732 }
733 else {
734 m_cop1 = p_cop;
735 }
736}
737
738// FUNCTION: LEGO1 0x100733f0
739// FUNCTION: BETA10 0x10016ba2
741{
742 m_brickster = p_brickster;
743}
744
745// FUNCTION: LEGO1 0x10073400
747{
748 m_state->m_unk0x08 = 2;
751}
752
753// FUNCTION: LEGO1 0x10073430
755{
756 m_state->m_unk0x08 = 3;
759}
760
761// FUNCTION: LEGO1 0x10073460
762// FUNCTION: BETA10 0x10016bc6
763void Act3::GoodEnding(const Matrix4& p_destination)
764{
765 assert(m_cop1 && m_cop2 && m_brickster && m_state);
766
770
772 m_copter->FUN_10004640(p_destination);
773
774 DebugPrintf("In Good Ending...");
777 p_destination,
781 );
782}
783
784// FUNCTION: LEGO1 0x10073500
785void Act3::DebugPrintf(const char* p_format, ...)
786{
787 // empty
788}
789
790// FUNCTION: LEGO1 0x10073510
792 const Matrix4& p_copter,
793 const Matrix4& p_destination,
794 const Matrix4& p_startPosition,
795 const Matrix4& p_endPosition,
796 const MxQuaternionTransformer& p_quatTransform
797)
798{
799 DebugPrintf("Copter matrix...\n\n");
800
801 // STRING: LEGO1 0x100f78e0
802 DebugPrintf("\t%g, %g, %g, %g", EXPAND4(p_copter[0]));
803 DebugPrintf("\t%g, %g, %g, %g", EXPAND4(p_copter[1]));
804 DebugPrintf("\t%g, %g, %g, %g", EXPAND4(p_copter[2]));
805 // STRING: LEGO1 0x100f78cc
806 DebugPrintf("\t%g, %g, %g, %g\n\n", EXPAND4(p_copter[3]));
807
808 DebugPrintf("Destination matrix...");
809 DebugPrintf("\t%g, %g, %g, %g", EXPAND4(p_destination[0]));
810 DebugPrintf("\t%g, %g, %g, %g", EXPAND4(p_destination[1]));
811 DebugPrintf("\t%g, %g, %g, %g", EXPAND4(p_destination[2]));
812 DebugPrintf("\t%g, %g, %g, %g\n\n", EXPAND4(p_destination[3]));
813
814 DebugPrintf("Start position...");
815 DebugPrintf("\t%g, %g, %g, %g", EXPAND4(p_startPosition[0]));
816 DebugPrintf("\t%g, %g, %g, %g", EXPAND4(p_startPosition[1]));
817 DebugPrintf("\t%g, %g, %g, %g", EXPAND4(p_startPosition[2]));
818 DebugPrintf("\t%g, %g, %g, %g\n\n", EXPAND4(p_startPosition[3]));
819
820 DebugPrintf("End position...");
821 DebugPrintf("\t%g, %g, %g, %g", EXPAND4(p_endPosition[0]));
822 DebugPrintf("\t%g, %g, %g, %g", EXPAND4(p_endPosition[1]));
823 DebugPrintf("\t%g, %g, %g, %g", EXPAND4(p_endPosition[2]));
824 DebugPrintf("\t%g, %g, %g, %g\n\n", EXPAND4(p_endPosition[3]));
825
826 Mx4DPointFloat startQuat, endQuat;
827
828 if (p_quatTransform.GetFlags() != 0) {
829 p_quatTransform.GetQuat(startQuat, endQuat);
830
831 DebugPrintf("Source quaternion...");
832 // STRING: LEGO1 0x100f7864
833 DebugPrintf("\t%g, %g, %g, %g\n", EXPAND4(startQuat));
834
835 DebugPrintf("Destination quaternion...");
836 DebugPrintf("\t%g, %g, %g, %g\n", EXPAND4(endQuat));
837 }
838}
839
840// FUNCTION: LEGO1 0x100739c0
841// FUNCTION: BETA10 0x10016cc4
842void Act3::BadEnding(const Matrix4& p_destination)
843{
844 assert(m_cop1 && m_cop2 && m_brickster && m_state);
845
849
851 m_copter->FUN_10004670(p_destination);
852
853 DebugPrintf("In Bad Ending...");
856 p_destination,
860 );
861}
862
863// FUNCTION: LEGO1 0x10073a60
865{
866 m_unk0x421e--;
868}
869
870// FUNCTION: LEGO1 0x10073a90
871void Act3::Enable(MxBool p_enable)
872{
873 if ((MxBool) m_set0xd0.empty() == p_enable) {
874 return;
875 }
876
877 LegoWorld::Enable(p_enable);
878
879 if (p_enable) {
880 if (GameState()->m_previousArea == LegoGameState::e_infomain) {
882 }
883
887
888 if (m_time > 0) {
889 MxFloat delta = Timer()->GetTime() - m_time - 100.0f;
890 m_time = -1.0f;
891
896
901
908
911
915
916 MxS32 i;
917 for (i = 0; i < (MxS32) sizeOfArray(m_pizzas); i++) {
918 if (m_pizzas[i].IsValid()) {
919 m_pizzas[i].SetLastTime(m_pizzas[i].GetLastTime() + delta);
920 m_pizzas[i].SetActorTime(m_pizzas[i].GetActorTime() + delta);
921 m_pizzas[i].SetUnknown0x158(m_pizzas[i].GetUnknown0x158() + delta);
922 }
923 }
924
925 for (i = 0; i < (MxS32) sizeOfArray(m_donuts); i++) {
926 if (m_donuts[i].IsValid()) {
927 m_donuts[i].SetLastTime(m_donuts[i].GetLastTime() + delta);
928 m_donuts[i].SetActorTime(m_donuts[i].GetActorTime() + delta);
929 m_donuts[i].SetUnknown0x158(m_donuts[i].GetUnknown0x158() + delta);
930 }
931 }
932
935
936 InputManager()->SetWorld(this);
937 InputManager()->Register(this);
941 }
942 }
943 else {
946 m_time = Timer()->GetTime();
948 }
949}
950
951// FUNCTION: LEGO1 0x10073e40
953{
954 // empty
955}
956
957// FUNCTION: LEGO1 0x10073e50
959{
964 return TRUE;
965}
Act3Script::Script g_unk0x100d95d8[]
Definition: act3.cpp:97
Act3Script::Script g_unk0x100d94f8[]
Definition: act3.cpp:34
Act3Script::Script g_unk0x100d9538[]
Definition: act3.cpp:54
Act3Script::Script g_unk0x100d9550[]
Definition: act3.cpp:64
Act3Script::Script g_unk0x100d9570[]
Definition: act3.cpp:76
Act3Script::Script g_unk0x100d95e8[]
Definition: act3.cpp:108
MxU8 g_unk0x100f7814
Definition: act3.cpp:105
Act3Script::Script g_unk0x100d9588[]
Definition: act3.cpp:86
#define MAX_DONUTS
[AI] Maximum number of donuts that can be handled in Act 3 logic.
Definition: act3.h:27
#define MAX_PIZZAS
[AI] Maximum number of pizzas that can be handled in Act 3 logic.
Definition: act3.h:25
[AI] Defines enumerated script action identifiers for Act 3 of LEGO Island scripting system.
MxFloat GetUnknown0x1c()
[AI] Gets the custom time marker or value for animation/transformation logic.
Definition: act3actors.h:130
void SetUnknown0x1c(MxFloat p_unk0x1c)
[AI] Sets the custom time marker or value.
Definition: act3actors.h:136
Represents an ammo object (pizza or donut) used in Act 3 gameplay sequence.
Definition: act3ammo.h:15
void SetUnknown0x158(MxFloat p_unk0x158)
Sets a time/duration parameter used for state transitions after collision.
Definition: act3ammo.h:136
MxResult Create(Act3 *p_world, MxU32 p_isPizza, MxS32 p_index)
Creates an ammo (pizza or donut), initializes its ROI, bounding volumes, and enables it in the world.
Definition: act3ammo.cpp:71
Mx3DPointFloat * GetUnknown0x160()
Returns the pointer to the second control point of the quadratic trajectory equation.
Definition: act3ammo.h:57
MxU32 IsValid()
Returns true if the ammo is valid (active in game/world).
Definition: act3ammo.h:51
MxFloat * GetUnknown0x19c()
Returns pointer to an internal parameter used in trajectory and animation calculations.
Definition: act3ammo.h:63
MxResult Remove()
Removes this ammo instance from the world, cleans up path controller/boundary and notifies managers.
Definition: act3ammo.cpp:52
[AI] Represents the Brickster actor in Act 3, with AI and scene logic for stealing pizzas and causing...
Definition: act3actors.h:245
MxResult FUN_100417c0()
[AI] Recalculates Brickster's navigation to a new plant/building/target as dictated by AI logic.
Definition: act3actors.cpp:788
MxFloat GetUnknown0x50()
[AI] Gets the duration/target for building/plant attack animation.
Definition: act3actors.h:309
MxFloat GetUnknown0x24()
[AI] Gets another stateful marker (delays, cooldown, or pizza effect timer).
Definition: act3actors.h:304
void SetUnknown0x20(MxFloat p_unk0x20)
[AI] Sets custom Brickster timers/markers (see getters).
Definition: act3actors.h:315
MxFloat GetUnknown0x20()
[AI] Gets a custom timer or marker for the Brickster state machine.
Definition: act3actors.h:299
void SetUnknown0x50(MxFloat p_unk0x50)
Definition: act3actors.h:317
MxResult FUN_100417a0(Act3Ammo &p_ammo, const Vector3 &)
[AI] Triggers the Brickster to react to a thrown pizza.
Definition: act3actors.cpp:777
void SetUnknown0x24(MxFloat p_unk0x24)
Definition: act3actors.h:316
[AI] Represents a police officer actor in Act 3, supporting specific cop AI actions,...
Definition: act3actors.h:158
MxFloat GetUnknown0x20()
[AI] Gets a cop-specific timer used for movement or eating actions.
Definition: act3actors.h:205
MxResult FUN_10040350(Act3Ammo &p_ammo, const Vector3 &)
[AI] Triggers the cop to attempt to intercept or react to a thrown donut.
Definition: act3actors.cpp:319
void SetUnknown0x20(MxFloat p_unk0x20)
[AI] Sets the cop timer for eating/movement delays.
Definition: act3actors.h:211
[AI] A custom intrusive list for handling state machine or scheduled actions/events during Act 3 sequ...
Definition: act3.h:81
void FUN_10071fa0()
[AI] Internal removal method for the first element, wraps a deletion and triggers any necessary clean...
Definition: act3.cpp:148
void Insert(MxS32 p_objectId, MxS32 p_option)
[AI] Inserts a new element, and conditionally triggers associated script actions or events depending ...
Definition: act3.cpp:112
void FUN_100720d0(MxU32 p_objectId)
[AI] Removes an element either by objectId or from the front of the list, and updates queue state boo...
Definition: act3.cpp:176
void Clear()
[AI] Removes all elements, triggers associated clean-up actions, and stops background audio.
Definition: act3.cpp:154
MxFloat GetUnknown0x2c()
[AI] Gets the timestamp or value representing current animation time progress or state.
Definition: act3actors.h:62
void SetUnknown0x2c(MxFloat p_unk0x2c)
[AI] Sets the timestamp or value representing animation progress/state.
Definition: act3actors.h:68
[AI] Holds persistent state and status variables for Act 3 mission, saved between world reloads and p...
Definition: act3.h:126
undefined4 m_unk0x08
[AI] Unknown persistent field holding an instruction/state flag.
Definition: act3.h:170
[AI] Controls all main logic and progression of Act 3 in LEGO Island, including objects,...
Definition: act3.h:182
Act3Cop * m_cop2
[AI] Second cop, instantiated when both are present.
Definition: act3.h:436
void EatPizza(MxS32 p_index)
[AI] Simulates eating (removing) a pizza from the world at the given index.
Definition: act3.cpp:255
void Enable(MxBool p_enable) override
[AI] Enables/Disables the world, handling time shifting/resume logic for all major actors in Act3.
Definition: act3.cpp:871
MxResult ShootDonut(LegoPathController *p_controller, Vector3 &p_location, Vector3 &p_direction, Vector3 &p_up)
[AI] Attempts to launch a donut as a projectile using the given controller and initial transform.
Definition: act3.cpp:365
MxU8 m_unk0x421d
[AI] Index/counter for sixth event-queue or script sequence. [AI_SUGGESTED_NAME: m_scriptIndex6]
Definition: act3.h:446
Act3Script::Script m_unk0x426c
[AI] Current animation or script in progress (for intro/finale). [AI_SUGGESTED_NAME: m_currentScript]
Definition: act3.h:450
MxLong HandleTransitionEnd()
[AI] Handles logic when a world/area transition is completed.
Definition: act3.cpp:654
~Act3() override
[AI] Cleans up world and unregisters from notifications, frees all owned data.
Definition: act3.cpp:246
MxResult Tickle() override
[AI] Main tick/update—called on each game loop iteration to update state, advance animations,...
Definition: act3.cpp:680
void VTable0x60() override
[AI] Empty implementation for Act3-specific state logic; present for interface fulfillment.
Definition: act3.cpp:952
MxU8 m_unk0x421a
[AI] Index/counter for third event-queue or script sequence. [AI_SUGGESTED_NAME: m_scriptIndex3]
Definition: act3.h:443
MxResult ShootPizza(LegoPathController *p_controller, Vector3 &p_location, Vector3 &p_direction, Vector3 &p_up)
[AI] Attempts to launch a pizza as a projectile using the given controller and initial transform.
Definition: act3.cpp:309
MxU8 m_unk0x421c
[AI] Index/counter for fifth event-queue or script sequence. [AI_SUGGESTED_NAME: m_scriptIndex5]
Definition: act3.h:445
void FUN_10073430()
[AI] Moves Act3 and its state to a different step/action in custom sequence (used for in-game cutscen...
Definition: act3.cpp:754
static void DebugPrintf(const char *p_format,...)
[AI] Debug utility, outputs formatted diagnostic messages for Act3 copter and world state.
Definition: act3.cpp:785
MxU8 m_unk0x421b
[AI] Index/counter for fourth event-queue or script sequence. [AI_SUGGESTED_NAME: m_scriptIndex4]
Definition: act3.h:444
Act3State * m_state
[AI] Current persistent Act3 state (progress flags, etc.).
Definition: act3.h:431
void Destroy(MxBool p_fromDestructor) override
[AI] Teardown logic for Act 3, unregisters from world and resets navigation/input.
Definition: act3.cpp:516
Act3Ammo m_pizzas[MAX_PIZZAS]
[AI] All possible pizza projectiles/instances in flight for this sequence.
Definition: act3.h:432
MxResult FUN_10073390(Act3Ammo &p_ammo, const Vector3 &p_param2)
[AI] Triggers script/animation effects on cops for donuts that impact them.
Definition: act3.cpp:710
MxBool Escape() override
[AI] Handles "escape" action (user attempts to leave/quit Act 3); cleans up state and halts audio/ani...
Definition: act3.cpp:958
Act3Shark * m_shark
[AI] Shark entity in the world, for special chase/attack scenes.
Definition: act3.h:439
void GoodEnding(const Matrix4 &p_destination)
[AI] Handles victory logic for Act3 (good ending); disables enemy actors, clears lists,...
Definition: act3.cpp:763
void AddCop(Act3Cop *p_cop)
[AI] Registers a new cop, assigning to cop1 or cop2 as appropriate.
Definition: act3.cpp:728
MxLong Notify(MxParam &p_param) override
[AI] Handles notifications from other systems (animation, transition, audio, etc.).
Definition: act3.cpp:542
Act3Brickster * m_brickster
[AI] Main antagonist.
Definition: act3.h:437
void SetBrickster(Act3Brickster *p_brickster)
[AI] Sets the reference to the Brickster actor in this Act3 instance.
Definition: act3.cpp:740
MxFloat m_time
[AI] Used to track the time when Act3 was paused, and for actor resynchronization.
Definition: act3.h:440
undefined m_unk0x421e
[AI] Stores number of helicopter "dot" items to show on the HUD, decremented for bad/good ending....
Definition: act3.h:447
Act3Ammo m_donuts[MAX_DONUTS]
[AI] All possible donuts in flight/active for Act3's special logic.
Definition: act3.h:433
LegoGameState::Area m_destLocation
[AI] Target world/area to switch to upon transition. Used for story progression.
Definition: act3.h:451
static void DebugCopter(const Matrix4 &p_copter, const Matrix4 &p_destination, const Matrix4 &p_startPosition, const Matrix4 &p_endPosition, const MxQuaternionTransformer &p_quatTransform)
[AI] Debugs world matrices and quaternion transforms for helicopter camera/final animation.
Definition: act3.cpp:791
void FUN_10073400()
[AI] Moves Act3 and its state to next step/action in custom sequence (used for in-game cutscene trans...
Definition: act3.cpp:746
MxResult Create(MxDSAction &p_dsAction) override
[AI] World instancing method; sets up actors and notifies managers of state change.
Definition: act3.cpp:469
Act3Cop * m_cop1
[AI] First cop involved in sequence (player/AI).
Definition: act3.h:435
MxPresenter * m_helicopterDots[15]
[AI] Visual indicators for helicopter progress/UI.
Definition: act3.h:449
void BadEnding(const Matrix4 &p_destination)
[AI] Handles loss logic for Act3 (bad ending); disables enemy actors, clears lists,...
Definition: act3.cpp:842
void FUN_10072ad0(undefined4 p_param1)
[AI] Triggers special sequence actions or sounds depending on the provided param; cycles through queu...
Definition: act3.cpp:406
void ReadyWorld() override
[AI] Called when transitioning into Act 3; triggers state setup and intro animation/missions.
Definition: act3.cpp:665
undefined m_unk0x41fc
[AI] General flag, possibly "started" or "initialized". [AI_SUGGESTED_NAME: m_started]
Definition: act3.h:434
void FUN_10073a60()
[AI] Removes one helicopter dot from the HUD, used when the copter progresses or an event is triggere...
Definition: act3.cpp:864
Helicopter * m_copter
[AI] Player's helicopter, main vehicle.
Definition: act3.h:438
MxU8 m_unk0x4219
[AI] Index/counter for the second event-queue or script sequence. [AI_SUGGESTED_NAME: m_scriptIndex2]
Definition: act3.h:442
Act3List m_unk0x4220
[AI] Main queue/list for triggering and removing queued scripted actions. [AI_SUGGESTED_NAME: m_actio...
Definition: act3.h:448
Act3()
[AI] Initializes all mission-critical actors, resets world state, and sets up notification and naviga...
Definition: act3.cpp:225
MxResult FUN_10073360(Act3Ammo &p_ammo, const Vector3 &p_param2)
[AI] Triggers script/animation effects on the brickster for pizzas that impact him.
Definition: act3.cpp:700
void EatDonut(MxS32 p_index)
[AI] Simulates eating (removing) a donut from the world at the given index.
Definition: act3.cpp:263
void RemoveDonut(Act3Ammo &p_p)
[AI] Removes given donut actor and performs associated logic.
Definition: act3.cpp:290
MxU8 m_unk0x4218
[AI] Index/counter for the first event-queue or script sequence. [AI_SUGGESTED_NAME: m_scriptIndex1]
Definition: act3.h:441
void RemovePizza(Act3Ammo &p_p)
[AI] Removes given pizza actor and performs associated logic.
Definition: act3.cpp:271
MxU32 m_unk0x08
[AI] State/progress value for the helicopter, used for tracking animation or progress in gameplay....
Definition: helicopter.h:51
MxMatrix m_unk0x1a8
[AI] Stores end matrix (camera/actor) for camera transitions/interpolation. [AI]
Definition: helicopter.h:136
void FUN_10004640(const Matrix4 &p_matrix)
[AI] Initiates camera transition for takeoff (Act3 minigame).
Definition: helicopter.cpp:490
MxMatrix m_unk0x160
[AI] Stores start matrix (camera/actor) for camera transitions/interpolation. [AI]
Definition: helicopter.h:135
HelicopterState * m_state
[AI] Pointer to the associated HelicopterState tracking per-helicopter animation/state....
Definition: helicopter.h:139
void FUN_10004670(const Matrix4 &p_matrix)
[AI] Initiates camera transition for landing (Act3 minigame).
Definition: helicopter.cpp:499
MxLong HandleClick() override
[AI] Processes click interactions with the helicopter UI/actor.
Definition: helicopter.cpp:122
MxQuaternionTransformer m_unk0x1f4
[AI] Interpolator for quaternion/matrix transforms (camera movement for animation)....
Definition: helicopter.h:138
MxLong HandleEndAnim(LegoEndAnimNotificationParam &p_param) override
[AI] Handles end-of-animation events for the helicopter (e.g., animation state transitions).
Definition: helicopter.cpp:312
Derived path actor type for handling player transitions and activities on LEGO Island.
Definition: islepathactor.h:23
int SetFrustrum(float p_fov, float p_front, float p_back)
[AI] Sets the 3D perspective frustum parameters for camera and view.
void SetWorldSpeed(MxFloat p_worldSpeed) override
[AI] Sets the current world speed and chooses which animation (from the animation map list) should be...
MxResult FUN_10060dc0(MxU32 p_objectId, MxMatrix *p_matrix, MxBool p_param3, MxU8 p_param4, LegoROI *p_roi, MxBool p_param6, MxBool p_param7, MxBool p_param8, MxBool p_param9)
[AI] Helper for starting a specific animation, including world matrix and camera settings.
void FUN_10061010(MxBool p_und)
[AI] Cancels all camera/transition animations and resets camera after completion.
@ e_unk0
[AI] Unknown/unspecified play mode
void FUN_1005f6d0(MxBool p_unk0x400)
[AI] Enables or disables extras (extra actors).
void FUN_10030800()
[AI] Copies the current m_unk0x11 demo/counter into m_initialUnk0x11 for all buildings (for persisten...
LegoBuildingInfo * GetInfoArray(MxS32 &p_length)
[AI] Returns the full set of LegoBuildingInfo entries, checks/initializes boundary data if needed.
void Register(MxCore *p_listener)
[AI] Adds a listener to be notified of control events.
void Unregister(MxCore *p_listener)
[AI] Removes a listener so it no longer receives control events.
Notification parameter for signaling the end of an animation in the LEGO Island engine.
virtual void SetWorldSpeed(MxFloat p_worldSpeed)
[AI] Sets the current world speed value for this entity (used to control motion/animation rate).
Definition: legoentity.h:98
LegoROI * GetROI()
[AI] Gets the ROI (Realtime Object Instance) associated with this entity. [AI]
Definition: legoentity.h:161
Notification parameter class for LEGO event notifications such as mouse events and modifier keys.
Comprehensive persistent game state manager: handles save/load, player selection, area switching,...
Definition: legogamestate.h:78
void SwitchArea(Area p_area)
Switches the whole game state into a new area/world; manages transitions/scene loads.
void SetCurrentAct(Act p_currentAct)
Sets the current game act.
Area m_currentArea
Area/world the player is presently in. [AI].
LegoState * CreateState(const char *p_stateName)
Creates an instance of given state, registers it, and returns pointer.
@ e_act3
Act 3: final main story segment. [AI].
Definition: legogamestate.h:86
@ e_act1
Act 1: the first main segment of the game. [AI].
Definition: legogamestate.h:84
@ e_actNotFound
No act currently loaded (does not correspond to valid play). [AI].
Definition: legogamestate.h:83
@ e_act2
Act 2: main story segment two. [AI].
Definition: legogamestate.h:85
void StopArea(Area p_area)
Calls cleanup logic for the specified area (removes actors, VMs, closes handles, etc....
void FindLoadedAct()
Analyses the loaded Lego worlds to determine which act is present. [AI].
LegoState * GetState(const char *p_stateName)
Find an existing state (LegoState-derived) object by its registered script/class name.
@ e_infomain
Information Center, main screen. [AI].
Definition: legogamestate.h:96
@ e_act3script
Act 3 world/script main. [AI].
@ e_act2main
Act 2 world main screen. [AI].
@ e_isle
Open world (LEGO Island main map). [AI].
Definition: legogamestate.h:95
@ e_undefined
Undefined or unset area. [AI].
Definition: legogamestate.h:93
void SetDirty(MxBool p_isDirty)
Sets whether there are unsaved changes to the state.
void UnRegister(MxCore *)
[AI] Unregister a previously registered recipient so it will no longer receive input notifications.
void ClearWorld()
[AI] Remove any world assignment (used to clear targeting/scene changes). [AI]
void SetWorld(LegoWorld *p_world)
[AI] Assigns the current world to receive mouse/click/pick notifications.
void Register(MxCore *)
[AI] Register a core object as a recipient for keyboard events; safe for concurrent multi-threading.
void Reset()
[AI] Resets the internal navigation state and all navigation parameters to current defaults.
void ResetMaxLinearDeccel(MxFloat p_maxLinearDeccel)
[AI] Resets the maximum allowed linear deceleration and marks controller as using custom parameters.
void ResetMaxLinearAccel(MxFloat p_maxLinearAccel)
[AI] Resets the maximum allowed linear acceleration and marks controller as using custom parameters.
@ c_clearScreen
[AI] When set, clears the display surface. [AI]
Definition: legomain.h:49
@ c_disable3d
[AI] When set, disables 3D rendering. [AI]
Definition: legomain.h:48
@ c_disableInput
[AI] When set, disables input processing. [AI]
Definition: legomain.h:47
void SetActorTime(MxFloat p_actorTime)
[AI] Sets the global actor animation time value, adjusting how far along the animation is.
void SetLastTime(MxFloat p_lastTime)
[AI] Sets the time value for the last performed simulation tick.
@ c_initial
[AI] Default state upon creation or reset. [AI]
Definition: legopathactor.h:37
@ c_disabled
[AI] Marks as disabled or inactive for path follow logic. [AI]
Definition: legopathactor.h:41
virtual void VTable0xa8()
[AI] Re-applies transform to ROI, updates camera if needed, and processes per-actor tick actions.
MxFloat GetLastTime()
[AI] Gets the previous animation time value from last simulation tick.
MxFloat GetActorTime()
[AI] Returns the current animation time of the actor.
LegoPathBoundary * GetBoundary()
[AI] Retrieves the current path boundary associated with this actor.
void SetActorState(MxU32 p_actorState)
[AI] Sets the navigation/path state of the actor.
[AI] Represents a path segment or boundary in the navigation network for actors (vehicles,...
MxResult AddActor(LegoPathActor *p_actor)
[AI] Adds the given actor to this path boundary and sets its boundary pointer.
[AI] Manager for controlling actors' movement along predefined geometric paths.
MxResult PlaceActor(LegoPathActor *p_actor, const char *p_name, MxS32 p_src, float p_srcScale, MxS32 p_dest, float p_destScale)
[AI] Places an actor on a boundary at given source/destination edge indices, commonly for track segme...
MxResult FUN_1004a380(Vector3 &p_param1, Vector3 &p_param2, Mx3DPointFloat *p_param3, LegoPathBoundary *&p_boundary, MxFloat &p_param5)
[AI] Finds earliest intersection and placement on a valid boundary for the provided vectors and updat...
void FUN_10027200()
[AI] Propagates all plants' current growth/activity state to their restore points.
Lego3DManager * Get3DManager()
[AI] Returns the Lego3DManager for this manager, which owns all 3D scene representations and view con...
void Remove(MxCore *p_object)
Removes an object from all relevant world-managed lists or sets, and also detaches if needed.
Definition: legoworld.cpp:508
MxResult PlaceActor(LegoPathActor *p_actor, const char *p_name, MxS32 p_src, float p_srcScale, MxS32 p_dest, float p_destScale)
Places an actor along a path, from source to destination, using named references and scaling.
Definition: legoworld.cpp:267
MxCoreSet m_set0xd0
Set of currently paused/disconnected objects when world is disabled.
Definition: legoworld.h:363
virtual void Enable(MxBool p_enable)
Enables or disables (pauses) the world and its main components.
Definition: legoworld.cpp:684
MxResult Tickle() override
Main world tick/update, especially manages startup countdown.
Definition: legoworld.cpp:810
MxBool m_worldStarted
Indicates if the world has successfully started and is considered active.
Definition: legoworld.h:388
void Destroy(MxBool p_fromDestructor) override
Destroys the world and its contents, optionally called from the destructor.
Definition: legoworld.cpp:94
MxCore * Find(const char *p_class, const char *p_name)
Finds an object of a given class and name in the world.
Definition: legoworld.cpp:573
MxLong Notify(MxParam &p_param) override
Notification callback responding to registered events such as EndAction and NewPresenter.
Definition: legoworld.cpp:212
MxResult Create(MxDSAction &p_dsAction) override
Initializes the world using an action, creating entity and sound lists, and camera controller.
Definition: legoworld.cpp:58
4x4 Matrix class with virtual interface for manipulation and transformation.
Definition: matrix.h:24
[AI] Represents a 3D point with floating-point precision, inheriting from Vector3.
Definition: mxgeometry3d.h:14
[AI] 4D point class for floating point values.
Definition: mxgeometry4d.h:18
MxDSAction * GetAction()
[AI] Direct access to the underlying action.
MxResult PlayMusic(MxDSAction &p_action, undefined4 p_speed, MxPresenter::TickleState p_tickleState)
[AI] Initiates playback of a new background music action with specified speed and target tickle state...
void Stop()
[AI] Immediately stops all background music, clears all actions and presenters, and resets tickle sta...
[AI] Represents an action deserialized from SI chunks, holding key animation or script parameters suc...
Definition: mxdsaction.h:17
const MxAtomId & GetAtomId()
[AI] Returns a const-reference to the object's atom identifier.
Definition: mxdsobject.h:133
virtual void SetAtomId(MxAtomId p_atomId)
[AI] Sets the atom id for this object instance, used for indexing or lookup.
Definition: mxdsobject.h:118
void SetObjectId(MxU32 p_objectId)
[AI] Sets the object id (for serialization or lookup).
Definition: mxdsobject.h:147
MxU32 GetObjectId()
[AI] Returns the object id numeric value.
Definition: mxdsobject.h:130
[AI] Notification parameter marking the end of an action, specialization of MxActionNotificationParam...
MxAtomId m_atomId
The AtomId associated with this entity, used for resource and script identification.
Definition: mxentity.h:124
void Unregister(MxCore *p_listener)
[AI] Removes a previously registered listener and flushes any pending notifications for it.
void Register(MxCore *p_listener)
[AI] Registers a listener object to receive notifications.
[AI] Parameter object representing a single notification or event, carrying an identifier and sender ...
NotificationId GetNotification() const
[AI] Retrieves the current notification type of this parameter.
[AI] MxParam serves as a polymorphic base class for parameter passing in event and notification syste...
Definition: mxparam.h:7
[AI] Abstract base class for all presenter types in the LEGO Island engine, responsible for managing ...
Definition: mxpresenter.h:20
virtual void Enable(MxBool p_enable)
[AI] Enables or disables this presenter (controls action flags accordingly).
@ e_repeating
[AI] Presentation is repeating (e.g., looping media).
Definition: mxpresenter.h:28
Quaternion interpolation utility for 4D transformations, supporting quaternion start/end points and s...
Definition: mxquaternion.h:14
undefined4 GetFlags() const
Returns current flag state indicating which ends are set.
Definition: mxquaternion.h:92
void GetQuat(Vector4 &p_startQuat, Vector4 &p_endQuat) const
Retrieves the stored start and end quaternions as 4D vectors.
Definition: mxquaternion.h:83
virtual void UnregisterClient(MxCore *p_client)
[AI] Unregisters (marks for destruction) a previously registered client.
MxLong GetTime()
Returns the current timer value in ms, depending on running state.
Definition: mxtimer.h:50
MxResult StartTransition(TransitionType p_animationType, MxS32 p_speed, MxBool p_doCopy, MxBool p_playMusicInAnim)
[AI] Begins a new transition animation of type p_animationType at the specified speed,...
@ e_mosaic
[AI] Complex mosaic block-out effect.
const Matrix4 & GetLocal2World() const
Accessor for the current local-to-world transformation matrix.
[AI] 3D vector class, providing vector and cross-product operations in 3D space.
Definition: vector.h:249
#define TRUE
Definition: d3drmdef.h:28
#define FALSE
Definition: d3drmdef.h:27
#define DECOMP_SIZE_ASSERT(T, S)
Definition: decomp.h:19
unsigned int undefined4
Definition: decomp.h:28
#define sizeOfArray(arr)
Definition: decomp.h:23
#define NULL
[AI] Null pointer value (C/C++ semantics).
Definition: legotypes.h:26
#define FAILURE
[AI] Used to indicate a failed operation in result codes.
Definition: legotypes.h:34
#define SUCCESS
[AI] Used to indicate a successful operation in result codes.
Definition: legotypes.h:30
void InvokeAction(Extra::ActionType p_actionId, const MxAtomId &p_pAtom, MxS32 p_streamId, LegoEntity *p_sender)
[AI] Dispatches and triggers a game action on the given script or object.
Definition: legoutils.cpp:271
void SetAppCursor(Cursor p_cursor)
[AI] Sets the in-game cursor to a specified type.
Definition: legoutils.cpp:566
@ e_cursorArrow
[AI] Standard arrow cursor. [AI]
Definition: legoutils.h:23
LegoGameState * GameState()
[AI] Accessor for the game's central game state controller. [AI]
Definition: misc.cpp:61
LegoVideoManager * VideoManager()
[AI] Accessor for the game's LegoVideoManager subsystem. Used for managing 3D/video hardware....
Definition: misc.cpp:29
LegoAnimationManager * AnimationManager()
[AI] Accessor for the animation manager, which controls Lego character/world animation state....
Definition: misc.cpp:69
void DeleteObjects(MxAtomId *p_id, MxS32 p_first, MxS32 p_last)
[AI] Batch deletes objects, given by atom id, and within the entity id range [p_first,...
Definition: misc.cpp:237
LegoBuildingManager * BuildingManager()
[AI] Accessor for the building manager, handles constructible buildings and structures....
Definition: misc.cpp:123
MxTransitionManager * TransitionManager()
[AI] Accessor for the MxTransitionManager, handling level transitions, fades, and world changes....
Definition: misc.cpp:208
MxBackgroundAudioManager * BackgroundAudioManager()
[AI] Accessor for the background audio manager. Used for background music and ambient sounds....
Definition: misc.cpp:37
void SetUserActor(LegoPathActor *p_userActor)
[AI] Sets the user-controlled LegoPathActor in the engine.
Definition: misc.cpp:168
LegoPlantManager * PlantManager()
[AI] Accessor for the plant manager, handling in-game foliage and plants. [AI]
Definition: misc.cpp:115
LegoControlManager * ControlManager()
[AI] Accessor for the control manager through the input manager; manages higher-level user/game contr...
Definition: misc.cpp:53
void FUN_10015820(MxBool p_disable, MxU16 p_flags)
[AI] Utility for enabling or disabling functionality in LegoOmni based on certain flags.
Definition: misc.cpp:143
LegoNavController * NavController()
[AI] Accessor for the navigation controller, managing player/camera navigation. [AI]
Definition: misc.cpp:77
void PlayMusic(JukeboxScript::Script p_objectId)
[AI] Starts music playback by scripting the background audio manager to play the music piece referenc...
Definition: misc.cpp:216
LegoPathActor * UserActor()
[AI] Accessor for the user (player-controllable) LegoPathActor. [AI]
Definition: misc.cpp:85
LegoInputManager * InputManager()
[AI] Accessor for the input manager, which handles keyboard, mouse, and controller input....
Definition: misc.cpp:45
void DeleteAction()
[AI] Deletes (or cancels) the currently running DSAction/cutscene/event logic. [AI]
Definition: misc.cpp:181
MxTimer * Timer()
[AI] Returns the global simulation timer.
Definition: mxmisc.cpp:33
void DeleteObject(MxDSAction &p_dsAction)
[AI] Deletes the specified action object, removing it from the global action list.
Definition: mxmisc.cpp:105
MxNotificationManager * NotificationManager()
[AI] Returns the notification manager for system-wide state/update notifications.
Definition: mxmisc.cpp:17
MxTickleManager * TickleManager()
[AI] Provides access to the global tickle manager.
Definition: mxmisc.cpp:25
@ c_notificationButtonUp
[AI] Mouse/gamepad button release [AI]
@ c_notificationButtonDown
[AI] Mouse/gamepad button press [AI]
@ c_notificationEndAnim
[AI] End of an animation [AI]
@ c_notificationKeyPress
[AI] Keyboard key press detected [AI]
@ c_notificationTransitioned
[AI] Object has transitioned states or locations [AI]
@ c_notificationEndAction
[AI] Indicates the end of an action [AI]
MxU8 MxBool
[AI]
Definition: mxtypes.h:124
MxLong MxResult
[AI]
Definition: mxtypes.h:106
int MxLong
[AI]
Definition: mxtypes.h:83
float MxFloat
[AI]
Definition: mxtypes.h:68
unsigned char MxU8
[AI]
Definition: mxtypes.h:8
signed int MxS32
[AI]
Definition: mxtypes.h:38
unsigned int MxU32
[AI]
Definition: mxtypes.h:32
Script
[AI] Same as above; compatibility for pre-C++11 code.
Definition: act3_actions.h:27
@ c_sns14xla_PlayWav
[AI] Play sound for SNS14XLA action. [AI]
Definition: act3_actions.h:170
@ c_sns49xin_PlayWav
[AI] Play sound for SNS49XIN action. [AI]
Definition: act3_actions.h:205
@ c_sns62xmg_PlayWav
[AI] Play sound for SNS62XMG action. [AI]
Definition: act3_actions.h:218
@ c_tlp068in_RunAnim
[AI] Run animation for TLP068IN action/resource. [AI]
Definition: act3_actions.h:155
@ c_sns07xni_PlayWav
[AI] Play sound for SNS07XNI action. [AI]
Definition: act3_actions.h:163
@ c_sns46xin_PlayWav
[AI] Play sound for SNS46XIN action. [AI]
Definition: act3_actions.h:202
@ c_sns50xin_PlayWav
[AI] Play sound for SNS50XIN action. [AI]
Definition: act3_actions.h:206
@ c_tns080br_PlayWav
[AI] Play sound for TNS080BR event/action. [AI]
Definition: act3_actions.h:249
@ c_sns04xni_PlayWav
[AI] Play sound for SNS04XNI action. [AI]
Definition: act3_actions.h:160
@ c_sns26xni_PlayWav
[AI] Play sound for SNS26XNI action. [AI]
Definition: act3_actions.h:182
@ c_sns11xni_PlayWav
[AI] Play sound for SNS11XNI action. [AI]
Definition: act3_actions.h:167
@ c_sns39xla_PlayWav
[AI] Play sound for SNS39XLA action. [AI]
Definition: act3_actions.h:195
@ c_sns38xla_PlayWav
[AI] Play sound for SNS38XLA action. [AI]
Definition: act3_actions.h:194
@ c_sns10xni_PlayWav
[AI] Play sound for SNS10XNI action. [AI]
Definition: act3_actions.h:166
@ c_sns27xni_PlayWav
[AI] Play sound for SNS27XNI action. [AI]
Definition: act3_actions.h:183
@ c_sns68xbu_PlayWav
[AI] Play sound for SNS68XBU action. [AI]
Definition: act3_actions.h:224
@ c_sns32xni_PlayWav
[AI] Play sound for SNS32XNI action. [AI]
Definition: act3_actions.h:188
@ c_sns52xro_PlayWav
[AI] Play sound for SNS52XRO action. [AI]
Definition: act3_actions.h:208
@ c_sns06xni_PlayWav
[AI] Play sound for SNS06XNI action. [AI]
Definition: act3_actions.h:162
@ c_sns03xni_PlayWav
[AI] Play sound for SNS03XNI action. [AI]
Definition: act3_actions.h:159
@ c_sns31xni_PlayWav
[AI] Play sound for SNS31XNI action. [AI]
Definition: act3_actions.h:187
@ c_sns08xni_PlayWav
[AI] Play sound for SNS08XNI action. [AI]
Definition: act3_actions.h:164
@ c_sns45xma_PlayWav
[AI] Play sound for SNS45XMA action. [AI]
Definition: act3_actions.h:201
@ c_sns58xna_PlayWav
[AI] Play sound for SNS58XNA action. [AI]
Definition: act3_actions.h:214
@ c_sns25xni_PlayWav
[AI] Play sound for SNS25XNI action. [AI]
Definition: act3_actions.h:181
@ c_sns23xni_PlayWav
[AI] Play sound for SNS23XNI action. [AI]
Definition: act3_actions.h:179
@ c_sns42xla_PlayWav
[AI] Play sound for SNS42XLA action. [AI]
Definition: act3_actions.h:198
@ c_sns54xro_PlayWav
[AI] Play sound for SNS54XRO action. [AI]
Definition: act3_actions.h:210
@ c_sns20xni_PlayWav
[AI] Play sound for SNS20XNI action. [AI]
Definition: act3_actions.h:176
@ c_pzhitdn_PlayWav
[AI] Plays sound effect when a pizza hits a donut. [AI]
Definition: act3_actions.h:38
@ c_snsxx2br_PlayWav
[AI] Play sound for SNSXX2BR or related event. [AI]
Definition: act3_actions.h:252
@ c_sns61xva_PlayWav
[AI] Play sound for SNS61XVA action. [AI]
Definition: act3_actions.h:217
@ c_sns05xni_PlayWav
[AI] Play sound for SNS05XNI action. [AI]
Definition: act3_actions.h:161
@ c_tlp064la_RunAnim
[AI] Run animation for TLP064LA action/resource. [AI]
Definition: act3_actions.h:154
@ c_sns16xla_PlayWav
[AI] Play sound for SNS16XLA action. [AI]
Definition: act3_actions.h:172
@ c_sns35xla_PlayWav
[AI] Play sound for SNS35XLA action. [AI]
Definition: act3_actions.h:191
@ c_sns22xni_PlayWav
[AI] Play sound for SNS22XNI action. [AI]
Definition: act3_actions.h:178
@ c_sns69xsn_PlayWav
[AI] Play sound for SNS69XSN action. [AI]
Definition: act3_actions.h:225
@ c_sns13xla_PlayWav
[AI] Play sound for SNS13XLA action. [AI]
Definition: act3_actions.h:169
@ c_sns29xni_PlayWav
[AI] Play sound for SNS29XNI action. [AI]
Definition: act3_actions.h:185
@ c_snsy23br_PlayWav
[AI] Play sound for SNSY23BR or related event. [AI]
Definition: act3_actions.h:253
@ c_HelicopterDashboard
[AI] Represents the helicopter dashboard GUI interface or overlay. [AI]
Definition: act3_actions.h:39
@ c_sns41xla_PlayWav
[AI] Play sound for SNS41XLA action. [AI]
Definition: act3_actions.h:197
@ c_sns48xin_PlayWav
[AI] Play sound for SNS48XIN action. [AI]
Definition: act3_actions.h:204
@ c_sns02xni_PlayWav
[AI] Play sound for SNS02XNI action. [AI]
Definition: act3_actions.h:158
@ c_sns60xna_PlayWav
[AI] Play sound for SNS60XNA action. [AI]
Definition: act3_actions.h:216
@ c_sns47xin_PlayWav
[AI] Play sound for SNS47XIN action. [AI]
Definition: act3_actions.h:203
@ c_tlp053in_RunAnim
[AI] Run animation for TLP053IN action/resource. [AI]
Definition: act3_actions.h:153
@ c_sns30xni_PlayWav
[AI] Play sound for SNS30XNI action. [AI]
Definition: act3_actions.h:186
@ c_sns17xla_PlayWav
[AI] Play sound for SNS17XLA action. [AI]
Definition: act3_actions.h:173
@ c_sns53xro_PlayWav
[AI] Play sound for SNS53XRO action. [AI]
Definition: act3_actions.h:209
@ c_sns12xla_PlayWav
[AI] Play sound for SNS12XLA action. [AI]
Definition: act3_actions.h:168
@ c_sns28xni_PlayWav
[AI] Play sound for SNS28XNI action. [AI]
Definition: act3_actions.h:184
@ c_tnsx07br_PlayWav
[AI] Play sound for TNSX07BR or related event. [AI]
Definition: act3_actions.h:250
@ c_sns43xma_PlayWav
[AI] Play sound for SNS43XMA action. [AI]
Definition: act3_actions.h:199
@ c_sns59xna_PlayWav
[AI] Play sound for SNS59XNA action. [AI]
Definition: act3_actions.h:215
@ c_sns09xni_PlayWav
[AI] Play sound for SNS09XNI action. [AI]
Definition: act3_actions.h:165
@ c_sns37xla_PlayWav
[AI] Play sound for SNS37XLA action. [AI]
Definition: act3_actions.h:193
@ c_sns44xma_PlayWav
[AI] Play sound for SNS44XMA action. [AI]
Definition: act3_actions.h:200
@ c_sns19xni_PlayWav
[AI] Play sound for SNS19XNI action. [AI]
Definition: act3_actions.h:175
@ c_sns66xsl_PlayWav
[AI] Play sound for SNS66XSL action. [AI]
Definition: act3_actions.h:222
@ c_sns15xla_PlayWav
[AI] Play sound for SNS15XLA action. [AI]
Definition: act3_actions.h:171
@ c_sns51xin_PlayWav
[AI] Play sound for SNS51XIN action. [AI]
Definition: act3_actions.h:207
@ c_sns40xla_PlayWav
[AI] Play sound for SNS40XLA action. [AI]
Definition: act3_actions.h:196
@ c_Act3Music
[AI] Act 3 background music.
[AI] Contains global script AtomId pointers and utility functions for managing script AtomIds in LEGO...
MxAtomId * g_act3Script
[AI] Script AtomId for Act 3 (endgame/helicopter chase) scripting.
Definition: scripts.cpp:66
MxAtomId * g_jukeboxScript
[AI] Script AtomId for the Jukebox entity/event script.
Definition: scripts.cpp:70
[AI] Represents an element in a custom list for activity scripting and audio/animation event queueing...
Definition: act3.h:38
MxU32 m_objectId
[AI] Refers to an in-game object or script action; exact semantics are context-dependent.
Definition: act3.h:39
undefined m_unk0x08
[AI] Boolean/flag; indicates if the corresponding object/action is active, completed,...
Definition: act3.h:41
@ e_start
[AI] Start an activity or playback [AI]
Definition: extra.h:30
[AI] Describes the state, configuration, and world placement of a single LEGO building entity,...
#define EXPAND4(v)
Definition: vec.h:136