// Copyright Epic Games, Inc. All Rights Reserved. #include "LyraGameInstance.h" #include "CommonSessionSubsystem.h" #include "Components/GameFrameworkComponentManager.h" #include "Engine/LocalPlayer.h" #include "GameplayTagContainer.h" #include "LyraGameplayTags.h" #include "Misc/AssertionMacros.h" #include "Player/LyraPlayerController.h" #include "Templates/Casts.h" #include "Engine/LocalPlayer.h" ULyraGameInstance::ULyraGameInstance(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) { } void ULyraGameInstance::Init() { Super::Init(); // Register our custom init states UGameFrameworkComponentManager* ComponentManager = GetSubsystem(this); if (ensure(ComponentManager)) { const FLyraGameplayTags& GameplayTags = FLyraGameplayTags::Get(); ComponentManager->RegisterInitState(GameplayTags.InitState_Spawned, false, FGameplayTag()); ComponentManager->RegisterInitState(GameplayTags.InitState_DataAvailable, false, GameplayTags.InitState_Spawned); ComponentManager->RegisterInitState(GameplayTags.InitState_DataInitialized, false, GameplayTags.InitState_DataAvailable); ComponentManager->RegisterInitState(GameplayTags.InitState_GameplayReady, false, GameplayTags.InitState_DataInitialized); } } void ULyraGameInstance::Shutdown() { Super::Shutdown(); } ALyraPlayerController* ULyraGameInstance::GetPrimaryPlayerController() const { return Cast(Super::GetPrimaryPlayerController(false)); } bool ULyraGameInstance::CanJoinRequestedSession() const { // Temporary first pass: Always return true // This will be fleshed out to check the player's state if (!Super::CanJoinRequestedSession()) { return false; } return true; }