You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
TTP# 332489 - TOOLS FEATURE: Editor: Allow user to designate which platforms a project is designed for; warn user when deploying to platforms that will result in a bad time There is now a "Target Platforms" tab in the project settings which allows you to choose which platforms your project will target. This information is stored inside the .uproject file. If you try and launch, cook, or package for a project that isn't on the supported list, then you'll see a suppressible warning notifying you that the project may not run as expected. This is also conveyed to you via a warning icon next to platforms which aren't set as a target. Additionally the target platform icons are shown in the tooltip on the "Open Project" dialog, as well as in the tab area of the level editor. ReviewedBy Thomas.Sarkanen, Max.Preussner [CL 2088161 by Jamie Dale in Main branch]
285 lines
9.6 KiB
C++
285 lines
9.6 KiB
C++
// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved.
|
|
|
|
/*=============================================================================
|
|
ProjectSettingsViewerModule.cpp: Implements the FProjectSettingsViewerModule class.
|
|
=============================================================================*/
|
|
|
|
#include "ProjectSettingsViewerPrivatePCH.h"
|
|
#include "Engine/Console.h"
|
|
#include "ProjectTargetPlatformEditor.h"
|
|
|
|
#define LOCTEXT_NAMESPACE "FProjectSettingsViewerModule"
|
|
|
|
static const FName ProjectSettingsTabName("ProjectSettings");
|
|
|
|
|
|
/**
|
|
* Implements the ProjectSettingsViewer module.
|
|
*/
|
|
class FProjectSettingsViewerModule
|
|
: public IModuleInterface
|
|
, public ISettingsViewer
|
|
{
|
|
public:
|
|
|
|
// Begin ISettingsViewer interface
|
|
|
|
virtual void ShowSettings( const FName& CategoryName, const FName& SectionName ) OVERRIDE
|
|
{
|
|
FGlobalTabmanager::Get()->InvokeTab(ProjectSettingsTabName);
|
|
ISettingsEditorModelPtr SettingsEditorModel = SettingsEditorModelPtr.Pin();
|
|
|
|
if (SettingsEditorModel.IsValid())
|
|
{
|
|
ISettingsCategoryPtr Category = SettingsEditorModel->GetSettingsContainer()->GetCategory(CategoryName);
|
|
|
|
if (Category.IsValid())
|
|
{
|
|
SettingsEditorModel->SelectSection(Category->GetSection(SectionName));
|
|
}
|
|
}
|
|
}
|
|
|
|
// End ISettingsViewer interface
|
|
|
|
public:
|
|
|
|
// Begin IModuleInterface interface
|
|
|
|
virtual void StartupModule( ) OVERRIDE
|
|
{
|
|
ISettingsModule* SettingsModule = ISettingsModule::Get();
|
|
|
|
if (SettingsModule != nullptr)
|
|
{
|
|
RegisterEngineSettings(*SettingsModule);
|
|
RegisterGameSettings(*SettingsModule);
|
|
|
|
SettingsModule->RegisterViewer("Project", *this);
|
|
}
|
|
|
|
FGlobalTabmanager::Get()->RegisterNomadTabSpawner(ProjectSettingsTabName, FOnSpawnTab::CreateRaw(this, &FProjectSettingsViewerModule::HandleSpawnSettingsTab))
|
|
.SetDisplayName(LOCTEXT("ProjectSettingsTabTitle", "Project Settings"))
|
|
.SetMenuType(ETabSpawnerMenuType::Hide);
|
|
}
|
|
|
|
virtual void ShutdownModule( ) OVERRIDE
|
|
{
|
|
FGlobalTabmanager::Get()->UnregisterNomadTabSpawner(ProjectSettingsTabName);
|
|
UnregisterSettings();
|
|
}
|
|
|
|
virtual bool SupportsDynamicReloading( ) OVERRIDE
|
|
{
|
|
return true;
|
|
}
|
|
|
|
// End IModuleInterface interface
|
|
|
|
protected:
|
|
|
|
/**
|
|
* Registers Engine settings.
|
|
*/
|
|
void RegisterEngineSettings( ISettingsModule& SettingsModule )
|
|
{
|
|
// startup settings
|
|
SettingsModule.RegisterSettings("Project", "Engine", "General",
|
|
LOCTEXT("GeneralEngineSettingsName", "General Settings"),
|
|
LOCTEXT("ProjectGeneralSettingsDescription", "General options and defaults for the game engine."),
|
|
GetMutableDefault<UEngine>()
|
|
);
|
|
|
|
// Audio settings
|
|
SettingsModule.RegisterSettings("Project", "Engine", "Audio",
|
|
LOCTEXT("EngineAudioSettingsName", "Audio"),
|
|
LOCTEXT("ProjectAudioSettingsDescription", "Audio settings."),
|
|
GetMutableDefault<UAudioSettings>()
|
|
);
|
|
|
|
// packaging settings
|
|
SettingsModule.RegisterSettings("Project", "Engine", "Collision",
|
|
LOCTEXT("ProjectCollisionSettingsName", "Collision"),
|
|
LOCTEXT("ProjectCollisionSettingsDescription", "Set up and modify collision settings."),
|
|
GetMutableDefault<UCollisionProfile>()
|
|
);
|
|
|
|
// game console settings
|
|
SettingsModule.RegisterSettings("Project", "Engine", "Console",
|
|
LOCTEXT("ProjectConsoleSettingsName", "Console"),
|
|
LOCTEXT("ProjectConsoleSettingsDescription", "Configure the in-game input console."),
|
|
GetMutableDefault<UConsole>()
|
|
);
|
|
|
|
// Input settings
|
|
SettingsModule.RegisterSettings("Project", "Engine", "Input",
|
|
LOCTEXT("EngineInputSettingsName", "Input"),
|
|
LOCTEXT("ProjectInputSettingsDescription", "Input settings, including default input action and axis bindings."),
|
|
GetMutableDefault<UInputSettings>()
|
|
);
|
|
|
|
// navigation system
|
|
SettingsModule.RegisterSettings("Project", "Engine", "NavigationSystem",
|
|
LOCTEXT("NavigationSystemSettingsName", "Navigation System"),
|
|
LOCTEXT("NavigationSystemSettingsDescription", "Settings for the navigation system."),
|
|
GetMutableDefault<UNavigationSystem>()
|
|
);
|
|
|
|
// navigation mesh
|
|
SettingsModule.RegisterSettings("Project", "Engine", "NavigationMesh",
|
|
LOCTEXT("NavigationMeshSettingsName", "Navigation Mesh"),
|
|
LOCTEXT("NavigationMeshSettingsDescription", "Settings for the navigation mesh."),
|
|
GetMutableDefault<ARecastNavMesh>()
|
|
);
|
|
/*
|
|
// network settings
|
|
SettingsModule.RegisterSettings("Project", "Engine", "NetworkManager",
|
|
LOCTEXT("GameNetworkManagerSettingsName", "Network Manager"),
|
|
LOCTEXT("GameNetworkManagerSettingsDescription", "Game Network Manager settings."),
|
|
GetMutableDefault<UGameNetworkManagerSettings>()
|
|
);*/
|
|
|
|
// Physics settings
|
|
SettingsModule.RegisterSettings("Project", "Engine", "Physics",
|
|
LOCTEXT("EnginePhysicsSettingsName", "Physics"),
|
|
LOCTEXT("ProjectPhysicsSettingsDescription", "Default physics settings."),
|
|
GetMutableDefault<UPhysicsSettings>()
|
|
);
|
|
|
|
// Rendering settings
|
|
SettingsModule.RegisterSettings("Project", "Engine", "Rendering",
|
|
LOCTEXT("EngineRenderingSettingsName", "Rendering"),
|
|
LOCTEXT("ProjectRenderingSettingsDescription", "Rendering settings."),
|
|
GetMutableDefault<URendererSettings>()
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Registers Game settings.
|
|
*/
|
|
void RegisterGameSettings( ISettingsModule& SettingsModule )
|
|
{
|
|
// general project settings
|
|
SettingsModule.RegisterSettings("Project", "Game", "General",
|
|
LOCTEXT("GeneralGameSettingsName", "Description"),
|
|
LOCTEXT("GeneralGameSettingsDescription", "Descriptions and other information about your game."),
|
|
GetMutableDefault<UGeneralProjectSettings>()
|
|
);
|
|
|
|
// map related settings
|
|
SettingsModule.RegisterSettings("Project", "Game", "Maps",
|
|
LOCTEXT("GameMapsSettingsName", "Maps & Modes"),
|
|
LOCTEXT("GameMapsSettingsDescription", "Default maps, game modes and other map related settings."),
|
|
GetMutableDefault<UGameMapsSettings>()
|
|
);
|
|
|
|
// packaging settings
|
|
SettingsModule.RegisterSettings("Project", "Game", "Packaging",
|
|
LOCTEXT("ProjectPackagingSettingsName", "Packaging"),
|
|
LOCTEXT("ProjectPackagingSettingsDescription", "Fine tune how your project is packaged for release."),
|
|
GetMutableDefault<UProjectPackagingSettings>()
|
|
);
|
|
|
|
// platforms settings
|
|
TWeakPtr<SWidget> ProjectTargetPlatformEditorPanel = FModuleManager::LoadModuleChecked<IProjectTargetPlatformEditorModule>("ProjectTargetPlatformEditor").CreateProjectTargetPlatformEditorPanel();
|
|
SettingsModule.RegisterSettings("Project", "Game", "TargetPlatforms",
|
|
LOCTEXT("ProjectTargetPlatformsSettingsName", "Target Platforms"),
|
|
LOCTEXT("ProjectTargetPlatformsSettingsDescription", "Specify which platforms your project is targeting."),
|
|
ProjectTargetPlatformEditorPanel.Pin().ToSharedRef()
|
|
);
|
|
|
|
// movie settings
|
|
SettingsModule.RegisterSettings("Project", "Game", "Movies",
|
|
LOCTEXT("MovieSettingsName", "Movies"),
|
|
LOCTEXT("MovieSettingsDescription", "Movie player settings"),
|
|
GetMutableDefault<UMoviePlayerSettings>()
|
|
);
|
|
/*
|
|
// game session
|
|
SettingsModule.RegisterSettings("Project", "Game", "GameSession",
|
|
LOCTEXT("GameSessionettingsName", "Game Session"),
|
|
LOCTEXT("GameSessionSettingsDescription", "Game Session settings."),
|
|
GetMutableDefault<UGameSessionSettings>()
|
|
);
|
|
|
|
// head-up display
|
|
SettingsModule.RegisterSettings("Project", "Game", "HUD",
|
|
LOCTEXT("HudSettingsName", "HUD"),
|
|
LOCTEXT("HudSettingsDescription", "Head-up display (HUD) settings."),
|
|
GetMutableDefault<UHudSettings>()
|
|
);*/
|
|
}
|
|
|
|
/**
|
|
* Unregisters all settings.
|
|
*/
|
|
void UnregisterSettings( )
|
|
{
|
|
ISettingsModule* SettingsModule = ISettingsModule::Get();
|
|
|
|
if (SettingsModule != nullptr)
|
|
{
|
|
SettingsModule->UnregisterViewer("Project");
|
|
|
|
// engine settings
|
|
SettingsModule->UnregisterSettings("Project", "Engine", "General");
|
|
SettingsModule->UnregisterSettings("Project", "Engine", "NavigationSystem");
|
|
SettingsModule->UnregisterSettings("Project", "Engine", "NavigationMesh");
|
|
SettingsModule->UnregisterSettings("Project", "Engine", "Input");
|
|
SettingsModule->UnregisterSettings("Project", "Game", "Collision");
|
|
SettingsModule->UnregisterSettings("Project", "Engine", "Physics");
|
|
SettingsModule->UnregisterSettings("Project", "Engine", "Rendering");
|
|
// SettingsModule->UnregisterSettings("Project", "Engine", "NetworkManager");
|
|
|
|
// game settings
|
|
SettingsModule->UnregisterSettings("Project", "Game", "General");
|
|
SettingsModule->UnregisterSettings("Project", "Game", "Maps");
|
|
SettingsModule->UnregisterSettings("Project", "Game", "Packaging");
|
|
SettingsModule->UnregisterSettings("Project", "Game", "TargetPlatforms");
|
|
SettingsModule->UnregisterSettings("Project", "Game", "Movies");
|
|
// SettingsModule->UnregisterSettings("Project", "Game", "GameSession");
|
|
// SettingsModule->UnregisterSettings("Project", "Game", "HUD");
|
|
}
|
|
}
|
|
|
|
private:
|
|
|
|
// Handles creating the project settings tab.
|
|
TSharedRef<SDockTab> HandleSpawnSettingsTab( const FSpawnTabArgs& SpawnTabArgs )
|
|
{
|
|
ISettingsModule* SettingsModule = ISettingsModule::Get();
|
|
TSharedRef<SWidget> SettingsEditor = SNullWidget::NullWidget;
|
|
|
|
if (SettingsModule != nullptr)
|
|
{
|
|
ISettingsContainerPtr SettingsContainer = SettingsModule->GetContainer("Project");
|
|
|
|
if (SettingsContainer.IsValid())
|
|
{
|
|
ISettingsEditorModule& SettingsEditorModule = ISettingsEditorModule::GetRef();
|
|
ISettingsEditorModelRef SettingsEditorModel = SettingsEditorModule.CreateModel(SettingsContainer.ToSharedRef());
|
|
|
|
SettingsEditor = SettingsEditorModule.CreateEditor(SettingsEditorModel);
|
|
SettingsEditorModelPtr = SettingsEditorModel;
|
|
}
|
|
}
|
|
|
|
return SNew(SDockTab)
|
|
.TabRole(ETabRole::NomadTab)
|
|
[
|
|
SettingsEditor
|
|
];
|
|
}
|
|
|
|
private:
|
|
|
|
// Holds a pointer to the settings editor's view model.
|
|
TWeakPtr<ISettingsEditorModel> SettingsEditorModelPtr;
|
|
};
|
|
|
|
|
|
IMPLEMENT_MODULE(FProjectSettingsViewerModule, ProjectSettingsViewer);
|
|
|
|
|
|
#undef LOCTEXT_NAMESPACE
|