lyra_game_ue/Source/LyraGame/GameModes/LyraUserFacingExperienceDefinition.cpp
Goran Lazarevski 3bcab085f8 Initial commit
2025-03-20 11:06:26 +01:00

54 lines
2.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "LyraUserFacingExperienceDefinition.h"
#include "CommonSessionSubsystem.h"
#include "Containers/UnrealString.h"
#include "UObject/NameTypes.h"
#include "Engine/GameInstance.h"
#include "Engine/Engine.h"
#include "Replays/LyraReplaySubsystem.h"
#include UE_INLINE_GENERATED_CPP_BY_NAME(LyraUserFacingExperienceDefinition)
UCommonSession_HostSessionRequest* ULyraUserFacingExperienceDefinition::CreateHostingRequest(const UObject* WorldContextObject) const
{
const FString ExperienceName = ExperienceID.PrimaryAssetName.ToString();
const FString UserFacingExperienceName = GetPrimaryAssetId().PrimaryAssetName.ToString();
UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::ReturnNull);
UGameInstance* GameInstance = World ? World->GetGameInstance() : nullptr;
UCommonSession_HostSessionRequest* Result = nullptr;
if (UCommonSessionSubsystem* Subsystem = GameInstance ? GameInstance->GetSubsystem<UCommonSessionSubsystem>() : nullptr)
{
Result = Subsystem->CreateOnlineHostSessionRequest();
}
if (!Result)
{
// Couldn't use the subsystem so create one
Result = NewObject<UCommonSession_HostSessionRequest>();
Result->OnlineMode = ECommonSessionOnlineMode::Online;
Result->bUseLobbies = true;
Result->bUseLobbiesVoiceChat = false;
// We always enable presence on this session because it is the primary session used for matchmaking. For online systems that care about presence, only the primary session should have presence enabled
Result->bUsePresence = !IsRunningDedicatedServer();
}
Result->MapID = MapID;
Result->ModeNameForAdvertisement = UserFacingExperienceName;
Result->ExtraArgs = ExtraArgs;
Result->ExtraArgs.Add(TEXT("Experience"), ExperienceName);
Result->MaxPlayerCount = MaxPlayerCount;
if (ULyraReplaySubsystem::DoesPlatformSupportReplays())
{
if (bRecordReplay)
{
Result->ExtraArgs.Add(TEXT("DemoRec"), FString());
}
}
return Result;
}