Isle
Loading...
Searching...
No Matches
LegoWorldPresenter Class Reference

[AI] Presenter for the entire LEGO world, responsible for loading, parsing, and managing world entities, geometry, and environmental data for a world. More...

#include <legoworldpresenter.h>

Inheritance diagram for LegoWorldPresenter:
Collaboration diagram for LegoWorldPresenter:

Public Member Functions

 LegoWorldPresenter ()
 [AI] Constructs a LegoWorldPresenter with initial objectId for presented models. More...
 
 ~LegoWorldPresenter () override
 [AI] Destructor; unregisters, cleans up associated world, reverts system managers to previous state, and notifies system of its removal. More...
 
const char * ClassName () const override
 [AI] Returns handler class name for this presenter instance. More...
 
MxBool IsA (const char *p_name) const override
 [AI] Checks whether this object is of a given class (or base class) by string name. More...
 
void ReadyTickle () override
 [AI] Tickle when in "ready" state: creates the LegoWorld entity, places it into the system, and advances to "starting" tickle state. More...
 
void StartingTickle () override
 [AI] Tickle when in "starting" state: signals child presenters to move to "ready" if idle, then progresses to "streaming" state. More...
 
void ParseExtra () override
 [AI] Parses extra data attached to the current action, such as selecting which world to load from the world's extra SI file string (e.g., "WORLD:ISLE"). More...
 
MxResult StartAction (MxStreamController *p_controller, MxDSAction *p_action) override
 [AI] Starts the world presentation process: creates child presenters for every sub-action (often parts/models) and registers itself with the VideoManager for streaming/rendering lifecycle. More...
 
void VTable0x60 (MxPresenter *p_presenter) override
 [AI] Handles completion and composition of a presenter's child (typically model/entity), calling Add() for LegoWorld on presenters that aren't animations or composites, and forwarding their ownership to the world. More...
 
MxResult LoadWorld (char *p_worldName, LegoWorld *p_world)
 [AI] Loads all data for a named world from the world database (WDB) file, creates all parts and models, and puts them into the world entity. More...
 
- Public Member Functions inherited from LegoEntityPresenter
 LegoEntityPresenter ()
 [AI] Constructs a new LegoEntityPresenter, initializing internal data. More...
 
 ~LegoEntityPresenter () override
 [AI] Destructor. More...
 
const char * ClassName () const override
 [AI] Returns the class name for dynamic type checks. More...
 
MxBool IsA (const char *p_name) const override
 [AI] Tests this object or its parents for a class name match. More...
 
void ReadyTickle () override
 [AI] Called when the presenter is in the Ready state, typically responsible for instantiating and initializing the LegoEntity based on the current action. More...
 
void RepeatingTickle () override
 [AI] Called periodically in the Repeating state to check for completion and manage progression. More...
 
void ParseExtra () override
 [AI] Parses extra data (typically serialized commands/string) from the action and applies it to the managed entity. More...
 
void Destroy () override
 [AI] Cleans up this presenter, unregisters itself from the VideoManager, and resets its entity. More...
 
MxResult StartAction (MxStreamController *p_controller, MxDSAction *p_action) override
 [AI] Starts a new LegoEntity action using the provided stream controller and definition. More...
 
virtual void Init ()
 [AI] Initializes internal state for (re-)use, called from constructor and internal resets. More...
 
virtual undefined4 SetEntity (LegoEntity *p_entity)
 [AI] Sets the managed LegoEntity for this presenter. More...
 
void SetEntityLocation (const Vector3 &p_location, const Vector3 &p_direction, const Vector3 &p_up)
 [AI] Sets the entity's world transformation using location, direction, and up vectors. More...
 
LegoEntityGetInternalEntity ()
 [AI] Returns the currently managed internal LegoEntity. More...
 
void SetInternalEntity (LegoEntity *p_entity)
 [AI] Directly sets the internal LegoEntity pointer without instantiating or taking ownership. More...
 
- Public Member Functions inherited from MxCompositePresenter
 MxCompositePresenter ()
 [AI] Default constructor; registers the composite presenter with the notification manager. More...
 
 ~MxCompositePresenter () override
 [AI] Destructor, unregisters the presenter from the notification manager and properly cleans up contained presenters. More...
 
MxLong Notify (MxParam &p_param) override
 [AI] Notifies the composite presenter of a particular event (such as end of sub-action or notification from a child presenter). More...
 
const char * ClassName () const override
 [AI] Returns the dynamic class name; used for runtime type identification. More...
 
MxBool IsA (const char *p_name) const override
 [AI] Runtime type checking for presenter class hierarchy, supporting parent/child class checks. More...
 
MxResult StartAction (MxStreamController *p_controller, MxDSAction *p_action) override
 [AI] Starts a composite action by creating child presenters for each action in a MxDSMultiAction list and starting them. More...
 
void EndAction () override
 [AI] Ends the composite action, terminating all child presenters and clearing action lists. Sends end notifications if needed. More...
 
void SetTickleState (TickleState p_tickleState) override
 [AI] Change the tickle state of this composite presenter and propagate to each child. More...
 
MxBool HasTickleStatePassed (TickleState p_tickleState) override
 [AI] Checks if all child presenters have advanced past the given tickle state. More...
 
void Enable (MxBool p_enable) override
 [AI] Enables or disables this presenter and all child presenters. More...
 
virtual void VTable0x58 (MxEndActionNotificationParam &p_param)
 [AI] Handler for "end action" notification, invoked when one of the child presenters finishes its assigned sub-action. More...
 
virtual void VTable0x5c (MxNotificationParam &p_param)
 [AI] Handler for generic presenter notification, such as state change. More...
 
virtual void VTable0x60 (MxPresenter *p_presenter)
 [AI] Advance sequencing for serial multi-actions: promotes the next presenter in sequence to e_ready state after predecessor finishes. More...
 
virtual MxBool VTable0x64 (undefined4 p_undefined)
 [AI] Delegated state/mode checking. More...
 
MxCompositePresenterListGetList ()
 [AI] Returns reference to the internal list of child presenters managed by this composite. More...
 
- Public Member Functions inherited from MxPresenter
 MxPresenter ()
 [AI] Constructor. Initializes internal tickle state and other members. More...
 
MxResult Tickle () override
 [AI] Main tickle handler, called periodically to progress presenter's internal state. More...
 
virtual void VTable0x14 ()
 [AI] Reserved for future or specialized use in derived classes. More...
 
virtual void ReadyTickle ()
 [AI] Handles the transition and setup for the Ready state. Parses extra action data and advances state. More...
 
virtual void StartingTickle ()
 [AI] Handles actions required when first starting presentation. Advances to streaming state. More...
 
virtual void StreamingTickle ()
 [AI] Handles periodic updates during the streaming/presentation stage. Advances to repeating state. More...
 
virtual void RepeatingTickle ()
 [AI] Handles updates when in a repeating (looping) stage. Advances to freezing state. More...
 
virtual void FreezingTickle ()
 [AI] Handles updates during the freezing/suspended state. Advances to done state. More...
 
 ~MxPresenter () override
 [AI] Destructor, cleans up resources (base class: does nothing beyond Init). More...
 
virtual MxResult AddToManager ()
 [AI] Optional registration with a manager (such as TickleManager); by default does nothing. More...
 
virtual void Destroy ()
 [AI] Resets presenter state or cleans up resources after completion/removal. More...
 
virtual MxResult StartAction (MxStreamController *, MxDSAction *)
 [AI] Initiates presenter for a new action, setting up context and state. More...
 
virtual void EndAction ()
 [AI] Terminates the current action, notifies listeners and resets state. More...
 
virtual void SetTickleState (TickleState p_tickleState)
 [AI] Forces the tickle state, advancing to the requested lifecycle stage. More...
 
virtual MxBool HasTickleStatePassed (TickleState p_tickleState)
 [AI] Checks if the specified tickle state has ever been passed since last reset. More...
 
virtual MxResult PutData ()
 [AI] Allows the presenter to submit pending results or output to the engine. More...
 
virtual MxBool IsHit (MxS32 p_x, MxS32 p_y)
 [AI] Returns TRUE if the given (x, y) falls within hit-test bounds for the presenter (e.g. More...
 
virtual void Enable (MxBool p_enable)
 [AI] Enables or disables this presenter (controls action flags accordingly). More...
 
const char * ClassName () const override
 [AI] Returns the run-time class name for this presenter. More...
 
MxBool IsA (const char *p_name) const override
 [AI] Determines if this object is of (or inherits) the specified named class. More...
 
MxEntityCreateEntity (const char *p_defaultName)
 [AI] Creates an entity based on action 'extra' data, or uses the provided default name. More...
 
void SendToCompositePresenter (MxOmni *p_omni)
 [AI] Notifies a composite presenter (if one exists) that this presenter wishes to join a group. More...
 
MxBool IsEnabled ()
 [AI] Returns whether this presenter is logically enabled (based on the associated action's flags). More...
 
MxS32 GetCurrentTickleState () const
 [AI] Returns the current tickle state. More...
 
MxPoint32 GetLocation () const
 [AI] Returns the presenter's screen location (in pixels). More...
 
MxS32 GetX () const
 [AI] Returns the X coordinate of screen location. More...
 
MxS32 GetY () const
 [AI] Returns the Y coordinate of screen location. More...
 
MxS32 GetDisplayZ () const
 [AI] Returns the display Z (depth) order. More...
 
MxDSActionGetAction () const
 [AI] Returns the current action being presented. More...
 
void SetAction (MxDSAction *p_action)
 [AI] Sets the action associated with this presenter. More...
 
void SetCompositePresenter (MxCompositePresenter *p_compositePresenter)
 [AI] Sets the composite presenter to notify/join on completion. More...
 
void SetDisplayZ (MxS32 p_displayZ)
 [AI] Sets the display Z (depth) order for the presenter. More...
 
- Public Member Functions inherited from MxCore
 MxCore ()
 [AI] Constructs a new MxCore object and assigns it a unique id. More...
 
virtual ~MxCore ()
 [AI] Virtual destructor. Required for correct polymorphic cleanup in derived classes. More...
 
virtual MxLong Notify (MxParam &p_param)
 [AI] Virtual callback notification mechanism. More...
 
virtual MxResult Tickle ()
 [AI] Called by tickle managers to allow the object to update itself. More...
 
virtual const char * ClassName () const
 [AI] Returns the runtime class name of this object. More...
 
virtual MxBool IsA (const char *p_name) const
 [AI] Checks whether this object's class type or parents match the given name. More...
 
MxU32 GetId ()
 [AI] Gets the unique (per-process) id assigned to this object instance. More...
 

Static Public Member Functions

static void configureLegoWorldPresenter (MxS32 p_legoWorldPresenterQuality)
 [AI] Configure the global 'quality' level for presenting the LEGO world. More...
 
static const char * HandlerClassName ()
 [AI] Returns handler class name for use by presenter/class factories. More...
 
- Static Public Member Functions inherited from LegoEntityPresenter
static const char * HandlerClassName ()
 [AI] Returns the class handler name string for this presenter type. More...
 
- Static Public Member Functions inherited from MxCompositePresenter
static const char * HandlerClassName ()
 [AI] Returns the handler class name ("MxCompositePresenter"). More...
 
- Static Public Member Functions inherited from MxPresenter
static const char * HandlerClassName ()
 [AI] Returns the handler class name for identification and reflection purposes. More...
 

Additional Inherited Members

- Public Types inherited from MxPresenter
enum  TickleState {
  e_idle = 0 , e_ready , e_starting , e_streaming ,
  e_repeating , e_freezing , e_done
}
 [AI] Represents the state of the presenter's tickle (update) lifecycle. More...
 
- Protected Member Functions inherited from MxPresenter
virtual void DoneTickle ()
 [AI] Handles any post-completion logic, resetting to idle state. More...
 
virtual void ParseExtra ()
 [AI] Parses additional data from the associated action for configuration or world interaction. More...
 
void ProgressTickleState (TickleState p_tickleState)
 [AI] Helper for advancing the presenter's tickle state and updating transition history. More...
 
void Init ()
 [AI] Initializes object state to post-construction defaults. More...
 
- Protected Attributes inherited from LegoEntityPresenter
LegoEntitym_entity
 [AI] The entity instance managed by this presenter, typically created based on the current action. More...
 
- Protected Attributes inherited from MxCompositePresenter
MxCompositePresenterList m_list
 [AI] List of owned child presenters that are managed by this MxCompositePresenter. Actions are created/shutdown with this list. More...
 
- Protected Attributes inherited from MxPresenter
TickleState m_currentTickleState
 [AI] Current state in the tickle lifecycle. More...
 
MxU32 m_previousTickleStates
 [AI] Bitfield representing all tickle states that have already occurred during this lifetime. More...
 
MxPoint32 m_location
 [AI] 2D display location for the presenter. More...
 
MxS32 m_displayZ
 [AI] Z-order value for display stacking. More...
 
MxDSActionm_action
 [AI] The associated action currently being presented by this presenter. More...
 
MxCriticalSection m_criticalSection
 [AI] Thread synchronization for presenter state and data. More...
 
MxCompositePresenterm_compositePresenter
 [AI] Owner composite presenter, if any. More...
 

Detailed Description

[AI] Presenter for the entire LEGO world, responsible for loading, parsing, and managing world entities, geometry, and environmental data for a world.

Drives the entity setup and presentation pipeline for a world/scene.

[AI] LegoWorldPresenter mediates between the world data files (especially world.wdb), loads and instantiates geometry/parts/models, creates texture and part presenters, and coordinates with other system managers (Building, Plant, Animation, etc.) on loading and configuration. It is capable of running in different presentation qualities, as set by configureLegoWorldPresenter. Inherits from LegoEntityPresenter.

Definition at line 20 of file legoworldpresenter.h.

Constructor & Destructor Documentation

◆ LegoWorldPresenter()

LegoWorldPresenter::LegoWorldPresenter ( )

[AI] Constructs a LegoWorldPresenter with initial objectId for presented models.

Definition at line 47 of file legoworldpresenter.cpp.

◆ ~LegoWorldPresenter()

LegoWorldPresenter::~LegoWorldPresenter ( )
override

[AI] Destructor; unregisters, cleans up associated world, reverts system managers to previous state, and notifies system of its removal.

Definition at line 53 of file legoworldpresenter.cpp.

Member Function Documentation

◆ ClassName()

const char * LegoWorldPresenter::ClassName ( ) const
overridevirtual

[AI] Returns handler class name for this presenter instance.

Used for run-time type checking and reflection.

Returns
"LegoWorldPresenter" [AI]

Reimplemented from LegoEntityPresenter.

◆ configureLegoWorldPresenter()

void LegoWorldPresenter::configureLegoWorldPresenter ( MxS32  p_legoWorldPresenterQuality)
static

[AI] Configure the global 'quality' level for presenting the LEGO world.

This affects which LOD (level-of-detail) geometry is loaded for the world, e.g. "isle_lo", "isle", or "isle_hi" models.

Parameters
p_legoWorldPresenterQualityPresentation quality (0=low, 1=default, 2=high). [AI]

Definition at line 41 of file legoworldpresenter.cpp.

◆ HandlerClassName()

static const char * LegoWorldPresenter::HandlerClassName ( )
static

[AI] Returns handler class name for use by presenter/class factories.

Returns
Pointer to static string "LegoWorldPresenter". [AI]

◆ IsA()

MxBool LegoWorldPresenter::IsA ( const char *  p_name) const
overridevirtual

[AI] Checks whether this object is of a given class (or base class) by string name.

Parameters
p_nameClass name to check against. [AI]
Returns
True if the queried name is "LegoWorldPresenter" or any base class's implemented name. [AI]

Reimplemented from LegoEntityPresenter.

◆ LoadWorld()

MxResult LegoWorldPresenter::LoadWorld ( char *  p_worldName,
LegoWorld p_world 
)

[AI] Loads all data for a named world from the world database (WDB) file, creates all parts and models, and puts them into the world entity.

Parameters
p_worldNameThe name/key of the world to load, such as "ISLE". [AI]
p_worldThe world entity instance that will receive all parts/models. [AI]
Returns
SUCCESS on fully loaded, FAILURE on any error. [AI]

Definition at line 164 of file legoworldpresenter.cpp.

◆ ParseExtra()

void LegoWorldPresenter::ParseExtra ( )
overridevirtual

[AI] Parses extra data attached to the current action, such as selecting which world to load from the world's extra SI file string (e.g., "WORLD:ISLE").

Loads the correct world and sets up its worldId.

Reimplemented from LegoEntityPresenter.

Definition at line 426 of file legoworldpresenter.cpp.

◆ ReadyTickle()

void LegoWorldPresenter::ReadyTickle ( )
overridevirtual

[AI] Tickle when in "ready" state: creates the LegoWorld entity, places it into the system, and advances to "starting" tickle state.

Responsible for initial instantiation.

Reimplemented from LegoEntityPresenter.

Definition at line 130 of file legoworldpresenter.cpp.

◆ StartAction()

MxResult LegoWorldPresenter::StartAction ( MxStreamController p_controller,
MxDSAction p_action 
)
overridevirtual

[AI] Starts the world presentation process: creates child presenters for every sub-action (often parts/models) and registers itself with the VideoManager for streaming/rendering lifecycle.

Used in SI file-driven media action trees.

Parameters
p_controllerStream controller for loading SI file data. [AI]
p_actionThe world load action (should be a MultiAction/ParallelAction referring to world children). [AI]
Returns
SUCCESS if all sub-presenters and models could be created, FAILURE otherwise. [AI]

Reimplemented from LegoEntityPresenter.

Definition at line 74 of file legoworldpresenter.cpp.

◆ StartingTickle()

void LegoWorldPresenter::StartingTickle ( )
overridevirtual

[AI] Tickle when in "starting" state: signals child presenters to move to "ready" if idle, then progresses to "streaming" state.

Used to synchronize sub-presenters with world setup.

Reimplemented from MxPresenter.

Definition at line 144 of file legoworldpresenter.cpp.

◆ VTable0x60()

void LegoWorldPresenter::VTable0x60 ( MxPresenter p_presenter)
overridevirtual

[AI] Handles completion and composition of a presenter's child (typically model/entity), calling Add() for LegoWorld on presenters that aren't animations or composites, and forwarding their ownership to the world.

Parameters
p_presenterPresenter that finished its action. [AI]

Reimplemented from MxCompositePresenter.

Definition at line 403 of file legoworldpresenter.cpp.


The documentation for this class was generated from the following files: