class RendererSyncManager

Module that orchestrates ECS-based batch sync between main thread objects and their renderer-side representations.

Iterates all active scenes each frame and triggers their synchronization. Manages ring-buffered frame allocators to ensure data survives until the render thread consumes it.

Public

Constructors

RendererSyncManager

RendererSyncManager()

Methods

~RendererSyncManager

~RendererSyncManager() noexcept

SyncToRenderThread

void SyncToRenderThread(bool swapBuffers)

Run the full sync pipeline: for each active scene, reads dirty data on the main thread and posts a command to apply it on the render thread.

If is true, rotate the frame allocator ring buffer.

staticInstance

static T &Instance()

Returns a reference to the module instance.

Module has to have been started up first otherwise an exception will be thrown.

staticInstancePtr

static T *InstancePtr()

Returns a pointer to the module instance.

Module has to have been started up first otherwise an exception will be thrown.

staticShutDown

static void ShutDown()

Shuts down this module and frees any resources it is using.

staticIsStarted

static bool IsStarted()

Query if the module has been started.

Protected

Methods

~Module<T>

virtual ~Module<T>() = default

OnStartUp

virtual void OnStartUp()

Override if you want your module to be notified once it has been constructed and started.

OnShutDown

virtual void OnShutDown()

Override if you want your module to be notified just before it is deleted.

staticInstanceInternal

static T *&InstanceInternal()

Returns a singleton instance of this module.

staticIsDestroyed

static bool &IsDestroyed()

Checks has the Module been shut down.

staticIsStartedUp

static bool &IsStartedUp()

Checks has the Module been started up.

Private

Fields

mSyncAllocators

FrameAllocator *[3] mSyncAllocators

mActiveFrameAllocatorIndex

u32 mActiveFrameAllocatorIndex