Files
UnrealEngineUWP/Engine/Source/Editor/PhAT/Private/SPhATPreviewViewport.cpp
Ori Cohen 803b0b1768 Fix phat focus selection not working when moving in the viewport
#UE-16870

[CL 2583539 by Ori Cohen in Main branch]
2015-06-10 18:38:35 -04:00

88 lines
2.3 KiB
C++

// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
#include "PhATModule.h"
#include "PhAT.h"
#include "PreviewScene.h"
#include "Editor/UnrealEd/Public/SViewportToolBar.h"
#include "Runtime/Engine/Public/Slate/SceneViewport.h"
#include "PhATPreviewViewportClient.h"
#include "SPhATPreviewToolbar.h"
#include "SPhATPreviewViewport.h"
#include "SDockTab.h"
SPhATPreviewViewport::~SPhATPreviewViewport()
{
if (EditorViewportClient.IsValid())
{
EditorViewportClient->Viewport->Destroy();
EditorViewportClient->Viewport = NULL;
}
}
void SPhATPreviewViewport::SetViewportType(ELevelViewportType ViewType)
{
EditorViewportClient->SetViewportType(ViewType);
}
void SPhATPreviewViewport::Construct(const FArguments& InArgs)
{
PhATPtr = InArgs._PhAT;
SEditorViewport::Construct(SEditorViewport::FArguments());
ViewportWidget->SetEnabled(FSlateApplication::Get().GetNormalExecutionAttribute());
}
void SPhATPreviewViewport::RefreshViewport()
{
SceneViewport->Invalidate();
SceneViewport->InvalidateDisplay();
}
bool SPhATPreviewViewport::IsVisible() const
{
return ViewportWidget.IsValid() && (!ParentTab.IsValid() || ParentTab.Pin()->IsForeground());
}
TSharedPtr<FSceneViewport> SPhATPreviewViewport::GetViewport() const
{
return SceneViewport;
}
TSharedPtr<FPhATEdPreviewViewportClient> SPhATPreviewViewport::GetViewportClient() const
{
return EditorViewportClient;
}
TSharedPtr<SViewport> SPhATPreviewViewport::GetViewportWidget() const
{
return ViewportWidget;
}
void SPhATPreviewViewport::OnFocusViewportToSelection()
{
if(FPhAT* Phat = PhATPtr.Pin().Get())
{
Phat->OnFocusSelection();
}
}
TSharedRef<FEditorViewportClient> SPhATPreviewViewport::MakeEditorViewportClient()
{
EditorViewportClient = MakeShareable(new FPhATEdPreviewViewportClient(PhATPtr, PhATPtr.Pin()->GetSharedData(), SharedThis(this)));
EditorViewportClient->bSetListenerPosition = false;
EditorViewportClient->SetRealtime(!FPhAT::IsPIERunning());
EditorViewportClient->VisibilityDelegate.BindSP(this, &SPhATPreviewViewport::IsVisible);
return EditorViewportClient.ToSharedRef();
}
TSharedPtr<SWidget> SPhATPreviewViewport::MakeViewportToolbar()
{
return SNew(SPhATPreviewViewportToolBar, SharedThis(this))
.PhATPtr(PhATPtr)
.IsEnabled(FSlateApplication::Get().GetNormalExecutionAttribute());
}