Isle
|
[AI] Represents an action deserialized from SI chunks, holding key animation or script parameters such as location, duration, and extra action-specific data. More...
#include <mxdsaction.h>
Public Types | |
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... | |
![]() | |
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... | |
Public Member Functions | |
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... | |
MxDSAction & | operator= (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 MxDSAction * | Clone () |
[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 Vector3 & | GetLocation () |
[AI] Gets the location vector for this action (world or local space). More... | |
const Vector3 & | GetDirection () |
[AI] Gets the direction vector (typically forward vector) for this action. More... | |
const Vector3 & | GetUp () |
[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... | |
MxCore * | GetUnknown84 () |
[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... | |
MxCore * | GetOrigin () |
[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... | |
![]() | |
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... | |
MxDSObject & | operator= (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 MxAtomId & | GetAtomId () |
[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... | |
MxPresenter * | GetUnknown28 () |
[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... | |
![]() | |
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] 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... | |
MxCore * | m_unk0x84 |
[AI] Pointer to an auxiliary MxCore object, purpose unknown. More... | |
undefined4 | m_unk0x88 |
[AI] 4 bytes at 0x88; usage not known. More... | |
MxCore * | m_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... | |
![]() | |
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... | |
MxPresenter * | m_unk0x28 |
[AI] Presenter or handler associated to this object (may be null). [AI] More... | |
[AI] Represents an action deserialized from SI chunks, holding key animation or script parameters such as location, duration, and extra action-specific data.
[AI] Forward declaration for a data structure representing a queued or running script-based action.
[AI] MxDSAction extends MxDSObject and contains information used to control actions in the world, including timing (start time, duration), looping, transformation (location, direction, up), and user-defined "extra" data for further parametrization. Used extensively for scripting animation/logic flows as loaded from SI files. Flags and several unknown fields hint at unimplemented or engine-specific behaviors.
Definition at line 17 of file mxdsaction.h.
anonymous enum |
[AI] Action bitmask flag options controlling flow (loop, enable, world-space, etc)
Definition at line 20 of file mxdsaction.h.
MxDSAction::MxDSAction | ( | ) |
[AI] Default constructor.
Initializes all fields with default, safe, or sentinel values.
[AI] Ensures all primary data members are initialized for deserialization and live-action use.
Definition at line 19 of file mxdsaction.cpp.
|
override |
[AI] Destructor.
Frees resources held by this action, especially extra data.
[AI] Cleans up dynamic memory in m_extraData.
Definition at line 74 of file mxdsaction.cpp.
MxDSAction::MxDSAction | ( | MxDSAction & | p_dsAction | ) |
[AI] Copy constructor from another MxDSAction
p_dsAction | Source action to copy from [AI] |
Definition at line 99 of file mxdsaction.cpp.
void MxDSAction::AppendExtra | ( | MxU16 | p_extraLength, |
const char * | p_extraData | ||
) |
[AI] Concatenates or stores extra data associated with this action, robust for multi-part actions.
p_extraLength | Length of extra data [AI] |
p_extraData | Extra data string or binary blob, not null-terminated [AI] |
[AI] Used for storing action-specific script or parameter data.
Definition at line 225 of file mxdsaction.cpp.
|
inlineoverridevirtual |
[AI] Returns the class name for RTTI or reflection purposes.
Reimplemented from MxCore.
Reimplemented in MxDSAnim, MxDSEvent, MxDSMediaAction, MxDSMultiAction, MxDSObjectAction, MxDSParallelAction, MxDSSelectAction, MxDSSerialAction, MxDSSound, and MxDSStill.
Definition at line 68 of file mxdsaction.h.
|
virtual |
[AI] Clones (deep-copies) this action and returns a new pointer.
[AI] Extra data and all fields are duplicated.
Reimplemented in MxDSAnim, MxDSEvent, MxDSMediaAction, MxDSMultiAction, MxDSObjectAction, MxDSParallelAction, MxDSSelectAction, MxDSSerialAction, MxDSSound, and MxDSStill.
Definition at line 146 of file mxdsaction.cpp.
void MxDSAction::CopyFrom | ( | MxDSAction & | p_dsAction | ) |
[AI] Copies all properties from another MxDSAction (deep copy, including extra data string)
p_dsAction | Source action to copy from [AI] |
Definition at line 81 of file mxdsaction.cpp.
[AI] Deserializes this action's data from a binary buffer.
p_source | Buffer (by reference, advances pointer) [AI] |
p_unk0x24 | Flags or mode for deserialization [AI] |
[AI] Reads all fields, and also appends or loads extra data if present.
Reimplemented from MxDSObject.
Reimplemented in MxDSMediaAction, MxDSMultiAction, MxDSSelectAction, and MxDSSound.
Definition at line 259 of file mxdsaction.cpp.
|
inline |
[AI] Gets the direction vector (typically forward vector) for this action.
Definition at line 220 of file mxdsaction.h.
|
virtual |
[AI] Gets the duration for which this action is intended to run.
[AI] Duration is measured in game or media ticks.
Reimplemented in MxDSParallelAction, and MxDSSerialAction.
Definition at line 39 of file mxdsaction.cpp.
|
virtual |
[AI] Gets elapsed time for this action since the last time field 0x90 was set.
[AI] Value is determined by current timer - m_unk0x90.
Definition at line 159 of file mxdsaction.cpp.
|
inline |
[AI] Retrieves the extra data and its length for this action.
[out] | p_extraLength | The length of extra [AI] |
[out] | p_extraData | The pointer to extra data [AI] |
Definition at line 168 of file mxdsaction.h.
|
inline |
[AI] Accessor for extra data (not null-terminated).
Definition at line 188 of file mxdsaction.h.
|
inline |
[AI] Returns the length (in bytes) of extra data.
Definition at line 193 of file mxdsaction.h.
|
inline |
[AI] Returns the flag field for this action (bitmask).
Definition at line 177 of file mxdsaction.h.
|
inline |
[AI] Gets the location vector for this action (world or local space).
[AI] (x, y, z) in Mx3DPointFloat units.
Definition at line 215 of file mxdsaction.h.
|
inline |
[AI] Returns the loop count for this action.
-1 means infinite or not specified.
Definition at line 203 of file mxdsaction.h.
|
inline |
[AI] Returns a pointer to the "origin" core object, which may be used to localize the action.
[AI_SUGGESTED_NAME: GetOriginCore]
Definition at line 259 of file mxdsaction.h.
|
overridevirtual |
[AI] Serializes the size on disk of this action (all fields + extra data length)
[AI] Used for saving/exporting out the action. [AI]
Reimplemented from MxDSObject.
Reimplemented in MxDSMediaAction, MxDSMultiAction, MxDSSelectAction, and MxDSSound.
Definition at line 113 of file mxdsaction.cpp.
|
inline |
[AI] Gets the nominal start time for the action, as loaded or scheduled.
Definition at line 198 of file mxdsaction.h.
|
inline |
[AI] Returns a pointer to an associated or auxiliary core object.
[AI_SUGGESTED_NAME: GetAuxObject]
Definition at line 248 of file mxdsaction.h.
|
virtual |
[AI] Gets the unknown value at offset 0x90, likely a start timestamp.
[AI_SUGGESTED_NAME: GetStartTimestamp]
Definition at line 67 of file mxdsaction.cpp.
|
inline |
[AI] Gets the up vector for this action (global or local).
Definition at line 225 of file mxdsaction.h.
[AI] Checks if this action contains/was created for a specific SI object id.
p_objectId | Object id being checked [AI] |
TRUE | If id matches, FALSE otherwise [AI] |
Reimplemented in MxDSMultiAction, and MxDSStreamingAction.
Definition at line 53 of file mxdsaction.cpp.
|
inlineoverridevirtual |
[AI] Run-time type check, compares provided name with this or any ancestor type.
p_name | Potential class type to match [AI] |
TRUE | If type or ancestor type matches [AI] |
FALSE | Otherwise [AI] |
Reimplemented from MxCore.
Reimplemented in MxDSAnim, MxDSEvent, MxDSMediaAction, MxDSMultiAction, MxDSObjectAction, MxDSParallelAction, MxDSSelectAction, MxDSSerialAction, MxDSSound, and MxDSStill.
Definition at line 80 of file mxdsaction.h.
|
inline |
[AI] Tests for the state of the (unknown purpose) bit 3 flag in m_flags.
Definition at line 275 of file mxdsaction.h.
|
inline |
[AI] Whether this action is set to loop based on current flags.
Definition at line 270 of file mxdsaction.h.
|
virtual |
[AI] Copies/merges properties from another action.
Respects special value sentinels to only merge set values.
p_dsAction | Source action to merge from [AI] |
[AI] Fields with INT_MIN/FLT_MAX are ignored. Handles extra data concatenation with separator.
Reimplemented in MxDSMultiAction.
Definition at line 166 of file mxdsaction.cpp.
MxDSAction & MxDSAction::operator= | ( | MxDSAction & | p_dsAction | ) |
[AI] Assignment operator: deep-copy from a different MxDSAction, including base class data and extra fields.
p_dsAction | Source action to assign from [AI] |
Definition at line 133 of file mxdsaction.cpp.
|
inline |
[AI] Sets the direction vector for this action.
p_direction | Direction vector [AI] |
Definition at line 237 of file mxdsaction.h.
|
virtual |
[AI] Sets the duration of this action in ticks or time units.
p_duration | The intended duration [AI] |
Reimplemented in MxDSParallelAction, and MxDSSerialAction.
Definition at line 46 of file mxdsaction.cpp.
|
inline |
[AI] Sets the flag bitmask controlling action logic (enabled, looping, etc).
p_flags | Bitmask to set [AI] |
Definition at line 183 of file mxdsaction.h.
|
inline |
[AI] Sets the location vector for this action.
p_location | Location vector [AI] |
Definition at line 231 of file mxdsaction.h.
|
inline |
[AI] Sets the loop count for this action.
p_loopCount | Value to assign [AI] |
Definition at line 209 of file mxdsaction.h.
|
inline |
[AI] Sets the origin core pointer for this action, if spatially transforming/localizing this action.
[AI_SUGGESTED_NAME: SetOriginCore]
p_origin | Core object pointer [AI] |
Definition at line 265 of file mxdsaction.h.
|
inline |
[AI] Sets the auxiliary core pointer for this action.
[AI_SUGGESTED_NAME: SetAuxObject]
p_unk0x84 | Object pointer to associate [AI] |
Definition at line 254 of file mxdsaction.h.
|
virtual |
[AI] Set unknown value at offset 0x90, used as baseline in GetElapsedTime.
[AI_SUGGESTED_NAME: SetStartTimestamp]
p_unk0x90 | Value to set at 0x90 [AI] |
Reimplemented in MxDSMultiAction.
Definition at line 60 of file mxdsaction.cpp.
|
inline |
[AI] Sets the up vector for this action.
p_up | Up vector [AI] |
Definition at line 243 of file mxdsaction.h.
|
overridevirtual |
[AI] Unknown virtual placeholder, possibly for additional interfaces.
[AI_SUGGESTED_NAME: UnknownVirtual]
Reimplemented from MxDSObject.
Reimplemented in MxDSMediaAction, and MxDSMultiAction.
Definition at line 106 of file mxdsaction.cpp.
|
protected |
|
protected |
[AI] The duration to run the action, or INT_MIN for undefined.
[AI]
Definition at line 300 of file mxdsaction.h.
|
protected |
[AI] Opaque extra data for custom or extended behavior.
[AI]
Definition at line 325 of file mxdsaction.h.
|
protected |
|
protected |
|
protected |
[AI] Location in 3D world or local space (x, y, z).
[AI]
Definition at line 310 of file mxdsaction.h.
|
protected |
[AI] Number of times to repeat the action, or -1 for infinite/not-set.
[AI]
Definition at line 305 of file mxdsaction.h.
|
protected |
[AI] Pointer to an "origin" MxCore object, for spatial/ownership reference.
[AI]
Definition at line 345 of file mxdsaction.h.
|
protected |
[AI] The size of this action's fields on disk, not counting ancestor size.
Used for serialization. [AI]
Definition at line 285 of file mxdsaction.h.
|
protected |
[AI] Time at which the action is meant to start, or INT_MIN for unset.
[AI]
Definition at line 295 of file mxdsaction.h.
|
protected |
[AI] Pointer to an auxiliary MxCore object, purpose unknown.
[AI]
Definition at line 335 of file mxdsaction.h.
|
protected |
|
protected |
[AI] Unknown field, appears to store a timestamp for GetElapsedTime logics.
[AI_SUGGESTED_NAME: m_startTimestamp]
Definition at line 350 of file mxdsaction.h.
|
protected |