22void MxLoopingSmkPresenter::Init()
24 m_elapsedDuration = 0;
36 if (!p_fromDestructor) {
99 while (cursor.
Next(chunk)) {
void Enter()
[AI] Acquires/gains entry to the critical section or mutex, blocking if not available.
void Leave()
[AI] Releases/leaves the critical section or mutex.
virtual MxLong GetDuration()
[AI] Gets the duration for which this action is intended to run.
virtual MxLong GetElapsedTime()
[AI] Gets elapsed time for this action since the last time field 0x90 was set.
MxLong GetTime()
[AI] Returns the time (timestamp or tick) associated with this chunk. [AI]
MxU16 GetChunkFlags()
[AI] Returns the chunk's flag bitfield. [AI]
void SetTime(MxLong p_time)
[AI] Sets the time (timestamp/tick/frame) associated with this chunk.
void FreeDataChunk(MxStreamChunk *p_chunk)
[AI] Frees (deletes) a data chunk if it's found in the consumed data list; also forcibly deletes sing...
MxBool Last(T &p_obj)
[AI]
MxBool Current(T &p_obj)
[AI]
MxBool First(T &p_obj)
[AI]
[AI] Presenter for looping Smacker video resources.
void RepeatingTickle() override
[AI] Processes the repeating tickle state, manages looping frame/time logic and state transitions for...
~MxLoopingSmkPresenter() override
[AI] Destructor, releases internal resources and calls cleanup as needed.
void Destroy() override
[AI] General object destruction routine, releases resources and unregisters presenter from the manage...
void NextFrame() override
[AI] Advances to the next frame of the video, managing end of stream logic and frame reloading for lo...
MxResult AddToManager() override
[AI] Adds this presenter to its manager, handling resource/thread safety and registration.
virtual void VTable0x8c()
[AI] Processes looped frame loading and tickle state progression during loop playback.
void VTable0x88() override
[AI] Handles palette resets and frame control at the logical end of a loop.
MxLoopingSmkPresenter()
[AI] Constructs a looping SMK presenter and initializes resources and state.
void ProgressTickleState(TickleState p_tickleState)
[AI] Helper for advancing the presenter's tickle state and updating transition history.
MxDSAction * m_action
[AI] The associated action currently being presented by this presenter.
TickleState m_currentTickleState
[AI] Current state in the tickle lifecycle.
@ e_repeating
[AI] Presentation is repeating (e.g., looping media).
@ e_freezing
[AI] Temporarily suspending updates or playback.
MxCriticalSection m_criticalSection
[AI] Thread synchronization for presenter state and data.
MxSmk m_mxSmk
[AI] Smacker file decoding context holding header, palette, frame types, and decode buffers.
void LoadFrame(MxStreamChunk *p_chunk) override
[AI] Loads and renders a Smacker video frame from a stream chunk.
MxResult AddToManager() override
[AI] Registers this presenter instance with the video presentation manager.
void Destroy() override
[AI] Cleans up and destroys the resources used by this presenter.
MxU32 m_currentFrame
[AI] Current frame index within the Smacker stream.
[AI] Cursor for iterating over a MxStreamChunkList.
[AI] Represents a streamable chunk of data, typically sourced from a media buffer and designed for no...
MxS16 m_unk0x5c
Loop/advance/frame decode counter. [AI].
#define DECOMP_SIZE_ASSERT(T, S)
#define AUTOLOCK(CS)
[AI] Macro for automatic locking using the MxAutoLock class. This macro instantiates an MxAutoLock ob...
#define DS_CHUNK_END_OF_STREAM
[AI] Flag bit indicating this chunk is the last in its stream.
SmackTag m_smackTag
[AI] Metadata block from the Smacker file header.