// Copyright Epic Games, Inc. All Rights Reserved. #include "LevelEditorInternalTools.h" namespace InternalEditorLevelLibrary { TSharedPtr GetLevelViewport(const FName& ViewportConfigKey) { FLevelEditorModule& LevelEditorModule = FModuleManager::GetModuleChecked("LevelEditor"); TSharedPtr LevelEditor = LevelEditorModule.GetFirstLevelEditor(); if (LevelEditor.IsValid()) { if (ViewportConfigKey != NAME_None) { for (TSharedPtr LevelViewport : LevelEditor->GetViewports()) { if (LevelViewport.IsValid() && LevelViewport->GetConfigKey() == ViewportConfigKey) { return LevelViewport; } } } TSharedPtr ActiveLevelViewport = LevelEditor->GetActiveViewportInterface(); return ActiveLevelViewport; } return nullptr; } TSharedPtr GetActiveLevelViewport() { return GetLevelViewport(NAME_None); } bool IsEditingLevelInstanceCurrentLevel(UWorld* InWorld) { if (InWorld) { if (ULevelInstanceSubsystem* LevelInstanceSubsystem = InWorld->GetSubsystem()) { if (ILevelInstanceInterface* LevelInstance = LevelInstanceSubsystem->GetEditingLevelInstance()) { return LevelInstanceSubsystem->GetLevelInstanceLevel(LevelInstance) == InWorld->GetCurrentLevel(); } } } return false; } AActor* GetEditingLevelInstance(UWorld* InWorld) { ULevelInstanceSubsystem* LevelInstanceSubsystem = InWorld ? InWorld->GetSubsystem() : nullptr; return LevelInstanceSubsystem ? Cast(LevelInstanceSubsystem->GetEditingLevelInstance()) : nullptr; } bool IsActorEditorContextVisible(UWorld* InWorld) { return InWorld && (InWorld->GetCurrentLevel()->OwningWorld->GetLevels().Num() > 1 && (!InWorld->IsPartitionedWorld() || GetEditingLevelInstance(InWorld) != nullptr)); } }