You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
This submission allows the end user to launch onto any platform using a profile created inside of the UFE. Allows for easier scripting for testing and launching your project. To run: UnrealFrontend.exe -Run="LAUNCHPROFILE" -PROFILENAME="THE_NAME_OF_YOUR_CUSTOM_PROFILE" **Changes and Additions** Added LaunchFromProfileCommand.h/.cpp --Checks if '-ProfileName=' is used and is correct. --Loads the LaucherServicesModules and DeviceServicesModules ----Gets the Device Proxy Manager ----Gets the Profile Manager which is needed to find the named profile. --A launcher is created that uses the profile and DeviceProxyManager to read the profile and trigger a build, cook, and launch of it. --Logging from the launch will be shown in the command window. --Keeps running until the launcher broadcasts that it has either completed or has been cancelled. UnrealFrontendMain.cpp Task Related: --Added the launch profile command to the command if/else statement. --Added helpful comments. Improvements and General Fixes: --Added a check to verify that a command is actually given with -Run. Logs a warning if none exist. --Fixed an issue where the -messaging command line check was returning incorrectly. It will now only add '-messaging' if it actually does not exist in the command line already. --Added a command line check where if you run with -run then -log will be appended to the command line if it isn't already. This allows us to receive logging onscreen. #CodeReview: adric.worley, justin.hair, marcus.wassmer, jason.bestimt, bob.ferreira, ben.salem, brad.angelcyk -------- Integrated using branch UE4-Orion-To-UE4 of change#2675868 by Justin.Hair on 2015/09/01 14:50:30. [CL 2680596 by Justin Hair in Main branch]
118 lines
3.1 KiB
C++
118 lines
3.1 KiB
C++
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "UnrealFrontendPrivatePCH.h"
|
|
#include "UnrealFrontendMain.h"
|
|
#include "RequiredProgramMainCPPInclude.h"
|
|
|
|
#include "DeployCommand.h"
|
|
#include "LaunchCommand.h"
|
|
#include "PackageCommand.h"
|
|
#include "StatsConvertCommand.h"
|
|
#include "StatsDumpMemoryCommand.h"
|
|
#include "UserInterfaceCommand.h"
|
|
#include "LaunchFromProfileCommand.h"
|
|
|
|
|
|
IMPLEMENT_APPLICATION(UnrealFrontend, "UnrealFrontend");
|
|
|
|
|
|
/**
|
|
* Platform agnostic implementation of the main entry point.
|
|
*/
|
|
int32 UnrealFrontendMain( const TCHAR* CommandLine )
|
|
{
|
|
FCommandLine::Set(CommandLine);
|
|
|
|
FString Command;
|
|
FString Params;
|
|
FString NewCommandLine = CommandLine;
|
|
|
|
// process command line parameters
|
|
bool bRunCommand = FParse::Value(*NewCommandLine, TEXT("-RUN="), Command);
|
|
|
|
if (Command.IsEmpty())
|
|
{
|
|
GLog->Logf(ELogVerbosity::Warning, TEXT("The command line argument '-RUN=' does not have a command name associated with it."));
|
|
}
|
|
|
|
if (bRunCommand)
|
|
{
|
|
// extract off any '-PARAM=' parameters so that they aren't accidentally parsed by engine init
|
|
FParse::Value(*NewCommandLine, TEXT("-PARAMS="), Params);
|
|
|
|
if (Params.Len() > 0)
|
|
{
|
|
// remove from the command line & trim quotes
|
|
NewCommandLine = NewCommandLine.Replace(*Params, TEXT(""));
|
|
Params = Params.TrimQuotes();
|
|
}
|
|
}
|
|
|
|
// Add -Messaging if it was not given in the command line.
|
|
if (!FParse::Param(*NewCommandLine, TEXT("MESSAGING")))
|
|
{
|
|
NewCommandLine += TEXT(" -Messaging");
|
|
}
|
|
|
|
// Add '-Log' if the Frontend was run with '-RUN=' without '-LOG' so we can read any potential log output.
|
|
if (bRunCommand && !FParse::Param(*NewCommandLine, TEXT("LOG")))
|
|
{
|
|
NewCommandLine += TEXT(" -Log");
|
|
}
|
|
|
|
// initialize core
|
|
GEngineLoop.PreInit(*NewCommandLine);
|
|
FModuleManager::Get().StartProcessingNewlyLoadedObjects();
|
|
|
|
bool Succeeded = true;
|
|
|
|
// Execute desired command
|
|
// To execute, run with '-RUN="COMMAND_NAME_FOUND_BELOW"'.
|
|
// NOTE - Some commands may require extra command line parameters.
|
|
if (bRunCommand)
|
|
{
|
|
if (Command.Equals(TEXT("PACKAGE"), ESearchCase::IgnoreCase))
|
|
{
|
|
FPackageCommand::Run();
|
|
}
|
|
else if (Command.Equals(TEXT("DEPLOY"), ESearchCase::IgnoreCase))
|
|
{
|
|
Succeeded = FDeployCommand::Run();
|
|
}
|
|
else if (Command.Equals(TEXT("LAUNCH"), ESearchCase::IgnoreCase))
|
|
{
|
|
Succeeded = FLaunchCommand::Run(Params);
|
|
}
|
|
else if (Command.Equals(TEXT("CONVERT"), ESearchCase::IgnoreCase))
|
|
{
|
|
FStatsConvertCommand::Run();
|
|
}
|
|
else if( Command.Equals( TEXT("MEMORYDUMP"), ESearchCase::IgnoreCase ) )
|
|
{
|
|
FStatsMemoryDumpCommand::Run();
|
|
}
|
|
// The 'LAUNCHPROFILE' command also needs '-PROFILENAME="MY_PROFILE_NAME"' as a command line parameter.
|
|
else if (Command.Equals(TEXT("LAUNCHPROFILE"), ESearchCase::IgnoreCase))
|
|
{
|
|
FLaunchFromProfileCommand* ProfileLaunch = new FLaunchFromProfileCommand;
|
|
ProfileLaunch->Run(Params);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
FUserInterfaceCommand::Run();
|
|
}
|
|
|
|
// shut down
|
|
FEngineLoop::AppPreExit();
|
|
FModuleManager::Get().UnloadModulesAtShutdown();
|
|
|
|
#if STATS
|
|
FThreadStats::StopThread();
|
|
#endif
|
|
|
|
FTaskGraphInterface::Shutdown();
|
|
|
|
return Succeeded ? 0 : -1;
|
|
}
|