53 lines
1.5 KiB
C++
53 lines
1.5 KiB
C++
|
// 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<ULyraExperienceManager>();
|
||
|
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<ULyraExperienceManager>();
|
||
|
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
|