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

[AI] Represents a container for multiple MxDSAction objects, facilitating the grouping and management of several actions as a single entity. More...

#include <mxdsmultiaction.h>

Inheritance diagram for MxDSMultiAction:
Collaboration diagram for MxDSMultiAction:

Public Member Functions

 MxDSMultiAction ()
 [AI] Constructs an MxDSMultiAction, initializing its type and instantiating an empty action list. More...
 
 MxDSMultiAction (MxDSMultiAction &p_dsMultiAction)
 [AI] Copy constructor for MxDSMultiAction, performing a deep copy of all actions in the source list. More...
 
 ~MxDSMultiAction () override
 [AI] Destructor. More...
 
void CopyFrom (MxDSMultiAction &p_dsMultiAction)
 [AI] Deeply copies all actions from another MxDSMultiAction. More...
 
MxDSMultiActionoperator= (MxDSMultiAction &p_dsMultiAction)
 [AI] Assignment operator, deeply copies all state and actions from another MxDSMultiAction. More...
 
const char * ClassName () const override
 [AI] Returns the class name for this object ("MxDSMultiAction"). More...
 
MxBool IsA (const char *p_name) const override
 [AI] Checks whether a given class name matches this or any parent class. More...
 
undefined4 VTable0x14 () override
 [AI] Hook for vtable entry 0x14. More...
 
MxU32 GetSizeOnDisk () override
 [AI] Calculates the total disk size occupied by this multi-action and all its subactions. More...
 
void Deserialize (MxU8 *&p_source, MxS16 p_unk0x24) override
 [AI] Reads the object's data from a raw byte buffer. More...
 
void SetAtomId (MxAtomId p_atomId) override
 [AI] Propagates the given AtomId to this and all subactions. More...
 
MxDSActionClone () override
 [AI] Constructs a deep clone of this multi-action, including all subactions. More...
 
void MergeFrom (MxDSAction &p_dsAction) override
 [AI] Propagates a merge operation from the provided MxDSAction to all subactions, as well as self. More...
 
MxBool HasId (MxU32 p_objectId) override
 [AI] Returns whether this action or any contained subaction matches the provided object id. More...
 
void SetUnknown90 (MxLong p_unk0x90) override
 [AI] Propagates an unknown value to this and all subactions. More...
 
MxDSActionListGetActionList () const
 [AI] Returns the internal action list holding all subactions of this multi-action. More...
 
- Public Member Functions inherited from MxDSAction
 MxDSAction ()
 [AI] Default constructor. More...
 
 ~MxDSAction () override
 [AI] Destructor. More...
 
 MxDSAction (MxDSAction &p_dsAction)
 [AI] Copy constructor from another MxDSAction More...
 
void CopyFrom (MxDSAction &p_dsAction)
 [AI] Copies all properties from another MxDSAction (deep copy, including extra data string) More...
 
MxDSActionoperator= (MxDSAction &p_dsAction)
 [AI] Assignment operator: deep-copy from a different MxDSAction, including base class data and extra fields. More...
 
const char * ClassName () const override
 [AI] Returns the class name for RTTI or reflection purposes. More...
 
MxBool IsA (const char *p_name) const override
 [AI] Run-time type check, compares provided name with this or any ancestor type. More...
 
undefined4 VTable0x14 () override
 [AI] Unknown virtual placeholder, possibly for additional interfaces. More...
 
MxU32 GetSizeOnDisk () override
 [AI] Serializes the size on disk of this action (all fields + extra data length) More...
 
void Deserialize (MxU8 *&p_source, MxS16 p_unk0x24) override
 [AI] Deserializes this action's data from a binary buffer. More...
 
virtual MxLong GetDuration ()
 [AI] Gets the duration for which this action is intended to run. More...
 
virtual void SetDuration (MxLong p_duration)
 [AI] Sets the duration of this action in ticks or time units. More...
 
virtual MxDSActionClone ()
 [AI] Clones (deep-copies) this action and returns a new pointer. More...
 
virtual void MergeFrom (MxDSAction &p_dsAction)
 [AI] Copies/merges properties from another action. More...
 
virtual MxBool HasId (MxU32 p_objectId)
 [AI] Checks if this action contains/was created for a specific SI object id. More...
 
virtual void SetUnknown90 (MxLong p_unk0x90)
 [AI] Set unknown value at offset 0x90, used as baseline in GetElapsedTime. More...
 
virtual MxLong GetUnknown90 ()
 [AI] Gets the unknown value at offset 0x90, likely a start timestamp. More...
 
virtual MxLong GetElapsedTime ()
 [AI] Gets elapsed time for this action since the last time field 0x90 was set. More...
 
void AppendExtra (MxU16 p_extraLength, const char *p_extraData)
 [AI] Concatenates or stores extra data associated with this action, robust for multi-part actions. More...
 
void GetExtra (MxU16 &p_extraLength, char *&p_extraData)
 [AI] Retrieves the extra data and its length for this action. More...
 
MxU32 GetFlags ()
 [AI] Returns the flag field for this action (bitmask). More...
 
void SetFlags (MxU32 p_flags)
 [AI] Sets the flag bitmask controlling action logic (enabled, looping, etc). More...
 
char * GetExtraData ()
 [AI] Accessor for extra data (not null-terminated). More...
 
MxU16 GetExtraLength () const
 [AI] Returns the length (in bytes) of extra data. More...
 
MxLong GetStartTime () const
 [AI] Gets the nominal start time for the action, as loaded or scheduled. More...
 
MxS32 GetLoopCount ()
 [AI] Returns the loop count for this action. More...
 
void SetLoopCount (MxS32 p_loopCount)
 [AI] Sets the loop count for this action. More...
 
const Vector3GetLocation ()
 [AI] Gets the location vector for this action (world or local space). More...
 
const Vector3GetDirection ()
 [AI] Gets the direction vector (typically forward vector) for this action. More...
 
const Vector3GetUp ()
 [AI] Gets the up vector for this action (global or local). More...
 
void SetLocation (const Vector3 &p_location)
 [AI] Sets the location vector for this action. More...
 
void SetDirection (const Vector3 &p_direction)
 [AI] Sets the direction vector for this action. More...
 
void SetUp (const Vector3 &p_up)
 [AI] Sets the up vector for this action. More...
 
MxCoreGetUnknown84 ()
 [AI] Returns a pointer to an associated or auxiliary core object. More...
 
void SetUnknown84 (MxCore *p_unk0x84)
 [AI] Sets the auxiliary core pointer for this action. More...
 
MxCoreGetOrigin ()
 [AI] Returns a pointer to the "origin" core object, which may be used to localize the action. More...
 
void SetOrigin (MxCore *p_origin)
 [AI] Sets the origin core pointer for this action, if spatially transforming/localizing this action. More...
 
MxBool IsLooping () const
 [AI] Whether this action is set to loop based on current flags. More...
 
MxBool IsBit3 () const
 [AI] Tests for the state of the (unknown purpose) bit 3 flag in m_flags. More...
 
- Public Member Functions inherited from MxDSObject
 MxDSObject ()
 [AI] Default constructor. Initializes to e_object and clears names and pointers. More...
 
 ~MxDSObject () override
 [AI] Destructor. Frees allocated objectName/sourceName memory. More...
 
void CopyFrom (MxDSObject &p_dsObject)
 [AI] Copy data from another MxDSObject, performing deep string copy for names. More...
 
 MxDSObject (MxDSObject &p_dsObject)
 [AI] Copy constructor. More...
 
MxDSObjectoperator= (MxDSObject &p_dsObject)
 [AI] Assignment operator. More...
 
void SetObjectName (const char *p_objectName)
 [AI] Sets object (internal) unique name; deep copies the string. More...
 
void SetSourceName (const char *p_sourceName)
 [AI] Sets the source name (usually source SI file); deep copies the string. More...
 
const char * ClassName () const override
 [AI] Returns the class identifier string for run-time type ID. More...
 
MxBool IsA (const char *p_name) const override
 [AI] Runtime type check; supports derived/parent class lookup by name. More...
 
virtual undefined4 VTable0x14 ()
 [AI] Placeholder for early vtable slot (purpose unknown, may be used for RTTI). More...
 
virtual MxU32 GetSizeOnDisk ()
 [AI] Calculates serialized size of this object on disk (for buffer allocation). More...
 
virtual void Deserialize (MxU8 *&p_source, MxS16 p_unk0x24)
 [AI] Initializes this object from serialized (memory buffer) data. More...
 
virtual void SetAtomId (MxAtomId p_atomId)
 [AI] Sets the atom id for this object instance, used for indexing or lookup. More...
 
Type GetType () const
 [AI] Returns the object's type enum as stored in m_type. More...
 
const char * GetSourceName () const
 [AI] Returns the source name string (typically the originating SI file). More...
 
const char * GetObjectName () const
 [AI] Returns the object name string. More...
 
MxU32 GetObjectId ()
 [AI] Returns the object id numeric value. More...
 
const MxAtomIdGetAtomId ()
 [AI] Returns a const-reference to the object's atom identifier. More...
 
MxS16 GetUnknown24 ()
 [AI] Returns the unknown 0x24 value (may be data version or usage state). [AI] More...
 
MxPresenterGetUnknown28 ()
 [AI] Returns the pointer stored at 0x28, likely a presenter or handler for this DS object. More...
 
void SetType (Type p_type)
 [AI] Sets the DS object type. More...
 
void SetObjectId (MxU32 p_objectId)
 [AI] Sets the object id (for serialization or lookup). More...
 
void SetUnknown24 (MxS16 p_unk0x24)
 [AI] Sets the unknown field at 0x24 (possibly version/state). More...
 
void SetUnknown28 (MxPresenter *p_unk0x28)
 [AI] Sets the pointer at 0x28 (presenter or handler). More...
 
void ClearAtom ()
 [AI] Clears the atom id, releasing its association. 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...
 

Protected Attributes

MxU32 m_sizeOnDisk
 [AI] Stores the last-computed disk storage size for m_actionList and metadata. More...
 
MxDSActionListm_actionList
 [AI] List of contained actions (ownership: this owns and deletes subactions). More...
 
- Protected Attributes inherited from MxDSAction
MxU32 m_sizeOnDisk
 [AI] The size of this action's fields on disk, not counting ancestor size. More...
 
MxU32 m_flags
 [AI] Bitfield for flags (enabled, looping, etc). More...
 
MxLong m_startTime
 [AI] Time at which the action is meant to start, or INT_MIN for unset. More...
 
MxLong m_duration
 [AI] The duration to run the action, or INT_MIN for undefined. More...
 
MxS32 m_loopCount
 [AI] Number of times to repeat the action, or -1 for infinite/not-set. More...
 
Mx3DPointFloat m_location
 [AI] Location in 3D world or local space (x, y, z). More...
 
Mx3DPointFloat m_direction
 [AI] "Forward" direction vector for this action. More...
 
Mx3DPointFloat m_up
 [AI] "Up" vector for this action. More...
 
char * m_extraData
 [AI] Opaque extra data for custom or extended behavior. More...
 
MxU16 m_extraLength
 [AI] Length of extra data in bytes. More...
 
MxCorem_unk0x84
 [AI] Pointer to an auxiliary MxCore object, purpose unknown. More...
 
undefined4 m_unk0x88
 [AI] 4 bytes at 0x88; usage not known. More...
 
MxCorem_origin
 [AI] Pointer to an "origin" MxCore object, for spatial/ownership reference. More...
 
MxLong m_unk0x90
 [AI] Unknown field, appears to store a timestamp for GetElapsedTime logics. More...
 
- Protected Attributes inherited from MxDSObject
MxU32 m_sizeOnDisk
 [AI] Cached/calculated disk size of object data for serialization. [AI] More...
 
MxU16 m_type
 [AI] Object type enum (see Type) as read from data or set in code. [AI] More...
 
char * m_sourceName
 [AI] Heap copy: SI file or source identifier string. [AI] More...
 
undefined4 m_unk0x14
 [AI] Unknown usage, possibly flags or reserved SI-format field. [AI] More...
 
char * m_objectName
 [AI] Heap copy: Logical object name as referenced in script/data. [AI] More...
 
MxU32 m_objectId
 [AI] Numeric id (unique per file or context, often -1). [AI] More...
 
MxAtomId m_atomId
 [AI] String/value pair for engine lookup/reference. [AI] More...
 
MxS16 m_unk0x24
 [AI] Unknown usage, possibly used for context or flags during loading. [AI] More...
 
MxPresenterm_unk0x28
 [AI] Presenter or handler associated to this object (may be null). [AI] More...
 

Additional Inherited Members

- Public Types inherited from MxDSAction
enum  {
  c_looping = 0x01 , c_bit3 = 0x04 , c_bit4 = 0x08 , c_bit5 = 0x10 ,
  c_enabled = 0x20 , c_bit7 = 0x40 , c_world = 0x80 , c_bit9 = 0x100 ,
  c_bit10 = 0x200 , c_bit11 = 0x400
}
 [AI] Action bitmask flag options controlling flow (loop, enable, world-space, etc) More...
 
- Public Types inherited from MxDSObject
enum  Type {
  e_object = 0 , e_action , e_mediaAction , e_anim ,
  e_sound , e_multiAction , e_serialAction , e_parallelAction ,
  e_event , e_selectAction , e_still , e_objectAction
}
 [AI] Enumerated type value for each kind of DS object. More...
 

Detailed Description

[AI] Represents a container for multiple MxDSAction objects, facilitating the grouping and management of several actions as a single entity.

[AI] MxDSMultiAction acts as a composite DS action that can hold and execute a list of sub-actions (subclassed from MxDSAction). It handles serialization, deserialization, cloning, merging, and id management centrally for all contained actions. Used for composite instructions in the LEGO Island scripting system. [AI]

Definition at line 14 of file mxdsmultiaction.h.

Constructor & Destructor Documentation

◆ MxDSMultiAction() [1/2]

MxDSMultiAction::MxDSMultiAction ( )

[AI] Constructs an MxDSMultiAction, initializing its type and instantiating an empty action list.

Definition at line 11 of file mxdsmultiaction.cpp.

◆ MxDSMultiAction() [2/2]

MxDSMultiAction::MxDSMultiAction ( MxDSMultiAction p_dsMultiAction)

[AI] Copy constructor for MxDSMultiAction, performing a deep copy of all actions in the source list.

Parameters
p_dsMultiActionThe source MxDSMultiAction to copy from. [AI]

Definition at line 40 of file mxdsmultiaction.cpp.

◆ ~MxDSMultiAction()

MxDSMultiAction::~MxDSMultiAction ( )
override

[AI] Destructor.

Deletes all underlying MxDSAction objects in the contained list.

Definition at line 21 of file mxdsmultiaction.cpp.

Member Function Documentation

◆ ClassName()

const char * MxDSMultiAction::ClassName ( ) const
inlineoverridevirtual

[AI] Returns the class name for this object ("MxDSMultiAction").

Returns
Class name string. [AI]

Reimplemented from MxDSAction.

Reimplemented in MxDSParallelAction, MxDSSelectAction, and MxDSSerialAction.

Definition at line 51 of file mxdsmultiaction.h.

◆ Clone()

MxDSAction * MxDSMultiAction::Clone ( )
overridevirtual

[AI] Constructs a deep clone of this multi-action, including all subactions.

Returns
Pointer to the new deep copy clone. [AI]

Reimplemented from MxDSAction.

Reimplemented in MxDSParallelAction, MxDSSelectAction, and MxDSSerialAction.

Definition at line 105 of file mxdsmultiaction.cpp.

◆ CopyFrom()

void MxDSMultiAction::CopyFrom ( MxDSMultiAction p_dsMultiAction)

[AI] Deeply copies all actions from another MxDSMultiAction.

Parameters
p_dsMultiActionSource for the deep copy operation. [AI]

[AI] Any existing actions are deleted and replaced with deep clones of those in the source. Used by assignment and copy construction. [AI]

Definition at line 28 of file mxdsmultiaction.cpp.

◆ Deserialize()

void MxDSMultiAction::Deserialize ( MxU8 *&  p_source,
MxS16  p_unk0x24 
)
overridevirtual

[AI] Reads the object's data from a raw byte buffer.

Parameters
p_sourceReference to pointer for source byte stream (advanced during read) [AI]
p_unk0x24Context/flags coming from caller. [AI]

[AI] Deserializes the action's own data, then the list of sub-actions in sequence using the dispatch mechanism. [AI]

Reimplemented from MxDSAction.

Reimplemented in MxDSSelectAction.

Definition at line 152 of file mxdsmultiaction.cpp.

◆ GetActionList()

MxDSActionList * MxDSMultiAction::GetActionList ( ) const
inline

[AI] Returns the internal action list holding all subactions of this multi-action.

Returns
Pointer to the contained MxDSActionList. [AI]

Definition at line 125 of file mxdsmultiaction.h.

◆ GetSizeOnDisk()

MxU32 MxDSMultiAction::GetSizeOnDisk ( )
overridevirtual

[AI] Calculates the total disk size occupied by this multi-action and all its subactions.

Returns
Combined file storage size in bytes. [AI]

[AI] Iterates through the contained action list, summing each subaction's disk size plus metadata. [AI]

Reimplemented from MxDSAction.

Reimplemented in MxDSSelectAction.

Definition at line 133 of file mxdsmultiaction.cpp.

◆ HasId()

MxBool MxDSMultiAction::HasId ( MxU32  p_objectId)
overridevirtual

[AI] Returns whether this action or any contained subaction matches the provided object id.

Parameters
p_objectIdThe unique id to check. [AI]
Returns
True if found, otherwise false. [AI]

Reimplemented from MxDSAction.

Definition at line 86 of file mxdsmultiaction.cpp.

◆ IsA()

MxBool MxDSMultiAction::IsA ( const char *  p_name) const
inlineoverridevirtual

[AI] Checks whether a given class name matches this or any parent class.

Parameters
p_nameName of the class to check. [AI]
Returns
True if the name matches MxDSMultiAction or any superclass, otherwise false. [AI]

Reimplemented from MxDSAction.

Reimplemented in MxDSParallelAction, MxDSSelectAction, and MxDSSerialAction.

Definition at line 62 of file mxdsmultiaction.h.

◆ MergeFrom()

void MxDSMultiAction::MergeFrom ( MxDSAction p_dsAction)
overridevirtual

[AI] Propagates a merge operation from the provided MxDSAction to all subactions, as well as self.

Parameters
p_dsActionThe source action for merging. [AI]

[AI] Useful for accumulating/deserializing multiple actions into a single structure hierarchically. [AI]

Reimplemented from MxDSAction.

Definition at line 73 of file mxdsmultiaction.cpp.

◆ operator=()

MxDSMultiAction & MxDSMultiAction::operator= ( MxDSMultiAction p_dsMultiAction)

[AI] Assignment operator, deeply copies all state and actions from another MxDSMultiAction.

Parameters
p_dsMultiActionThe source of the assignment. [AI]
Returns
Reference to this instance (for chaining). [AI]

[AI] Differs from a shallow copy: also duplicates each contained MxDSAction by cloning. Avoids self-assignment. [AI]

Definition at line 47 of file mxdsmultiaction.cpp.

◆ SetAtomId()

void MxDSMultiAction::SetAtomId ( MxAtomId  p_atomId)
overridevirtual

[AI] Propagates the given AtomId to this and all subactions.

Parameters
p_atomIdThe AtomId to set. [AI]

Reimplemented from MxDSObject.

Definition at line 179 of file mxdsmultiaction.cpp.

◆ SetUnknown90()

void MxDSMultiAction::SetUnknown90 ( MxLong  p_unk0x90)
overridevirtual

[AI] Propagates an unknown value to this and all subactions.

Parameters
p_unk0x90The value to set (purpose unclear, but typically a state or context value). [AI]

Reimplemented from MxDSAction.

Definition at line 60 of file mxdsmultiaction.cpp.

◆ VTable0x14()

undefined4 MxDSMultiAction::VTable0x14 ( )
overridevirtual

[AI] Hook for vtable entry 0x14.

Implementation is mostly unknown.

Returns
Undefined 4-byte value [AI]

[AI] Implementation iterates over all actions, invoking VTable0x14 on each and aggregating the results. [AI]

Reimplemented from MxDSAction.

Definition at line 118 of file mxdsmultiaction.cpp.

Member Data Documentation

◆ m_actionList

MxDSActionList* MxDSMultiAction::m_actionList
protected

[AI] List of contained actions (ownership: this owns and deletes subactions).

Definition at line 141 of file mxdsmultiaction.h.

◆ m_sizeOnDisk

MxU32 MxDSMultiAction::m_sizeOnDisk
protected

[AI] Stores the last-computed disk storage size for m_actionList and metadata.

[AI] Updated when GetSizeOnDisk() is called. Used to optimize serialization. [AI]

Definition at line 136 of file mxdsmultiaction.h.


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