RealtimeStyleTransferRuntime/Source/LyraGame/GameModes/LyraExperienceManager.cpp

53 lines
1.5 KiB
C++
Raw Normal View History

2022-05-23 18:41:30 +00:00
// 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