Files
UnrealEngineUWP/Engine/Plugins/Experimental/GeometryCache/Source/GeometryCacheEd/Private/GeometryCacheThumbnailRenderer.cpp
jonathan bard 77b0d194c2 Added parameter to thumbnail renderers Draw function so that we can instruct them to clear the render target or not. This is for fixing thumbnails that render multiple sub-thumbnails to the same render target.
#rb bob.tellez


#ROBOMERGE-OWNER: jonathan.bard
#ROBOMERGE-AUTHOR: jonathan.bard
#ROBOMERGE-SOURCE: CL 11159778 via CL 11159790
#ROBOMERGE-BOT: (v640-11091645)

[CL 11160913 by jonathan bard in Main branch]
2020-01-29 10:59:27 -05:00

58 lines
1.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "GeometryCacheThumbnailRenderer.h"
#include "Misc/App.h"
#include "ShowFlags.h"
#include "SceneView.h"
#include "GeometryCacheThumbnailScene.h"
#include "GeometryCache.h"
UGeometryCacheThumbnailRenderer::UGeometryCacheThumbnailRenderer(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
ThumbnailScene = nullptr;
}
void UGeometryCacheThumbnailRenderer::Draw(UObject* Object, int32 X, int32 Y, uint32 Width, uint32 Height, FRenderTarget* RenderTarget, FCanvas* Canvas, bool bAdditionalViewFamily)
{
UGeometryCache* GeometryCache = Cast<UGeometryCache>(Object);
if (GeometryCache != nullptr && !GeometryCache->IsPendingKill())
{
if (ThumbnailScene == nullptr)
{
ThumbnailScene = new FGeometryCacheThumbnailScene();
}
ThumbnailScene->SetGeometryCache(GeometryCache);
ThumbnailScene->GetScene()->UpdateSpeedTreeWind(0.0);
FSceneViewFamilyContext ViewFamily(FSceneViewFamily::ConstructionValues(RenderTarget, ThumbnailScene->GetScene(), FEngineShowFlags(ESFIM_Game))
.SetWorldTimes(FApp::GetCurrentTime() - GStartTime, FApp::GetDeltaTime(), FApp::GetCurrentTime() - GStartTime)
.SetAdditionalViewFamily(bAdditionalViewFamily));
ViewFamily.EngineShowFlags.DisableAdvancedFeatures();
ViewFamily.EngineShowFlags.MotionBlur = 0;
ViewFamily.EngineShowFlags.LOD = 0;
ThumbnailScene->GetView(&ViewFamily, X, Y, Width, Height);
RenderViewFamily(Canvas, &ViewFamily);
ThumbnailScene->SetGeometryCache(nullptr);
}
}
void UGeometryCacheThumbnailRenderer::BeginDestroy()
{
if (ThumbnailScene != nullptr)
{
delete ThumbnailScene;
ThumbnailScene = nullptr;
}
Super::BeginDestroy();
}
bool UGeometryCacheThumbnailRenderer::AllowsRealtimeThumbnails(UObject* Object) const
{
return false;
}