Files
UnrealEngineUWP/Engine/Source/Programs/UnrealMultiUserSlateServer/Private/UnrealMultiUserSlateServerRun.cpp
jason walter ed799330a4 Create separate program UnrealMultiUserSlateServer
Main implementation by Dominik with build and switchboard support added by me.

#jira UE-147235
#rb Dominik.Peacock
#preflight 6284fa081f474f0660ecb74e

[CL 20264867 by jason walter in ue5-main branch]
2022-05-18 14:02:54 -04:00

54 lines
1.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "UnrealMultiUserSlateServerRun.h"
#include "ConcertSettings.h"
#include "ConcertSyncServerLoop.h"
#include "IMultiUserServerModule.h"
namespace UE::UnrealMultiUserServer
{
static void SetupSlate(FConcertSyncServerLoopInitArgs& ServerLoopInitArgs)
{
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 'MultiUserServer' plugin is disabled."));
}
else
{
IMultiUserServerModule::Get().InitSlateForServer(ServerLoopInitArgs);
}
});
}
}
int32 RunUnrealMultiUserServer(const TCHAR* CommandLine)
{
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::SetupSlate(ServerLoopInitArgs);
return ConcertSyncServerLoop(CommandLine, ServerLoopInitArgs);
}