You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#jira none #rb none #preflight 6241802a775402d5ddd26a8a [CL 19525053 by Dominik Peacock in ue5-main branch]
65 lines
2.0 KiB
C++
65 lines
2.0 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "UnrealMultiUserServerRun.h"
|
|
|
|
#include "ConcertSettings.h"
|
|
#include "ConcertSyncServerLoop.h"
|
|
#include "IMultiUserServerModule.h"
|
|
|
|
#include "Misc/Parse.h"
|
|
|
|
namespace UE::UnrealMultiUserServer
|
|
{
|
|
static void OptionallySetupSlate(int ArgC, TCHAR* ArgV[], FConcertSyncServerLoopInitArgs& ServerLoopInitArgs)
|
|
{
|
|
const FString CommandLine = FCommandLine::BuildFromArgV(nullptr, ArgC, ArgV, nullptr);
|
|
|
|
bool bUseSlate = false;
|
|
bUseSlate |= FParse::Bool(*CommandLine, TEXT("-WITHSLATE"), bUseSlate);
|
|
FParse::Bool(*CommandLine, TEXT("-WITHSLATE="), bUseSlate);
|
|
|
|
if (bUseSlate)
|
|
{
|
|
ServerLoopInitArgs.bShowConsole = false;
|
|
ServerLoopInitArgs.PreInitServerLoop.AddLambda([&ServerLoopInitArgs]()
|
|
{
|
|
TSharedPtr<IPlugin> Plugin = IPluginManager::Get().FindPlugin(TEXT("MultiUserServer"));
|
|
if (!Plugin || !Plugin->IsEnabled())
|
|
{
|
|
UE_LOG(LogSyncServer, Error, TEXT("The 'ConcertServerUI' plugin is disabled."));
|
|
}
|
|
else
|
|
{
|
|
IMultiUserServerModule::Get().InitSlateForServer(ServerLoopInitArgs);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
int32 RunUnrealMultiUserServer(int ArgC, TCHAR* ArgV[])
|
|
{
|
|
FString Role(TEXT("MultiUser"));
|
|
FConcertSyncServerLoopInitArgs ServerLoopInitArgs;
|
|
ServerLoopInitArgs.SessionFlags = EConcertSyncSessionFlags::Default_MultiUserSession;
|
|
ServerLoopInitArgs.ServiceRole = Role;
|
|
ServerLoopInitArgs.ServiceFriendlyName = TEXT("Multi-User Editing Server");
|
|
|
|
ServerLoopInitArgs.GetServerConfigFunc = [Role]() -> const UConcertServerConfig*
|
|
{
|
|
UConcertServerConfig* ServerConfig = IConcertSyncServerModule::Get().ParseServerSettings(FCommandLine::Get());
|
|
if (ServerConfig->WorkingDir.IsEmpty())
|
|
{
|
|
ServerConfig->WorkingDir = FPaths::ProjectIntermediateDir() / Role;
|
|
}
|
|
if (ServerConfig->ArchiveDir.IsEmpty())
|
|
{
|
|
ServerConfig->ArchiveDir = FPaths::ProjectSavedDir() / Role;
|
|
}
|
|
return ServerConfig;
|
|
};
|
|
|
|
UE::UnrealMultiUserServer::OptionallySetupSlate(ArgC, ArgV, ServerLoopInitArgs);
|
|
return ConcertSyncServerLoop(ArgC, ArgV, ServerLoopInitArgs);
|
|
}
|