Skip to content

Instantly share code, notes, and snippets.

@b-adkins
Forked from dunenkoff/UMGExtensionLibrary.cpp
Created October 31, 2016 23:16
Show Gist options
  • Save b-adkins/ce3d9f143ac052cc22481860a8cd6c32 to your computer and use it in GitHub Desktop.
Save b-adkins/ce3d9f143ac052cc22481860a8cd6c32 to your computer and use it in GitHub Desktop.
// Copyright 2016 People Gotta Play. All rights reserved.
#include "ProjectMK.h"
#include "UMGExtensionLibrary.h"
UTextureRenderTarget2D * UUMGExtensionLibrary::RenderWidgetToTexture(bool UseGamma, TextureFilter Filter, UUserWidget * WidgetToRender, FVector2D DrawSize, float DeltaTime)
{
if (!WidgetToRender) return nullptr;
if (DrawSize == FVector2D(0, 0)) return nullptr;
FWidgetRenderer *r = new FWidgetRenderer(UseGamma);
UTextureRenderTarget2D *rt = r->CreateTargetFor(DrawSize, Filter, UseGamma);
TSharedRef<SWidget> ref = WidgetToRender->TakeWidget();
r->DrawWidget(rt, ref, DrawSize, DeltaTime);
delete r;
return rt;
}
UTextureRenderTarget2D * UUMGExtensionLibrary::CreateRenderTarget(bool UseGamma, TextureFilter Filter, FVector2D DrawSize)
{
return FWidgetRenderer::CreateTargetFor(DrawSize, Filter, UseGamma);
}
void UUMGExtensionLibrary::RenderWidgetToTarget(bool UseGamma, TextureFilter Filter, UUserWidget * WidgetToRender, FVector2D DrawSize, float DeltaTime, UPARAM(ref) UTextureRenderTarget2D * Target)
{
if (!WidgetToRender) return;
if (DrawSize == FVector2D(0, 0)) return;
if (!Target) return;
FWidgetRenderer * r = new FWidgetRenderer(UseGamma);
TSharedRef<SWidget> ref = WidgetToRender->TakeWidget();
r->DrawWidget(Target, ref, DrawSize, DeltaTime);
delete r;
}
// Copyright 2016 People Gotta Play. All rights reserved.
#pragma once
#include "Kismet/BlueprintFunctionLibrary.h"
#include "UMG.h"
#include "SlateBasics.h"
#include "SlateCore.h"
#include "SWidget.h"
#include "WidgetRenderer.h"
#include "UMGExtensionLibrary.generated.h"
/**
* Don't forget to include UMG, Slate and SlateCore modules in Build.cs
*/
UCLASS()
class PROJECTMK_API UUMGExtensionLibrary : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
//~~~ Widget Renderer ~~~
UFUNCTION(Category = "UMG", BlueprintCallable, Meta = (DeterminesOutputType = "UTextureRenderTarget2D"))
static UTextureRenderTarget2D * CreateRenderTarget(bool UseGamma, TextureFilter Filter, FVector2D DrawSize);
UFUNCTION(Category = "UMG", BlueprintCallable)
static void RenderWidgetToTarget(bool UseGamma, TextureFilter Filter, UUserWidget * WidgetToRender, FVector2D DrawSize, float DeltaTime, UPARAM(ref) UTextureRenderTarget2D * Target);
UFUNCTION(Category = "UMG", BlueprintCallable, Meta = (DeterminesOutputType = "UTextureRenderTarget2D"))
static UTextureRenderTarget2D* RenderWidgetToTexture(bool UseGamma, TextureFilter Filter, UUserWidget * WidgetToRender, FVector2D DrawSize, float DeltaTime);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment