// Copyright Epic Games, Inc. All Rights Reserved. #include "LyraExperienceManager.h" #include "Engine/AssetManager.h" #include "LyraExperienceDefinition.h" #include "GameModes/LyraExperienceManager.h" #include "Engine/Engine.h" #if WITH_EDITOR void ULyraExperienceManager::OnPlayInEditorBegun() { ensure(GameFeaturePluginRequestCountMap.IsEmpty()); GameFeaturePluginRequestCountMap.Empty(); } void ULyraExperienceManager::NotifyOfPluginActivation(const FString PluginURL) { if (GIsEditor) { ULyraExperienceManager* ExperienceManagerSubsystem = GEngine->GetEngineSubsystem(); check(ExperienceManagerSubsystem); // Track the number of requesters who activate this plugin. Multiple load/activation requests are always allowed because concurrent requests are handled. int32& Count = ExperienceManagerSubsystem->GameFeaturePluginRequestCountMap.FindOrAdd(PluginURL); ++Count; } } bool ULyraExperienceManager::RequestToDeactivatePlugin(const FString PluginURL) { if (GIsEditor) { ULyraExperienceManager* ExperienceManagerSubsystem = GEngine->GetEngineSubsystem(); check(ExperienceManagerSubsystem); // Only let the last requester to get this far deactivate the plugin int32& Count = ExperienceManagerSubsystem->GameFeaturePluginRequestCountMap.FindChecked(PluginURL); --Count; if (Count == 0) { ExperienceManagerSubsystem->GameFeaturePluginRequestCountMap.Remove(PluginURL); return true; } return false; } return true; } #endif