// Copyright Epic Games, Inc. All Rights Reserved. #include "IndicatorLayer.h" #include "Widgets/DeclarativeSyntaxSupport.h" #include "Widgets/Layout/SBox.h" #include "Engine/LocalPlayer.h" #include "SActorCanvas.h" ///////////////////////////////////////////////////// // UIndicatorLayer UIndicatorLayer::UIndicatorLayer(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) { bIsVariable = true; SetVisibility(ESlateVisibility::HitTestInvisible); } void UIndicatorLayer::ReleaseSlateResources(bool bReleaseChildren) { Super::ReleaseSlateResources(bReleaseChildren); MyActorCanvas.Reset(); } TSharedRef UIndicatorLayer::RebuildWidget() { if (!IsDesignTime()) { ULocalPlayer* LocalPlayer = GetOwningLocalPlayer(); if (ensureMsgf(LocalPlayer, TEXT("Attempting to rebuild a UActorCanvas without a valid LocalPlayer!"))) { MyActorCanvas = SNew(SActorCanvas, FLocalPlayerContext(LocalPlayer), &ArrowBrush); return MyActorCanvas.ToSharedRef(); } } // Give it a trivial box, NullWidget isn't safe to use from a UWidget return SNew(SBox); }