Files
UnrealEngineUWP/Engine/Source/Editor/UnrealEd/Private/TextureStreamingNotification.cpp
Matthew Griffin bb70b349ce Merging CL 2804086 from //UE4/Release-4.11 to Dev-Main (//UE4/Dev-Main) to isolate copyright update
#lockdown Nick.Penwarden

[CL 2819020 by Matthew Griffin in Main branch]
2016-01-07 08:17:16 -05:00

58 lines
2.2 KiB
C++

// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.
#include "UnrealEd.h"
#include "GlobalEditorNotification.h"
#include "ContentStreaming.h"
#include "SNotificationList.h"
/** Notification class for texture streaming. */
class FTextureStreamingNotificationImpl : public FGlobalEditorNotification
{
protected:
/** FGlobalEditorNotification interface */
virtual bool ShouldShowNotification(const bool bIsNotificationAlreadyActive) const override;
virtual void SetNotificationText(const TSharedPtr<SNotificationItem>& InNotificationItem) const override;
private:
static int32 GetNumStreamingTextures();
};
/** Global notification object. */
FTextureStreamingNotificationImpl GTextureStreamingNotification;
bool FTextureStreamingNotificationImpl::ShouldShowNotification(const bool bIsNotificationAlreadyActive) const
{
// We only want to show the notification initially if there's still enough work left to do to warrant it
// However, if we're already showing the notification, we should continue to do so until all the streaming has finished
// Never show these notifications during PIE
const int32 NumStreamingTextures = GetNumStreamingTextures();
return !GEditor->PlayWorld && ((NumStreamingTextures > 300) || (bIsNotificationAlreadyActive && NumStreamingTextures > 0));
}
void FTextureStreamingNotificationImpl::SetNotificationText(const TSharedPtr<SNotificationItem>& InNotificationItem) const
{
const int32 NumStreamingTextures = GetNumStreamingTextures();
if (NumStreamingTextures > 0)
{
FFormatNamedArguments Args;
Args.Add(TEXT("NumTextures"), FText::AsNumber(NumStreamingTextures));
const FText ProgressMessage = FText::Format(NSLOCTEXT("StreamingTextures", "StreamingTexturesInProgressFormat", "Streaming Textures ({NumTextures})"), Args);
InNotificationItem->SetText(ProgressMessage);
}
}
int32 FTextureStreamingNotificationImpl::GetNumStreamingTextures()
{
FStreamingManagerCollection& StreamingManagerCollection = IStreamingManager::Get();
if (StreamingManagerCollection.IsTextureStreamingEnabled())
{
ITextureStreamingManager& TextureStreamingManager = StreamingManagerCollection.GetTextureStreamingManager();
return TextureStreamingManager.GetNumWantingResources();
}
return 0;
}