class DecalObjectStorageBase

Contains render thread representation of decal objects, stored in packed arrays accessible by PackedRendererId.

Implements main -> render thread synchronization logic for decal objects.

Public

Methods

SyncRead

void *SyncRead(ecs::Registry &registry, FrameAllocator &allocator) override

Scans the provided registry for dirty objects, generates the update packets and stores them into a batch buffer allocated by .

Returns pointer to the batch buffer memory.

SyncWrite

void SyncWrite(void *batchData, FrameAllocator &allocator) override

Applies data from a batch buffer generated by SyncRead to objects on the render thread, and frees the frame-allocated batch data via .

GetDecalProxy

render::DecalProxy &GetDecalProxy(PackedRendererId slotId)

Returns the decal proxy at the given slot.

GetDecalProxy

const render::DecalProxy &GetDecalProxy(PackedRendererId slotId) const

Returns the decal proxy at the given slot (const).

GetDecalCount

u32 GetDecalCount() const

Returns the total number of decals.

CreateRenderState

virtual void CreateRenderState(TArrayView<const PackedRendererId> slotIds) = 0

Called once per frame for each new decal being added, or a decal whose data needs to be rebuilt after a significant update (in which case DestroyRenderState will be called first).

DestroyRenderState

virtual void DestroyRenderState(TArrayView<const PackedRendererId> slotIds) = 0

Called once per frame for each decal that is being removed, or a decal that needs to be rebuilt after a significant update (in which case CreateRenderState will be called right after).

UpdateRenderState

virtual void UpdateRenderState(TArrayView<const PackedRendererId> slotIds) = 0

Called once per frame for each decal that needs to be updated after a minor update (e.g. one that doesn't require a full render state rebuild, such as a transform change).

Protected

Fields

mDecalProxies