Isle
|
[AI] Controller for streaming and managing multimedia resources and actions during gameplay. More...
#include <mxstreamcontroller.h>
Public Member Functions | |
MxStreamController () | |
[AI] Constructor. More... | |
~MxStreamController () override | |
[AI] Destructor. More... | |
const char * | ClassName () const override |
[AI] Returns the class name used for runtime type checks. More... | |
MxBool | IsA (const char *p_name) const override |
[AI] Performs runtime type checking, matching the given name with this or any parent class. More... | |
virtual MxResult | Open (const char *p_filename) |
[AI] Opens a data stream with the specified resource filename. More... | |
virtual MxResult | VTable0x18 (undefined4, undefined4) |
[AI] Unknown virtual function placeholder. More... | |
virtual MxResult | VTable0x1c (undefined4, undefined4) |
[AI] Unknown virtual function placeholder. More... | |
virtual MxResult | VTable0x20 (MxDSAction *p_action) |
[AI] Streams data for the provided action by determining data offset and reading required chunk. More... | |
virtual MxResult | VTable0x24 (MxDSAction *p_action) |
[AI] Matches and processes an action in the "unk0x54" (pending) list and triggers sending to subscribers. More... | |
virtual MxDSStreamingAction * | VTable0x28 () |
[AI] Returns a pointer to the current/active streaming action object. More... | |
virtual MxResult | VTable0x2c (MxDSAction *p_action, MxU32 p_bufferval) |
[AI] Handles allocation and setup of a new streaming action and associated chunk for the action, with prefetch based on buffer value. More... | |
virtual MxResult | VTable0x30 (MxDSAction *p_action) |
[AI] Removes a completed action from in-progress ("unk0x3c") list and deletes its data block. More... | |
void | AddSubscriber (MxDSSubscriber *p_subscriber) |
[AI] Adds a subscriber to the list who will receive streaming action data. More... | |
void | RemoveSubscriber (MxDSSubscriber *p_subscriber) |
[AI] Removes a previously registered subscriber from the stream notification list. More... | |
MxResult | FUN_100c1800 (MxDSAction *p_action, MxU32 p_val) |
[AI] Helper function to add a next action data start object for tracking offsets for streaming actions. More... | |
MxResult | FUN_100c1a00 (MxDSAction *p_action, MxU32 p_offset) |
[AI] Allocates and inserts a streaming action chunk at a given buffer offset for the supplied action. More... | |
MxPresenter * | FUN_100c1e70 (MxDSAction &p_action) |
[AI] Returns the presenter associated with a given in-progress streaming action. More... | |
MxResult | FUN_100c1f00 (MxDSAction *p_action) |
[AI] Sends a streaming chunk to all current subscribers for the specified action, handling recursive send for multi-actions. More... | |
MxBool | IsStoped (MxDSObject *p_obj) |
[AI] Checks if the streaming operation for a given object/action has fully stopped and no longer has active subscribers. More... | |
MxResult | InsertActionToList54 (MxDSAction *p_action) |
[AI] Inserts a clone of the provided action into the pending ("unk0x54") list. More... | |
MxNextActionDataStart * | FindNextActionDataStartFromStreamingAction (MxDSStreamingAction *p_action) |
[AI] Finds the corresponding next action data start (offset info) for a streaming action. More... | |
MxAtomId & | GetAtom () |
[AI] Retrieves the atom ID (unique logical identifier) for this stream controller. More... | |
MxStreamProvider * | GetProvider () |
[AI] Retrieves the current stream provider abstraction used to access file/memory resources. More... | |
MxDSObjectList & | GetUnk0x3c () |
[AI] Returns the list of actions currently being streamed ("in progress" list). More... | |
MxDSObjectList & | GetUnk0x54 () |
[AI] Returns the list of actions pending to be streamed ("pending" list). More... | |
MxDSSubscriberList & | GetSubscriberList () |
[AI] Returns the list of current stream subscribers. 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 | |
MxCriticalSection | m_criticalSection |
[AI] Protects streaming controller state for thread-safety. More... | |
MxAtomId | m_atom |
[AI] Unique identifier for this stream, derived from source/resource name. More... | |
MxStreamProvider * | m_provider |
[AI] Stream provider abstraction, handling resource IO (RAM/disk). More... | |
undefined4 * | m_unk0x2c |
[AI] Unknown data, likely used for streaming internals or as a metadata pointer. More... | |
MxDSSubscriberList | m_subscribers |
[AI] List of current subscribers (listening entities for streamed data). More... | |
MxDSObjectList | m_unk0x3c |
[AI] List of actions currently being processed/streamed ("in progress" actions). More... | |
MxNextActionDataStartList | m_nextActionList |
[AI] List mapping from streamed object/action to starting offset (used for internal tracking). More... | |
MxDSObjectList | m_unk0x54 |
[AI] List of actions queued and ready to be streamed ("pending" actions). More... | |
MxDSAction * | m_action0x60 |
[AI] Current action pointer used during processing, moved from pending to active as actions are processed. More... | |
[AI] Controller for streaming and managing multimedia resources and actions during gameplay.
[AI] MxStreamController manages dynamic streaming of data, handling subscribers, action objects, and the provider responsible for loading/reading resources. It works with MxDSAction and MxDSSubscriber, coordinating how scripted actions and multimedia objects are streamed and parsed frame-by-frame.
This is a central class in resource handling, linking file abstraction, direct stream control, and update notifications across the system. In its lifetime, it tracks actions pending to be streamed, in-process or queued, and actions already streamed, to manage play and event timing for media.
Definition at line 47 of file mxstreamcontroller.h.
MxStreamController::MxStreamController | ( | ) |
[AI] Constructor.
Initializes member variables and sets up an empty streaming control context.
Definition at line 20 of file mxstreamcontroller.cpp.
|
override |
[AI] Destructor.
Cleans up provider, all current actions, subscribers, and action lists.
Definition at line 29 of file mxstreamcontroller.cpp.
void MxStreamController::AddSubscriber | ( | MxDSSubscriber * | p_subscriber | ) |
[AI] Adds a subscriber to the list who will receive streaming action data.
p_subscriber | [AI] Subscriber to add. |
[AI] Used to register clients/entities interested in data chunks from the stream.
Definition at line 81 of file mxstreamcontroller.cpp.
|
inlineoverridevirtual |
[AI] Returns the class name used for runtime type checks.
Reimplemented from MxCore.
Definition at line 63 of file mxstreamcontroller.h.
MxNextActionDataStart * MxStreamController::FindNextActionDataStartFromStreamingAction | ( | MxDSStreamingAction * | p_action | ) |
[AI] Finds the corresponding next action data start (offset info) for a streaming action.
p_action | [AI] Streaming action to lookup data start for. |
Definition at line 312 of file mxstreamcontroller.cpp.
MxResult MxStreamController::FUN_100c1800 | ( | MxDSAction * | p_action, |
MxU32 | p_val | ||
) |
[AI] Helper function to add a next action data start object for tracking offsets for streaming actions.
p_action | [AI] Action whose start should be tracked. |
p_val | [AI] Offset value to track. |
[AI] [AI_SUGGESTED_NAME: TrackNextActionDataStart]
Definition at line 138 of file mxstreamcontroller.cpp.
MxResult MxStreamController::FUN_100c1a00 | ( | MxDSAction * | p_action, |
MxU32 | p_offset | ||
) |
[AI] Allocates and inserts a streaming action chunk at a given buffer offset for the supplied action.
p_action | [AI] Action to stream. |
p_offset | [AI] Buffer offset in the resource stream. |
[AI] [AI_SUGGESTED_NAME: AllocateStreamingAction]
Definition at line 152 of file mxstreamcontroller.cpp.
MxPresenter * MxStreamController::FUN_100c1e70 | ( | MxDSAction & | p_action | ) |
[AI] Returns the presenter associated with a given in-progress streaming action.
p_action | [AI] Action whose presenter is to be retrieved. |
[AI] This retrieves a media presenter object linked to a currently executing action, allowing external control or progress check.
Definition at line 260 of file mxstreamcontroller.cpp.
MxResult MxStreamController::FUN_100c1f00 | ( | MxDSAction * | p_action | ) |
[AI] Sends a streaming chunk to all current subscribers for the specified action, handling recursive send for multi-actions.
p_action | [AI] Action to send data for. |
[AI] Used to propagate action completion/data to all interested game entities or systems.
Definition at line 277 of file mxstreamcontroller.cpp.
|
inline |
[AI] Retrieves the atom ID (unique logical identifier) for this stream controller.
[AI] The atom ID is derived from source name, allowing stream lookup and management globally.
Definition at line 217 of file mxstreamcontroller.h.
|
inline |
[AI] Retrieves the current stream provider abstraction used to access file/memory resources.
[AI] Allows direct access for custom reading or provider queries.
Definition at line 224 of file mxstreamcontroller.h.
|
inline |
[AI] Returns the list of current stream subscribers.
Definition at line 242 of file mxstreamcontroller.h.
|
inline |
[AI] Returns the list of actions currently being streamed ("in progress" list).
Definition at line 230 of file mxstreamcontroller.h.
|
inline |
[AI] Returns the list of actions pending to be streamed ("pending" list).
Definition at line 236 of file mxstreamcontroller.h.
MxResult MxStreamController::InsertActionToList54 | ( | MxDSAction * | p_action | ) |
[AI] Inserts a clone of the provided action into the pending ("unk0x54") list.
p_action | [AI] Action to be cloned and inserted. |
Definition at line 244 of file mxstreamcontroller.cpp.
|
inlineoverridevirtual |
[AI] Performs runtime type checking, matching the given name with this or any parent class.
p_name | [AI] Name to check against. |
Reimplemented from MxCore.
Definition at line 74 of file mxstreamcontroller.h.
MxBool MxStreamController::IsStoped | ( | MxDSObject * | p_obj | ) |
[AI] Checks if the streaming operation for a given object/action has fully stopped and no longer has active subscribers.
p_obj | [AI] The data object or action to check. |
[AI] Used to determine when an action and all its branches are completely done processing.
Definition at line 319 of file mxstreamcontroller.cpp.
|
virtual |
[AI] Opens a data stream with the specified resource filename.
p_filename | [AI] Name of the resource file to open (typically .SI). |
[AI] This sets the atom ID with the converted source name for unique logical identification and later lookups.
Reimplemented in MxDiskStreamController, and MxRAMStreamController.
Definition at line 69 of file mxstreamcontroller.cpp.
void MxStreamController::RemoveSubscriber | ( | MxDSSubscriber * | p_subscriber | ) |
[AI] Removes a previously registered subscriber from the stream notification list.
p_subscriber | [AI] Subscriber to remove. |
[AI] Prevents further notifications/callbacks for this subscriber.
Definition at line 88 of file mxstreamcontroller.cpp.
|
inlinevirtual |
[AI] Unknown virtual function placeholder.
[AI] | Undefined arguments. |
[AI] [AI_SUGGESTED_NAME: Close] Most likely a placeholder for closing or releasing a stream.
Reimplemented in MxDiskStreamController.
Definition at line 93 of file mxstreamcontroller.h.
|
inlinevirtual |
[AI] Unknown virtual function placeholder.
[AI] | Undefined arguments. |
[AI] [AI_SUGGESTED_NAME: Reset] Placeholder for possible reset/flush operation.
Definition at line 101 of file mxstreamcontroller.h.
|
virtual |
[AI] Streams data for the provided action by determining data offset and reading required chunk.
p_action | [AI] The action requesting a data stream. |
[AI] This function performs lookup of the data offset, then executes the data read. Used as a key step in action handling.
Reimplemented in MxDiskStreamController, and MxRAMStreamController.
Definition at line 94 of file mxstreamcontroller.cpp.
|
virtual |
[AI] Matches and processes an action in the "unk0x54" (pending) list and triggers sending to subscribers.
p_action | [AI] The action to process. |
[AI] This removes the matching action from the pending list, updates fields, and initiates streaming.
Reimplemented in MxDiskStreamController, and MxRAMStreamController.
Definition at line 120 of file mxstreamcontroller.cpp.
|
inlinevirtual |
[AI] Returns a pointer to the current/active streaming action object.
[AI] [AI_SUGGESTED_NAME: GetCurrentStreamingAction]
Reimplemented in MxDiskStreamController.
Definition at line 124 of file mxstreamcontroller.h.
|
virtual |
[AI] Handles allocation and setup of a new streaming action and associated chunk for the action, with prefetch based on buffer value.
p_action | [AI] Action to stream. |
p_bufferval | [AI] Data offset or buffer location in the stream. |
Definition at line 213 of file mxstreamcontroller.cpp.
|
virtual |
[AI] Removes a completed action from in-progress ("unk0x3c") list and deletes its data block.
p_action | [AI] Action to remove and finalize. |
[AI] [AI_SUGGESTED_NAME: FinalizeAction]
Reimplemented in MxDiskStreamController.
Definition at line 226 of file mxstreamcontroller.cpp.
|
protected |
[AI] Current action pointer used during processing, moved from pending to active as actions are processed.
Definition at line 253 of file mxstreamcontroller.h.
|
protected |
[AI] Unique identifier for this stream, derived from source/resource name.
Definition at line 246 of file mxstreamcontroller.h.
|
protected |
[AI] Protects streaming controller state for thread-safety.
Definition at line 245 of file mxstreamcontroller.h.
|
protected |
[AI] List mapping from streamed object/action to starting offset (used for internal tracking).
Definition at line 251 of file mxstreamcontroller.h.
|
protected |
[AI] Stream provider abstraction, handling resource IO (RAM/disk).
Definition at line 247 of file mxstreamcontroller.h.
|
protected |
[AI] List of current subscribers (listening entities for streamed data).
Definition at line 249 of file mxstreamcontroller.h.
|
protected |
[AI] Unknown data, likely used for streaming internals or as a metadata pointer.
Definition at line 248 of file mxstreamcontroller.h.
|
protected |
[AI] List of actions currently being processed/streamed ("in progress" actions).
Definition at line 250 of file mxstreamcontroller.h.
|
protected |
[AI] List of actions queued and ready to be streamed ("pending" actions).
Definition at line 252 of file mxstreamcontroller.h.