13 m_type = e_multiAction;
34 while (cursor.
Next(action)) {
49 if (
this == &p_dsMultiAction) {
66 while (cursor.
Next(action)) {
79 while (cursor.
Next(action)) {
94 while (cursor.
Next(action)) {
95 if (action->
HasId(p_objectId)) {
124 while (cursor.
Next(action)) {
136 totalSizeOnDisk += 12;
137 totalSizeOnDisk += 4;
141 while (cursor.
Next(action)) {
147 return totalSizeOnDisk;
156 MxU32 extraFlag = *(
MxU32*) (p_source + 4) & 1;
160 p_source +=
sizeof(count);
164 MxU32 extraFlag = *(
MxU32*) (p_source + 4) & 1;
168 p_source += extraFlag;
174 p_source += extraFlag;
185 while (cursor.
Next(action)) {
[AI] Atomized (unique) string identifier, managed by reference counting.
[AI] Convenience cursor class for iterating over an MxDSActionList.
[AI] A list (collection) of pointers to MxDSAction objects, supporting comparison,...
static void Destroy(MxDSAction *p_action)
[AI] Destroys/deletes a given MxDSAction pointer.
[AI] Represents an action deserialized from SI chunks, holding key animation or script parameters suc...
undefined4 VTable0x14() override
[AI] Unknown virtual placeholder, possibly for additional interfaces.
MxU32 GetSizeOnDisk() override
[AI] Serializes the size on disk of this action (all fields + extra data length)
MxDSAction & operator=(MxDSAction &p_dsAction)
[AI] Assignment operator: deep-copy from a different MxDSAction, including base class data and extra ...
virtual MxBool HasId(MxU32 p_objectId)
[AI] Checks if this action contains/was created for a specific SI object id.
void Deserialize(MxU8 *&p_source, MxS16 p_unk0x24) override
[AI] Deserializes this action's data from a binary buffer.
virtual void SetUnknown90(MxLong p_unk0x90)
[AI] Set unknown value at offset 0x90, used as baseline in GetElapsedTime.
virtual MxDSAction * Clone()
[AI] Clones (deep-copies) this action and returns a new pointer.
virtual void MergeFrom(MxDSAction &p_dsAction)
[AI] Copies/merges properties from another action.
MxLong m_unk0x90
[AI] Unknown field, appears to store a timestamp for GetElapsedTime logics.
[AI] Represents a container for multiple MxDSAction objects, facilitating the grouping and management...
~MxDSMultiAction() override
[AI] Destructor.
void CopyFrom(MxDSMultiAction &p_dsMultiAction)
[AI] Deeply copies all actions from another MxDSMultiAction.
MxDSAction * Clone() override
[AI] Constructs a deep clone of this multi-action, including all subactions.
MxDSMultiAction()
[AI] Constructs an MxDSMultiAction, initializing its type and instantiating an empty action list.
void SetAtomId(MxAtomId p_atomId) override
[AI] Propagates the given AtomId to this and all subactions.
void MergeFrom(MxDSAction &p_dsAction) override
[AI] Propagates a merge operation from the provided MxDSAction to all subactions, as well as self.
void Deserialize(MxU8 *&p_source, MxS16 p_unk0x24) override
[AI] Reads the object's data from a raw byte buffer.
MxU32 GetSizeOnDisk() override
[AI] Calculates the total disk size occupied by this multi-action and all its subactions.
undefined4 VTable0x14() override
[AI] Hook for vtable entry 0x14.
MxDSActionList * m_actionList
[AI] List of contained actions (ownership: this owns and deletes subactions).
MxBool HasId(MxU32 p_objectId) override
[AI] Returns whether this action or any contained subaction matches the provided object id.
MxU32 m_sizeOnDisk
[AI] Stores the last-computed disk storage size for m_actionList and metadata.
MxDSMultiAction & operator=(MxDSMultiAction &p_dsMultiAction)
[AI] Assignment operator, deeply copies all state and actions from another MxDSMultiAction.
void SetUnknown90(MxLong p_unk0x90) override
[AI] Propagates an unknown value to this and all subactions.
virtual void SetAtomId(MxAtomId p_atomId)
[AI] Sets the atom id for this object instance, used for indexing or lookup.
MxU32 GetObjectId()
[AI] Returns the object id numeric value.
#define DECOMP_SIZE_ASSERT(T, S)
MxDSObject * DeserializeDSObjectDispatch(MxU8 *&, MxS16)
[AI] Reads and deserializes a DS object of the specific type from an SI buffer.