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

[AI] Represents a "select" action within a DS (Script/Scene) file, deserialized from SI files to select from a set of available actions at runtime based on a variable or random value. More...

#include <mxdsselectaction.h>

Inheritance diagram for MxDSSelectAction:
Collaboration diagram for MxDSSelectAction:

Public Member Functions

 MxDSSelectAction ()
 [AI] Default constructor. More...
 
 MxDSSelectAction (MxDSSelectAction &p_dsSelectAction)
 [AI] Copy constructor. More...
 
 ~MxDSSelectAction () override
 [AI] Destructor. More...
 
void CopyFrom (MxDSSelectAction &p_dsSelectAction)
 [AI] Copies all internal data from another MxDSSelectAction including string list and selection variable. More...
 
MxDSSelectActionoperator= (MxDSSelectAction &p_dsSelectAction)
 [AI] Assignment operator; performs a deep copy of the source select action, including all sub-actions and strings. More...
 
const char * ClassName () const override
 [AI] Returns the class name string for runtime type identification. More...
 
MxBool IsA (const char *p_name) const override
 [AI] Determines if the object is of the specified type or derives from it. More...
 
MxU32 GetSizeOnDisk () override
 [AI] Computes the total size needed to serialize this object to disk, including selection strings and all choices. More...
 
void Deserialize (MxU8 *&p_source, MxS16 p_unk0x24) override
 [AI] Loads (deserializes) this action from a binary source buffer. More...
 
MxDSActionClone () override
 [AI] Creates a deep copy ("clone") of this select action, including its internal strings and selected child action(s). More...
 
- Public Member Functions inherited from MxDSParallelAction
 MxDSParallelAction ()
 [AI] Constructs a parallel action object. More...
 
 MxDSParallelAction (MxDSParallelAction &p_dsParallelAction)
 [AI] Copy constructor for parallel actions. More...
 
 ~MxDSParallelAction () override
 [AI] Destroys the parallel action. More...
 
void CopyFrom (MxDSParallelAction &p_dsParallelAction)
 [AI] Copies all member data from another parallel action into this one. More...
 
MxDSParallelActionoperator= (MxDSParallelAction &p_dsParallelAction)
 [AI] Assignment operator. More...
 
const char * ClassName () const override
 [AI] Returns the class name identifier for runtime type checking and SI parsing. More...
 
MxBool IsA (const char *p_name) const override
 [AI] Performs runtime type checking, including base classes. More...
 
MxLong GetDuration () override
 [AI] Fetches the total duration in ticks of the parallel action, including all contained child actions and looping/bit3 logic. More...
 
void SetDuration (MxLong p_duration) override
 [AI] Sets the explicit duration for this action, overriding the computed aggregate. More...
 
MxDSActionClone () override
 [AI] Produces a complete copy (clone) of this parallel action, including deep-copied data members. More...
 
- Public Member Functions inherited from MxDSMultiAction
 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...
 

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...
 
- Protected Attributes inherited from MxDSMultiAction
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...
 

Detailed Description

[AI] Represents a "select" action within a DS (Script/Scene) file, deserialized from SI files to select from a set of available actions at runtime based on a variable or random value.

MxDSSelectAction introduces selection logic to the standard parallel action, determining which child action to activate based on the input value/variable or randomized choice. The list of possible choices and their associated variable/token are managed internally.

Upon deserialization, the action will parse either a variable name or a random range (RANDOM_x), populate the choice list, and select the matching (or random) action to append to its executable subactions.

Inherits from MxDSParallelAction, and extends it to include variable-driven or random action selection. [AI]

Definition at line 20 of file mxdsselectaction.h.

Constructor & Destructor Documentation

◆ MxDSSelectAction() [1/2]

MxDSSelectAction::MxDSSelectAction ( )

[AI] Default constructor.

Initializes the object as a select action and allocates the choice string list m_unk0xac.

Definition at line 14 of file mxdsselectaction.cpp.

◆ MxDSSelectAction() [2/2]

MxDSSelectAction::MxDSSelectAction ( MxDSSelectAction p_dsSelectAction)

[AI] Copy constructor.

Deep-copies the source select action, including string and choice list. [AI]

Parameters
p_dsSelectActionThe source select action to copy from. [AI]

Definition at line 43 of file mxdsselectaction.cpp.

◆ ~MxDSSelectAction()

MxDSSelectAction::~MxDSSelectAction ( )
override

[AI] Destructor.

Frees any allocated memory for the internal choice list. [AI]

Definition at line 22 of file mxdsselectaction.cpp.

Member Function Documentation

◆ ClassName()

const char * MxDSSelectAction::ClassName ( ) const
inlineoverridevirtual

[AI] Returns the class name string for runtime type identification.

[AI]

Returns
Always "MxDSSelectAction". [AI]

Reimplemented from MxDSParallelAction.

Definition at line 55 of file mxdsselectaction.h.

◆ Clone()

MxDSAction * MxDSSelectAction::Clone ( )
overridevirtual

[AI] Creates a deep copy ("clone") of this select action, including its internal strings and selected child action(s).

[AI]

Returns
Pointer to the newly allocated clone object. [AI]

Reimplemented from MxDSParallelAction.

Definition at line 61 of file mxdsselectaction.cpp.

◆ CopyFrom()

void MxDSSelectAction::CopyFrom ( MxDSSelectAction p_dsSelectAction)

[AI] Copies all internal data from another MxDSSelectAction including string list and selection variable.

[AI]

Parameters
p_dsSelectActionThe source object to copy from. [AI]

Definition at line 29 of file mxdsselectaction.cpp.

◆ Deserialize()

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

[AI] Loads (deserializes) this action from a binary source buffer.

[AI]

[AI] Parses the selection string, determines selection mechanism (variable or randomized/range), loads the associated list of choices, and then deserializes only the selected child action.

Parameters
p_sourceCursor to the start of serialized data. Updated by method. [AI]
p_unk0x24Flags or extra context for deserialization. [AI]

Reimplemented from MxDSMultiAction.

Definition at line 95 of file mxdsselectaction.cpp.

◆ GetSizeOnDisk()

MxU32 MxDSSelectAction::GetSizeOnDisk ( )
overridevirtual

[AI] Computes the total size needed to serialize this object to disk, including selection strings and all choices.

[AI]

[AI] Sums the base class size, the selection variable/random string, and all items in the string (choice) list.

Reimplemented from MxDSMultiAction.

Definition at line 74 of file mxdsselectaction.cpp.

◆ IsA()

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

[AI] Determines if the object is of the specified type or derives from it.

[AI]

Parameters
p_nameType/class name to compare against. [AI]
Returns
True if type matches or is derived, false otherwise. [AI]

Reimplemented from MxDSParallelAction.

Definition at line 66 of file mxdsselectaction.h.

◆ operator=()

MxDSSelectAction & MxDSSelectAction::operator= ( MxDSSelectAction p_dsSelectAction)

[AI] Assignment operator; performs a deep copy of the source select action, including all sub-actions and strings.

[AI]

Parameters
p_dsSelectActionThe source object to copy from. [AI]
Returns
Reference to this (assigned) object. [AI]

Definition at line 50 of file mxdsselectaction.cpp.


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