FPrimitiveSceneProxy* UPaperSpriteComponent::CreateSceneProxy() { FPaperSpriteSceneProxy* NewProxy = new FPaperSpriteSceneProxy(this); if (SourceSprite != nullptr) { FSpriteDrawCallRecord DrawCall; DrawCall.BuildFromSprite(SourceSprite); DrawCall.Color = SpriteColor.ToFColor(/*bSRGB=*/ false); NewProxy->SetSprite_RenderThread(DrawCall, SourceSprite->AlternateMaterialSplitIndex); } return NewProxy; }
FPrimitiveSceneProxy* UPaperFlipbookComponent::CreateSceneProxy() { FPaperFlipbookSceneProxy* NewProxy = new FPaperFlipbookSceneProxy(this); CalculateCurrentFrame(); UPaperSprite* SpriteToSend = GetSpriteAtCachedIndex(); FSpriteDrawCallRecord DrawCall; DrawCall.BuildFromSprite(SpriteToSend); DrawCall.Color = SpriteColor; NewProxy->SetDrawCall_RenderThread(DrawCall); return NewProxy; }
void UPaperSpriteComponent::SendRenderDynamicData_Concurrent() { if (SceneProxy != nullptr) { FSpriteDrawCallRecord DrawCall; DrawCall.BuildFromSprite(SourceSprite); DrawCall.Color = SpriteColor.ToFColor(/*bSRGB=*/ false); const int32 SplitIndex = (SourceSprite != nullptr) ? SourceSprite->AlternateMaterialSplitIndex : INDEX_NONE; ENQUEUE_UNIQUE_RENDER_COMMAND_THREEPARAMETER( FSendPaperSpriteComponentDynamicData, FPaperSpriteSceneProxy*,InSceneProxy,(FPaperSpriteSceneProxy*)SceneProxy, FSpriteDrawCallRecord,InSpriteToSend,DrawCall, int32,InSplitIndex,SplitIndex, { InSceneProxy->SetSprite_RenderThread(InSpriteToSend, InSplitIndex); });
void UPaperFlipbookComponent::SendRenderDynamicData_Concurrent() { if (SceneProxy != nullptr) { UPaperSprite* SpriteToSend = GetSpriteAtCachedIndex(); FSpriteDrawCallRecord DrawCall; DrawCall.BuildFromSprite(SpriteToSend); DrawCall.Color = SpriteColor; ENQUEUE_UNIQUE_RENDER_COMMAND_THREEPARAMETER( FSendPaperRenderComponentDynamicData, FPaperRenderSceneProxy*,InSceneProxy,(FPaperRenderSceneProxy*)SceneProxy, FSpriteDrawCallRecord,InSpriteToSend,DrawCall, UBodySetup*,InBodySetup,CachedBodySetup, { InSceneProxy->SetDrawCall_RenderThread(InSpriteToSend); InSceneProxy->SetBodySetup_RenderThread(InBodySetup); });