Render thread

Core objects and interaction with the render thread.

Classes

Structs

Enums

Free functions

GetRenderThread

RenderThread &GetRenderThread()

Returns the render thread manager used for dealing with the render thread from external threads.

AssertIfNotRenderThread

void AssertIfNotRenderThread()

Throws an exception if current thread isn't the render thread.

AssertIfRenderThread

void AssertIfRenderThread()

Throws an exception if current thread is the render thread.

EnsureRenderThread

inline bool EnsureRenderThread()

Returns false if currently not at the render thread, and triggers an ensure.

GetRenderProxy

T &&GetRenderProxy(T &&value, std::enable_if_t<!B3DIsSharedPointer<std::decay_t<T>>::value && !B3DIsWeakSharedPointer<std::decay_t<T>>::value> * = 0)

Pass non-shared-pointers as is, they aren't core objects.

GetRenderProxy

T &&GetRenderProxy(T &&value, std::enable_if_t<(B3DIsSharedPointer<std::decay_t<T>>::value || B3DIsWeakSharedPointer<std::decay_t<T>>::value) && !std::is_class<std::decay_t<typename std::decay_t<T>::element_type>>::value> * = 0)

Pass shared-pointers to non-classes as is, they aren't core objects.

GetRenderProxy

T &&GetRenderProxy(T &&value, std::enable_if_t<(B3DIsSharedPointer<std::decay_t<T>>::value || B3DIsWeakSharedPointer<std::decay_t<T>>::value) && (std::is_class<std::decay_t<typename std::decay_t<T>::element_type>>::value && !std::is_base_of<CoreObject, std::decay_t<typename std::decay_t<T>::element_type>>::value)> * = 0)

Pass shared-pointers to classes that don't derive from CoreObject as is, they aren't core objects.

GetRenderProxy

decltype(B3DGetRenderProxy(std::declval<T>())) GetRenderProxy(T &&value, std::enable_if_t<B3DIsSharedPointer<std::decay_t<T>>::value && (std::is_class<std::decay_t<typename std::decay_t<T>::element_type>>::value && std::is_base_of<CoreObject, std::decay_t<typename std::decay_t<T>::element_type>>::value)> * = 0)

Convert shared-pointers with classes that derive from CoreObject to their RenderProxy variants.

GetRenderProxy

decltype(B3DGetRenderProxy(std::declval<T>())) GetRenderProxy(T &&value, std::enable_if_t<(B3DIsWeakSharedPointer<std::decay_t<T>>::value) && (std::is_class<std::decay_t<typename std::decay_t<T>::element_type>>::value && std::is_base_of<CoreObject, std::decay_t<typename std::decay_t<T>::element_type>>::value)> * = 0)

Convert shared-pointers with classes that derive from CoreObject to their RenderProxy variants.

RenderProxySyncField

void RenderProxySyncField(FieldTypeA &a, FieldTypeB &b, std::enable_if_t<!IsRenderProxy> * = 0)

Copies a field from the non-core object into the field in the RenderProxySyncPacket.

RenderProxySyncField

void RenderProxySyncField(FieldTypeA &a, FieldTypeB &b, std::enable_if_t<IsRenderProxy> * = 0)

Copies a field from the RenderProxySyncPacket to a core object.

RenderProxySyncField

void RenderProxySyncField(RenderProxySyncVector<FieldTypeA> &a, Vector<FieldTypeB> &b, std::enable_if_t<!IsRenderProxy> * = 0)

Copies an array from the non-core object into the field in the RenderProxySyncPacket.

RenderProxySyncField

void RenderProxySyncField(RenderProxySyncVector<FieldTypeA> &a, Vector<FieldTypeB> &b, std::enable_if_t<IsRenderProxy> * = 0)

Copies an array from the RenderProxySyncPacket to a core object.

RenderProxySyncField

void RenderProxySyncField(RenderProxySyncVector<FieldTypeA> &a, TInlineArray<FieldTypeB, N> &b, std::enable_if_t<!IsRenderProxy> * = 0)

Copies an array from the non-core object into the field in the RenderProxySyncPacket.

RenderProxySyncField

void RenderProxySyncField(RenderProxySyncVector<FieldTypeA> &a, TInlineArray<FieldTypeB, N> &b, std::enable_if_t<IsRenderProxy> * = 0)

Copies an array from the RenderProxySyncPacket to a core object.

Internal

Symbols intended for engine-internal use. Not part of the public API.

Classes

Structs

  • CoreObjectManager::PerObjectSyncData — Stores dirty data that is to be transferred from main thread to render thread part of a CoreObject, for a single object.
  • CoreObjectManager::PerFrameSyncData — Stores dirty data that is to be transferred from main thread to thread thread part of a CoreObject, for all dirty objects in one frame.
  • CoreObjectManager::DirtyObjectData — Contains information about a dirty CoreObject that requires syncing to the render thread.