55 while (m_list0x80.
PopFront(
object)) {
59 while (m_list0x64.
PopFront(
object)) {
63 while (!m_list0x74.empty()) {
65 m_list0x74.pop_front();
113 if (p_action ==
NULL) {
129void MxDiskStreamController::FUN_100c7970()
136void MxDiskStreamController::FUN_100c7980()
144 if (
m_unk0x3c.size() && m_unk0x8c < m_provider->GetStreamBuffersNum()) {
239void MxDiskStreamController::FUN_100c7ce0(
MxDSBuffer* p_buffer)
252MxResult MxDiskStreamController::FUN_100c7d10()
261 if (FUN_100c8360(action) !=
SUCCESS) {
279 for (MxDSObjectList::iterator it2 = m_list0x64.begin(); it2 != m_list0x64.end(); it2++) {
290 m_list0x64.erase(it2);
291 return streamingAction;
304 if (p_streamingaction) {
305 m_list0x64.
PushBack(p_streamingaction);
426 m_list0x74.push_back(p_buffer);
431void MxDiskStreamController::FUN_100c8540()
434 for (list<MxDSBuffer*>::iterator it = m_list0x74.begin(); it != m_list0x74.end();) {
437 m_list0x74.erase(it++);
446 while (!m_list0x64.empty()) {
448 m_list0x64.pop_front();
476 m_list0xb8.push_back(p_streamingAction);
480void MxDiskStreamController::FUN_100c8720()
485 while (!m_list0xb8.empty()) {
487 m_list0xb8.pop_front();
[AI] Represents an action deserialized from SI chunks, holding key animation or script parameters suc...
MxCore * GetUnknown84()
[AI] Returns a pointer to an associated or auxiliary core object.
void SetOrigin(MxCore *p_origin)
[AI] Sets the origin core pointer for this action, if spatially transforming/localizing this action.
void SetUnknown84(MxCore *p_unk0x84)
[AI] Sets the auxiliary core pointer for this action.
MxCore * GetOrigin()
[AI] Returns a pointer to the "origin" core object, which may be used to localize the action.
[AI] Buffer for managing streamed DS (Data Stream) chunks and actions.
MxU16 GetRefCount()
[AI] Returns the current buffer reference count.
Type GetMode()
[AI] Returns the current buffer management mode.
MxResult AllocateBuffer(MxU32 p_bufferSize, Type p_mode)
[AI] Allocates a buffer of a given size and memory mode.
void FUN_100c6f80(MxU32 p_writeOffset)
[AI] Sets the buffer's internal streaming position to the given write offset.
MxResult FUN_100c67b0(MxStreamController *p_controller, MxDSAction *p_action, MxDSStreamingAction **p_streamingAction)
[AI] Executes streaming action startup and object creation loop from an initial SI chunk.
@ e_allocate
[AI] Newly allocated memory with new[].
@ e_chunk
[AI] Chunk-managed memory (from Streamer pool).
@ e_unknown
[AI] Unknown/other (may be unused or special).
MxDSObject * FindAndErase(MxDSObject *p_action)
[AI] Finds the matching object and removes it from the list.
MxDSObject * Find(MxDSObject *p_action)
[AI] Finds a matching object in the list without removing it.
[AI] Base class for any object deserialized from an SI (script/data) file in the LEGO Island engine.
void SetUnknown28(MxPresenter *p_unk0x28)
[AI] Sets the pointer at 0x28 (presenter or handler).
MxPresenter * GetUnknown28()
[AI] Returns the pointer stored at 0x28, likely a presenter or handler for this DS object.
MxS16 GetUnknown24()
[AI] Returns the unknown 0x24 value (may be data version or usage state). [AI]
void SetObjectId(MxU32 p_objectId)
[AI] Sets the object id (for serialization or lookup).
MxU32 GetObjectId()
[AI] Returns the object id numeric value.
[AI] Represents an action that streams data from a buffer within a DirectScript (DS) media timeline.
void SetUnknowna0(MxDSBuffer *p_unk0xa0)
[AI] Assigns a streaming buffer to this action (ownership rules apply).
MxDSBuffer * GetUnknowna0()
[AI] Returns a pointer to the first streaming buffer (possibly current read buffer).
MxU32 GetUnknown94()
[AI] Gets the streaming offset or status value at 0x94.
MxU32 GetBufferOffset()
[AI] Gets the buffer offset where streaming is currently positioned.
MxDSBuffer * GetUnknowna4()
[AI] Returns a pointer to the second streaming buffer (possibly for prefetch or double buffering).
[AI] Controller for streaming from disk-based SI resources, manages buffers and streaming actions.
virtual MxResult VTable0x34(undefined4)
[AI] Cleans up/aborts all queued streaming actions associated with the specified action.
~MxDiskStreamController() override
[AI] Destructor. Cleans up streaming actions, buffers, and provider. Unregisters from tickle manager.
void FUN_100c7f40(MxDSStreamingAction *p_streamingaction)
[AI] Adds a streaming action to m_list0x64 for processing.
MxResult VTable0x18(undefined4, undefined4) override
[AI] Opens the given resource file for streaming.
MxResult VTable0x30(MxDSAction *p_action) override
[AI] Pops a queued (ready) streaming action and prepares it for buffer assignment....
MxDiskStreamController()
[AI] Constructor. Initializes internal state and buffer counters.
void FUN_100c8120(MxDSAction *p_action)
[AI] Cleans up an action and all associated resources, notifies provider.
MxResult VTable0x24(MxDSAction *p_action) override
[AI] Start or queue the streaming action for the given action, potentially using buffer reuse and str...
void FUN_100c7cb0(MxDSStreamingAction *p_action)
[AI] Destroys the given streaming action and any associated buffers.
void FUN_100c8670(MxDSStreamingAction *p_streamingAction)
[AI] Pushes an action to a private list (m_list0xb8) for later cleanup.
MxResult Tickle() override
[AI] Called by tickle managers to allow the object to update itself.
MxResult Open(const char *p_filename) override
[AI] Opens a data stream with the specified resource filename.
MxResult VTable0x20(MxDSAction *p_action) override
[AI] Placeholder/overridden method—purpose unknown from context.
MxResult FUN_100c7890(MxDSStreamingAction *p_action)
[AI] Adds a streaming action to the list (m_list0x80) and possibly processes buffer allocation.
MxDSStreamingAction * VTable0x28() override
[AI] Marks an action as completed and cleans up associated resources.
void InsertToList74(MxDSBuffer *p_buffer)
[AI] Inserts a buffer to the buffer reuse list (m_list0x74).
[AI] Disk-based stream provider for resource loading using background streaming and multithreading.
[AI] Notification parameter marking the end of an action, specialization of MxActionNotificationParam...
[AI] Contains data for scheduling the next action in a process, storing an object id,...
MxS16 GetUnknown24() const
[AI] Gets the unknown parameter or code for the action (purpose unclear in decompilation output).
MxU32 GetObjectId() const
[AI] Gets the identifier for the object the action applies to.
MxU32 GetData() const
[AI] Retrieves the extra data associated with the action dispatch.
void SetData(MxU32 p_data)
[AI] Sets the data value for this action instance.
static MxOmni * GetInstance()
[AI] Returns the singleton instance of the MxOmni subsystem coordinator.
virtual void NotifyCurrentEntity(const MxNotificationParam &p_param)
[AI] [VIRTUAL BASE] Placeholder for derived implementations—sends a notification to the currently act...
virtual MxResult VTable0x24(MxDSAction *p_action)
[AI] Matches and processes an action in the "unk0x54" (pending) list and triggers sending to subscrib...
MxDSSubscriberList m_subscribers
[AI] List of current subscribers (listening entities for streamed data).
MxCriticalSection m_criticalSection
[AI] Protects streaming controller state for thread-safety.
virtual MxResult VTable0x20(MxDSAction *p_action)
[AI] Streams data for the provided action by determining data offset and reading required chunk.
MxNextActionDataStartList m_nextActionList
[AI] List mapping from streamed object/action to starting offset (used for internal tracking).
MxDSObjectList m_unk0x3c
[AI] List of actions currently being processed/streamed ("in progress" actions).
MxDSAction * m_action0x60
[AI] Current action pointer used during processing, moved from pending to active as actions are proce...
virtual MxResult Open(const char *p_filename)
[AI] Opens a data stream with the specified resource filename.
MxStreamProvider * m_provider
[AI] Stream provider abstraction, handling resource IO (RAM/disk).
MxDSObjectList m_unk0x54
[AI] List of actions queued and ready to be streamed ("pending" actions).
virtual MxResult VTable0x30(MxDSAction *p_action)
[AI] Removes a completed action from in-progress ("unk0x3c") list and deletes its data block.
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,...
virtual MxU32 GetFileSize()=0
[AI] Gets the file size, in bytes, of the underlying SI file resource.
virtual MxResult SetResourceToGet(MxStreamController *p_pLookup)
[AI] Attaches a stream controller as the resource to provide data for.
virtual void VTable0x20(MxDSAction *p_action)
[AI] Virtual hook for subclasses to react to new stream actions being queued.
virtual void UnregisterClient(MxCore *p_client)
[AI] Unregisters (marks for destruction) a previously registered client.
virtual void RegisterClient(MxCore *p_client, MxTime p_interval)
[AI] Registers an MxCore object to receive periodic tickles.
void PushBack(T p_obj)
[AI] Pushes a copy of the provided object to the back of the list.
MxBool PopFront(T &p_obj)
[AI] Removes and returns the first element of the list.
#define DECOMP_SIZE_ASSERT(T, S)
#define NULL
[AI] Null pointer value (C/C++ semantics).
#define FAILURE
[AI] Used to indicate a failed operation in result codes.
#define SUCCESS
[AI] Used to indicate a successful operation in result codes.
#define AUTOLOCK(CS)
[AI] Macro for automatic locking using the MxAutoLock class. This macro instantiates an MxAutoLock ob...
MxTickleManager * TickleManager()
[AI] Provides access to the global tickle manager.
@ c_notificationEndAction
[AI] Indicates the end of an action [AI]