Isle
Loading...
Searching...
No Matches
legoanimmmpresenter.cpp
Go to the documentation of this file.
2
4#include "decomp.h"
5#include "define.h"
6#include "islepathactor.h"
8#include "legoanimpresenter.h"
10#include "legotraninfo.h"
11#include "legovideomanager.h"
12#include "legoworld.h"
13#include "misc.h"
14#include "mxautolock.h"
15#include "mxdsmultiaction.h"
16#include "mxmisc.h"
18#include "mxobjectfactory.h"
19#include "mxstreamer.h"
20#include "mxtimer.h"
21#include "mxutilities.h"
22
24
25// FUNCTION: LEGO1 0x1004a8d0
27{
28 m_presenter = NULL;
29 m_animmanId = 0;
30 m_unk0x59 = 0;
31 m_tranInfo = NULL;
32 m_unk0x54 = 0;
33 m_world = NULL;
34 m_unk0x68 = NULL;
35 m_roiMap = NULL;
36 m_roiMapSize = 0;
37 m_unk0x58 = e_unk0;
38}
39
40// FUNCTION: LEGO1 0x1004aa60
42{
43 if (VideoManager() != NULL) {
45 }
46
47 delete m_unk0x68;
48
50}
51
52// FUNCTION: LEGO1 0x1004aaf0
54{
56
57 MxResult result = FAILURE;
58 MxDSActionList* actions = ((MxDSMultiAction*) p_action)->GetActionList();
59 MxObjectFactory* factory = ObjectFactory();
60 MxDSActionListCursor cursor(actions);
61 MxDSAction* action;
62
63 if (MxPresenter::StartAction(p_controller, p_action) == SUCCESS) {
64 cursor.Head();
65
66 while (cursor.Current(action)) {
67 MxBool success = FALSE;
68 const char* presenterName;
69 MxPresenter* presenter = NULL;
70
71 cursor.Next();
72
74 action->SetFlags(action->GetFlags() | MxDSAction::c_looping);
75 }
76 else if (m_action->GetFlags() & MxDSAction::c_bit3) {
77 action->SetFlags(action->GetFlags() | MxDSAction::c_bit3);
78 }
79
80 presenterName = PresenterNameDispatch(*action);
81 presenter = (MxPresenter*) factory->Create(presenterName);
82
83 if (presenter && presenter->AddToManager() == SUCCESS) {
84 presenter->SetCompositePresenter(this);
85 if (presenter->StartAction(p_controller, action) == SUCCESS) {
87
88 if (presenter->IsA("LegoAnimPresenter") || presenter->IsA("LegoLoopingAnimPresenter")) {
89 m_presenter = (LegoAnimPresenter*) presenter;
90 }
91 success = TRUE;
92 }
93 }
94
95 if (success) {
96 action->SetOrigin(this);
97 m_list.push_back(presenter);
98 }
99 else if (presenter) {
100 delete presenter;
101 }
102 }
103
104 m_world = CurrentWorld();
105 if (m_world) {
106 m_world->Add(this);
107 }
109
110 result = SUCCESS;
111 }
112
113 return result;
114}
115
116// FUNCTION: LEGO1 0x1004aec0
117// FUNCTION: BETA10 0x1004c01a
119{
120 if (m_tranInfo != NULL && m_tranInfo->m_unk0x15 && m_tranInfo->m_unk0x1c != NULL &&
121 m_tranInfo->m_unk0x1c[1] != NULL) {
122 m_tranInfo->m_unk0x1c[1]->Enable(FALSE);
123 m_tranInfo->m_unk0x1c[1]->Enable(TRUE);
124 }
125
126 m_tranInfo = NULL;
127
129 if (m_animmanId != 0) {
131 }
132
133 if (m_action != NULL) {
135
136 if (m_world != NULL) {
137 m_world->Remove(this);
138 }
139 }
140}
141
142// FUNCTION: LEGO1 0x1004b140
143// FUNCTION: BETA10 0x1004c197
145{
146 ParseExtra();
147
148 if (m_tranInfo != NULL && m_tranInfo->m_unk0x15 && m_tranInfo->m_unk0x1c != NULL &&
149 m_tranInfo->m_unk0x1c[0] != NULL) {
150 m_tranInfo->m_unk0x1c[0]->Enable(FALSE);
151 m_tranInfo->m_unk0x1c[0]->Enable(TRUE);
152 }
153
154 if (m_tranInfo != NULL && m_tranInfo->m_unk0x0c != NULL) {
155 m_presenter->VTable0xa0(*m_tranInfo->m_unk0x0c);
156 }
157
158 if (m_presenter != NULL) {
159 m_presenter->SetTickleState(e_ready);
160 }
161
163}
164
165// FUNCTION: LEGO1 0x1004b1c0
166// FUNCTION: BETA10 0x1004c2cc
168{
169 if (m_presenter == NULL || m_presenter->GetCurrentTickleState() == e_idle) {
170 if (m_tranInfo != NULL && m_tranInfo->m_unk0x08 != NULL) {
171 m_presenter->FUN_1006b140(m_tranInfo->m_unk0x08);
172 }
173
174 m_unk0x50 = Timer()->GetTime();
176 }
177}
178
179// FUNCTION: LEGO1 0x1004b220
180// FUNCTION: BETA10 0x1004c372
182{
183 if (FUN_1004b450()) {
185 }
186}
187
188// FUNCTION: LEGO1 0x1004b250
189// FUNCTION: BETA10 0x1004c3a4
191{
192 if (m_presenter == NULL) {
194 }
195 else if (m_list.size() <= 1) {
196 if (m_list.front() == m_presenter) {
197 m_presenter->SetTickleState(e_done);
199 }
200 else {
202 }
203 }
204}
205
206// FUNCTION: LEGO1 0x1004b2c0
207// FUNCTION: BETA10 0x1004c469
209{
210 // Empty
211}
212
213// FUNCTION: LEGO1 0x1004b2d0
214// FUNCTION: BETA10 0x1004c47f
216{
218 MxNotificationParam& param = (MxNotificationParam&) p_param;
219
220 if (param.GetNotification() == c_notificationEndAction && param.GetSender() == m_presenter) {
221 m_presenter = NULL;
222 }
223
224 return MxCompositePresenter::Notify(p_param);
225}
226
227// FUNCTION: LEGO1 0x1004b360
229{
230 if (m_presenter == p_presenter && ((MxU8) p_presenter->GetCurrentTickleState() == MxPresenter::e_streaming ||
231 (MxU8) p_presenter->GetCurrentTickleState() == MxPresenter::e_done)) {
233 }
234}
235
236// FUNCTION: LEGO1 0x1004b390
237// FUNCTION: BETA10 0x1004c5be
239{
240 MxU16 extraLength;
241 char* extraData;
242 m_action->GetExtra(extraLength, extraData);
243
244 if (extraLength) {
245 char extraCopy[1024];
246 memcpy(extraCopy, extraData, extraLength);
247 extraCopy[extraLength] = '\0';
248
249 char output[1024];
250 if (KeyValueStringParse(output, g_strANIMMAN_ID, extraCopy)) {
251 char* token = strtok(output, g_parseExtraTokens);
252 m_animmanId = atoi(token);
253 m_tranInfo = AnimationManager()->GetTranInfo(m_animmanId);
254
255 if (m_tranInfo != NULL) {
256 m_unk0x59 = m_tranInfo->m_unk0x10;
257 m_tranInfo->m_presenter = this;
258 }
259 }
260 }
261}
262
263// FUNCTION: LEGO1 0x1004b450
264// FUNCTION: BETA10 0x1004c71d
265MxBool LegoAnimMMPresenter::FUN_1004b450()
266{
267 MxBool result = FALSE;
268 MxLong time = Timer()->GetTime() - m_unk0x50;
269
270 switch (m_unk0x58) {
271 case e_unk0:
272 if (!FUN_1004b530(time)) {
273 break;
274 }
275 m_unk0x58 = e_unk1;
276 case e_unk1:
277 if (!FUN_1004b570(time)) {
278 break;
279 }
280 m_unk0x58 = e_unk2;
281 case e_unk2:
282 if (!FUN_1004b580(time)) {
283 break;
284 }
285 m_unk0x58 = e_unk3;
286 case e_unk3:
287 if (!FUN_1004b5b0(time)) {
288 break;
289 }
290 m_unk0x58 = e_unk4;
291 case e_unk4:
292 if (!FUN_1004b600(time)) {
293 break;
294 }
295 m_unk0x58 = e_unk5;
296 case e_unk5:
297 if (!FUN_1004b610(time)) {
298 break;
299 }
300 m_unk0x58 = e_unk6;
301 case e_unk6:
302 if (!FUN_1004b6b0(time)) {
303 break;
304 }
305 m_unk0x58 = e_unk7;
306 case e_unk7:
307 FUN_1004b6d0(time);
308 result = TRUE;
309 }
310
311 return result;
312}
313
314// FUNCTION: LEGO1 0x1004b530
315// FUNCTION: BETA10 0x1004c8c4
316MxBool LegoAnimMMPresenter::FUN_1004b530(MxLong p_time)
317{
318 if (m_presenter != NULL) {
319 m_presenter->FUN_1006afc0(m_unk0x68, 0);
320 m_roiMap = m_presenter->GetROIMap(m_roiMapSize);
321 m_roiMapSize++;
322 }
323
324 return TRUE;
325}
326
327// FUNCTION: LEGO1 0x1004b570
328// FUNCTION: BETA10 0x1004c9cc
329MxBool LegoAnimMMPresenter::FUN_1004b570(MxLong p_time)
330{
331 return TRUE;
332}
333
334// FUNCTION: LEGO1 0x1004b580
335// FUNCTION: BETA10 0x1004ca3f
336MxBool LegoAnimMMPresenter::FUN_1004b580(MxLong p_time)
337{
338 switch (m_unk0x59) {
339 case 0:
340 if (m_tranInfo != NULL && m_tranInfo->m_unk0x15 != FALSE && m_tranInfo->m_unk0x20 != NULL &&
341 m_tranInfo->m_unk0x20[0] > p_time) {
342 return FALSE;
343 }
344 break;
345 case 1:
346 case 2:
347 case 3:
348 case 4:
349 case 5:
350 break;
351 }
352
353 return TRUE;
354}
355
356// FUNCTION: LEGO1 0x1004b5b0
357// FUNCTION: BETA10 0x1004cb09
358MxBool LegoAnimMMPresenter::FUN_1004b5b0(MxLong p_time)
359{
360 switch (m_unk0x59) {
361 case 0:
362 if (m_roiMap != NULL && m_unk0x68 != NULL) {
363 for (MxU32 i = 0; i < m_roiMapSize; i++) {
364 LegoROI* roi = m_roiMap[i];
365
366 if (roi != NULL) {
367 roi->WrappedSetLocalTransform(m_unk0x68[i]);
368 }
369 }
370 }
371 break;
372 case 1:
373 case 2:
374 case 3:
375 case 4:
376 case 5:
377 break;
378 }
379
380 return TRUE;
381}
382
383// FUNCTION: LEGO1 0x1004b600
384// FUNCTION: BETA10 0x1004cbfb
385MxBool LegoAnimMMPresenter::FUN_1004b600(MxLong p_time)
386{
387 return TRUE;
388}
389
390// FUNCTION: LEGO1 0x1004b610
391// FUNCTION: BETA10 0x1004cc6e
392MxBool LegoAnimMMPresenter::FUN_1004b610(MxLong p_time)
393{
394 for (MxCompositePresenterList::iterator it = m_list.begin(); it != m_list.end(); it++) {
395 if ((*it)->IsA("LegoAnimPresenter") || (*it)->IsA("LegoLoopingAnimPresenter")) {
396 (*it)->SetTickleState(e_streaming);
397 }
398 else {
399 (*it)->SetTickleState(e_ready);
400 }
401 }
402
403 m_action->SetUnknown90(Timer()->GetTime());
404
405 if (m_compositePresenter != NULL) {
407 }
408
409 return TRUE;
410}
411
412// FUNCTION: LEGO1 0x1004b6b0
413// FUNCTION: BETA10 0x1004cdc5
414MxBool LegoAnimMMPresenter::FUN_1004b6b0(MxLong p_time)
415{
416 if (m_presenter != NULL && m_presenter->GetCurrentTickleState() != e_idle) {
417 return FALSE;
418 }
419
420 m_unk0x54 = p_time;
421 return TRUE;
422}
423
424// FUNCTION: LEGO1 0x1004b6d0
425// FUNCTION: BETA10 0x1004ce18
426MxBool LegoAnimMMPresenter::FUN_1004b6d0(MxLong p_time)
427{
428 LegoROI* viewROI = VideoManager()->GetViewROI();
429 LegoPathActor* actor = UserActor();
430
431 if (m_tranInfo != NULL && m_tranInfo->m_unk0x14 && m_tranInfo->m_location != -1 && actor != NULL) {
432 if (m_world != NULL) {
433 undefined4 und = 1;
434
435 if (m_presenter != NULL) {
436 m_world->RemoveActor(actor);
437
438 if (m_tranInfo->m_unk0x29) {
439 Mx3DPointFloat position, direction;
440
441 position = viewROI->GetWorldPosition();
442 direction = viewROI->GetWorldDirection();
443 position[1] -= 1.25;
444
445 und = m_world->PlaceActor(actor, m_presenter, position, direction);
446 }
447 else {
448 und = 0;
449 }
450 }
451
452 if (und != 0) {
453 viewROI->WrappedSetLocalTransform(m_tranInfo->m_unk0x2c);
454 VideoManager()->Get3DManager()->Moved(*viewROI);
455 m_world->PlaceActor(actor);
456 }
457
458 if (m_tranInfo->m_unk0x29) {
459 actor->VTable0xa8();
460 }
461 }
462
464 }
465
466 return TRUE;
467}
468
469// FUNCTION: LEGO1 0x1004b830
471{
472 return m_unk0x58 >= e_unk6;
473}
474
475// FUNCTION: LEGO1 0x1004b840
476// FUNCTION: BETA10 0x1004d033
478{
479 MxDSAction* action = m_action;
480
481 if (m_presenter != NULL) {
482 m_presenter->FUN_1006c7a0();
483 }
484
485 for (MxCompositePresenterList::iterator it = m_list.begin(); it != m_list.end(); it++) {
486 if (*it != m_presenter) {
487 (*it)->EndAction();
488 }
489 }
490
491 FUN_1004b6d0(0);
492 EndAction();
493
494 if (action != NULL) {
495 Streamer()->FUN_100b98f0(action);
496 }
497}
498
499// FUNCTION: LEGO1 0x1004b8b0
500// FUNCTION: BETA10 0x1004d104
502{
503 return m_tranInfo != NULL ? m_tranInfo->m_unk0x28 : TRUE;
504}
505
506// FUNCTION: LEGO1 0x1004b8c0
507// FUNCTION: BETA10 0x1004d13d
509{
510 FUN_1004b6d0(0);
511}
BOOL Moved(ViewROI &rROI)
[AI] Notifies the manager that the ROI has moved and needs spatial update.
[AI] Composite presenter class that manages a multi-media animation sequence.
void DoneTickle() override
[AI] Tickle callback for the done state.
void FUN_1004b840()
[AI] Helper routine to end all actions except the central one, handle action teardown,...
void EndAction() override
[AI] Ends the composite action, unregisters and resets relevant state.
@ e_unk2
[AI] Step 2 in tickle progression.
@ e_unk5
[AI] Step 5 in tickle progression.
@ e_unk3
[AI] Step 3 in tickle progression.
@ e_unk0
[AI] Initial state for staged tickling.
@ e_unk4
[AI] Step 4 in tickle progression.
@ e_unk6
[AI] Step 6 in tickle progression.
@ e_unk1
[AI] Step 1 in tickle progression.
@ e_unk7
[AI] Final state for staged tickling.
MxBool FUN_1004b8b0()
[AI] Returns a boolean based on TranInfo, typically whether a specific transition flag is set.
~LegoAnimMMPresenter() override
[AI] Destructor.
void StartingTickle() override
[AI] Tickle callback for the starting state.
void ParseExtra() override
[AI] Parses the "Extra" field from the current action to extract TranInfo and animation manager ID fo...
MxBool FUN_1004b830()
[AI] Returns true if the presenter state has reached or surpassed e_unk6.
void VTable0x60(MxPresenter *p_presenter) override
[AI] (Internal use) Handles a state transfer/notification from a child presenter to this composite pr...
void RepeatingTickle() override
[AI] Tickle callback for the repeating state.
MxResult StartAction(MxStreamController *p_controller, MxDSAction *p_action) override
[AI] Starts a composite action, creating subordinate presenters for each child action.
void FUN_1004b8c0()
[AI] Calls the state transition handler, forcing the presenter's tickle progression for special handl...
MxLong Notify(MxParam &p_param) override
[AI] Handles notifications for the presenter.
void StreamingTickle() override
[AI] Tickle callback for the streaming state.
void ReadyTickle() override
[AI] Tickle callback for the ready state.
[AI] Handles playback and synchronization of animated LEGO objects, including variable substitution,...
virtual void VTable0xa0(Matrix4 &p_matrix)
[AI] Sets the baseline transform for the animation.
virtual LegoROI ** GetROIMap(MxU32 &p_roiMapSize)
[AI] Returns the mapping array from animation node index to LegoROI*.
MxResult FUN_1006afc0(MxMatrix *&p_matrix, float p_und)
[AI] Fills a matrix array with each node's local-to-world transform after animation advance (for stat...
void FUN_1006c7a0()
[AI] Immediately completes this animation, updates all ROIs to their final pose.
MxResult FUN_1006b140(LegoROI *p_roi)
[AI] Calculates a blended transformation for a target ROI and applies as base transform for this anim...
LegoTranInfo * GetTranInfo(MxU32 p_index)
[AI] Retrieves an active transition info, or NULL if not found.
Notification parameter for signaling the end of an animation in the LEGO Island engine.
[AI] An actor that moves along a predefined path, supporting boundary transitions,...
Definition: legopathactor.h:32
@ c_initial
[AI] Default state upon creation or reset. [AI]
Definition: legopathactor.h:37
virtual void VTable0xa8()
[AI] Re-applies transform to ROI, updates camera if needed, and processes per-actor tick actions.
void SetActorState(MxU32 p_actorState)
[AI] Sets the navigation/path state of the actor.
[AI] Represents a Real-time Object Instance enriched with LEGO-specific functionality.
Definition: legoroi.h:43
Lego3DManager * Get3DManager()
[AI] Returns the Lego3DManager for this manager, which owns all 3D scene representations and view con...
LegoROI * GetViewROI()
[AI] Returns the viewpoint ROI for the current view/camera.
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
virtual void Add(MxCore *p_object)
Adds an object (entity, presenter, ROI, etc.) to the appropriate world-managed list or set.
Definition: legoworld.cpp:418
void RemoveActor(LegoPathActor *p_actor)
Removes an actor from all known path controllers.
Definition: legoworld.cpp:325
[AI] Represents a 3D point with floating-point precision, inheriting from Vector3.
Definition: mxgeometry3d.h:14
void EndAction() override
[AI] Ends the composite action, terminating all child presenters and clearing action lists....
MxCompositePresenterList m_list
[AI] List of owned child presenters that are managed by this MxCompositePresenter....
virtual void VTable0x60(MxPresenter *p_presenter)
[AI] Advance sequencing for serial multi-actions: promotes the next presenter in sequence to e_ready ...
MxLong Notify(MxParam &p_param) override
[AI] Notifies the composite presenter of a particular event (such as end of sub-action or notificatio...
[AI] Convenience cursor class for iterating over an MxDSActionList.
[AI] A list (collection) of pointers to MxDSAction objects, supporting comparison,...
[AI] Represents an action deserialized from SI chunks, holding key animation or script parameters suc...
Definition: mxdsaction.h:17
MxU32 GetFlags()
[AI] Returns the flag field for this action (bitmask).
Definition: mxdsaction.h:177
void GetExtra(MxU16 &p_extraLength, char *&p_extraData)
[AI] Retrieves the extra data and its length for this action.
Definition: mxdsaction.h:168
virtual void SetUnknown90(MxLong p_unk0x90)
[AI] Set unknown value at offset 0x90, used as baseline in GetElapsedTime.
Definition: mxdsaction.cpp:60
void SetOrigin(MxCore *p_origin)
[AI] Sets the origin core pointer for this action, if spatially transforming/localizing this action.
Definition: mxdsaction.h:265
void SetFlags(MxU32 p_flags)
[AI] Sets the flag bitmask controlling action logic (enabled, looping, etc).
Definition: mxdsaction.h:183
@ c_looping
[AI] Action or media should repeat in a loop [AI]
Definition: mxdsaction.h:21
@ c_bit3
[AI] Unknown - possibly reserved [AI]
Definition: mxdsaction.h:22
[AI] Represents a container for multiple MxDSAction objects, facilitating the grouping and management...
MxBool Next()
[AI]
MxBool Head()
[AI]
Definition: mxlist.h:252
MxBool Current(T &p_obj)
[AI]
virtual void RegisterPresenter(MxPresenter &p_presenter)
[AI] Register a new presenter for tickle management and playback coordination.
virtual void UnregisterPresenter(MxPresenter &p_presenter)
[AI] Remove a presenter from tickle and managed output lists.
void Unregister(MxCore *p_listener)
[AI] Removes a previously registered listener and flushes any pending notifications for it.
MxResult Send(MxCore *p_listener, const MxNotificationParam &p_param)
[AI] Queues a notification to be sent to a specific registered listener.
[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.
MxCore * GetSender() const
[AI] Retrieves the sender pointer associated with this notification.
[AI] Forward declaration for the factory responsible for constructing core objects from atom or type ...
virtual MxCore * Create(const char *p_name)
[AI] Creates a new instance of the class matching the provided string name.
[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 SetTickleState(TickleState p_tickleState)
[AI] Forces the tickle state, advancing to the requested lifecycle stage.
Definition: mxpresenter.h:100
void ProgressTickleState(TickleState p_tickleState)
[AI] Helper for advancing the presenter's tickle state and updating transition history.
Definition: mxpresenter.h:72
virtual void Enable(MxBool p_enable)
[AI] Enables or disables this presenter (controls action flags accordingly).
virtual MxResult StartAction(MxStreamController *, MxDSAction *)
[AI] Initiates presenter for a new action, setting up context and state.
Definition: mxpresenter.cpp:45
MxDSAction * m_action
[AI] The associated action currently being presented by this presenter.
Definition: mxpresenter.h:211
MxS32 GetCurrentTickleState() const
[AI] Returns the current tickle state.
Definition: mxpresenter.h:160
@ e_repeating
[AI] Presentation is repeating (e.g., looping media).
Definition: mxpresenter.h:28
@ e_done
[AI] Completed processing the current action.
Definition: mxpresenter.h:30
@ e_idle
[AI] Not processing an action.
Definition: mxpresenter.h:24
@ e_ready
[AI] Prepared to start processing an action.
Definition: mxpresenter.h:25
@ e_freezing
[AI] Temporarily suspending updates or playback.
Definition: mxpresenter.h:29
@ e_starting
[AI] In the process of starting playback/presentation.
Definition: mxpresenter.h:26
@ e_streaming
[AI] Streaming or rendering actively.
Definition: mxpresenter.h:27
MxCriticalSection m_criticalSection
[AI] Thread synchronization for presenter state and data.
Definition: mxpresenter.h:214
MxCompositePresenter * m_compositePresenter
[AI] Owner composite presenter, if any.
Definition: mxpresenter.h:217
MxBool IsA(const char *p_name) const override
[AI] Determines if this object is of (or inherits) the specified named class.
Definition: mxpresenter.h:141
virtual MxResult AddToManager()
[AI] Optional registration with a manager (such as TickleManager); by default does nothing.
Definition: mxpresenter.h:84
void SetCompositePresenter(MxCompositePresenter *p_compositePresenter)
[AI] Sets the composite presenter to notify/join on completion.
Definition: mxpresenter.h:183
[AI] Controller for streaming and managing multimedia resources and actions during gameplay.
void FUN_100b98f0(MxDSAction *p_action)
Internal: Delegate stream operation on MxDSAction to a DiskStreamController if present.
Definition: mxstreamer.cpp:144
MxLong GetTime()
Returns the current timer value in ms, depending on running state.
Definition: mxtimer.h:50
const float * GetWorldPosition() const
Returns a pointer to the world position from the transformation matrix (translation row).
const float * GetWorldDirection() const
Returns a pointer to the world direction vector (forward axis) from the transformation matrix.
void WrappedSetLocalTransform(const Matrix4 &p_transform)
Wraps SetLocalTransform, for possible override or interface uniformity.
#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
const char * g_parseExtraTokens
[AI] Delimiter tokens for parsing extra parameters in scripts or command strings.
Definition: define.cpp:141
const char * g_strANIMMAN_ID
[AI] Used to reference the animation manager identifier during entity or animation handling.
Definition: define.cpp:129
#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
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
LegoWorld * CurrentWorld()
[AI] Accessor for the currently active LegoWorld instance. [AI]
Definition: misc.cpp:93
LegoPathActor * UserActor()
[AI] Accessor for the user (player-controllable) LegoPathActor. [AI]
Definition: misc.cpp:85
#define AUTOLOCK(CS)
[AI] Macro for automatic locking using the MxAutoLock class. This macro instantiates an MxAutoLock ob...
Definition: mxautolock.h:5
MxTimer * Timer()
[AI] Returns the global simulation timer.
Definition: mxmisc.cpp:33
MxStreamer * Streamer()
[AI] Returns the global streamer used for all chunked media streaming (SI file, audio,...
Definition: mxmisc.cpp:49
MxObjectFactory * ObjectFactory()
[AI] Returns the factory for creating core engine objects from atom/type ids.
Definition: mxmisc.cpp:9
MxNotificationManager * NotificationManager()
[AI] Returns the notification manager for system-wide state/update notifications.
Definition: mxmisc.cpp:17
@ c_notificationEndAnim
[AI] End of an animation [AI]
@ c_notificationEndAction
[AI] Indicates the end of an action [AI]
const char * PresenterNameDispatch(const MxDSAction &)
[AI] Provides a mapping from action object/type to the correct presenter handler class name based on ...
MxU8 MxBool
[AI]
Definition: mxtypes.h:124
MxLong MxResult
[AI]
Definition: mxtypes.h:106
int MxLong
[AI]
Definition: mxtypes.h:83
unsigned char MxU8
[AI]
Definition: mxtypes.h:8
unsigned short MxU16
[AI]
Definition: mxtypes.h:20
unsigned int MxU32
[AI]
Definition: mxtypes.h:32
MxBool KeyValueStringParse(char *, const char *, const char *)
Searches p_string for a key command and copies its associated value to p_output.
Definition: mxutilities.cpp:85
MxBool m_unk0x14
[AI] Boolean flag for an unknown state, frequently used in transformation validity or activation gati...
Definition: legotraninfo.h:54
LegoROI * m_unk0x08
[AI] [AI_SUGGESTED_NAME: targetROI] Pointer to the LEGO ROI (object in world) this transformation app...
Definition: legotraninfo.h:50
MxBool m_unk0x15
[AI] Boolean flag set TRUE on construction, usage context required. Could indicate active/valid statu...
Definition: legotraninfo.h:55
MxMatrix m_unk0x2c
[AI] Current transformation matrix for this entry; reset to identity at construction and modified by ...
Definition: legotraninfo.h:62
MxLong * m_unk0x20
[AI] [AI_SUGGESTED_NAME: animationFramePtr] Pointer to a long integer, possibly for tracking current ...
Definition: legotraninfo.h:58
MxPresenter ** m_unk0x1c
[AI] [AI_SUGGESTED_NAME: presenterList] Pointer to an array of presenter objects. Allows for chained/...
Definition: legotraninfo.h:57
LegoAnimMMPresenter * m_presenter
[AI] Pointer to a specific animation presenter managing this transform's animation (controls playback...
Definition: legotraninfo.h:59
MxMatrix * m_unk0x0c
[AI] [AI_SUGGESTED_NAME: overrideMatrix] Optional pointer to a dynamically allocated matrix for custo...
Definition: legotraninfo.h:51
MxU8 m_unk0x10
[AI] Unknown; likely used for frame counters, step markers, or status flags in animation/transformati...
Definition: legotraninfo.h:52
MxS16 m_location
[AI] Location index within a parent object, animation group, or part-based system....
Definition: legotraninfo.h:53
MxBool m_unk0x28
[AI] Another Boolean flag; TRUE by default. Likely used as part of a multi-flag state or for controll...
Definition: legotraninfo.h:60
MxBool m_unk0x29
[AI] Another Boolean flag; TRUE by default. Possibly for progression or sequencing within animation h...
Definition: legotraninfo.h:61