65 lines
2.1 KiB
C
65 lines
2.1 KiB
C
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include "CoreMinimal.h"
|
||
|
#include "Delegates/Delegate.h"
|
||
|
#include "UObject/ObjectMacros.h"
|
||
|
#include "UObject/Object.h"
|
||
|
#include "GameFeaturesSubsystem.h"
|
||
|
#include "GameFeaturesProjectPolicies.h"
|
||
|
#include "GameFeatureStateChangeObserver.h"
|
||
|
|
||
|
#include "LyraGameFeaturePolicy.generated.h"
|
||
|
|
||
|
class UGameFeatureData;
|
||
|
|
||
|
/**
|
||
|
* Manager to keep track of the state machines that bring a game feature plugin into memory and active
|
||
|
* This class discovers plugins either that are built-in and distributed with the game or are reported externally (i.e. by a web service or other endpoint)
|
||
|
*/
|
||
|
UCLASS(MinimalAPI, Config = Game)
|
||
|
class ULyraGameFeaturePolicy : public UDefaultGameFeaturesProjectPolicies
|
||
|
{
|
||
|
GENERATED_BODY()
|
||
|
|
||
|
public:
|
||
|
LYRAGAME_API static ULyraGameFeaturePolicy& Get();
|
||
|
|
||
|
ULyraGameFeaturePolicy(const FObjectInitializer& ObjectInitializer);
|
||
|
|
||
|
//~UGameFeaturesProjectPolicies interface
|
||
|
virtual void InitGameFeatureManager() override;
|
||
|
virtual void ShutdownGameFeatureManager() override;
|
||
|
virtual bool IsPluginAllowed(const FString& PluginURL) const override;
|
||
|
virtual const TArray<FName> GetPreloadBundleStateForGameFeature() const override;
|
||
|
virtual void GetGameFeatureLoadingMode(bool& bLoadClientData, bool& bLoadServerData) const override;
|
||
|
//~End of UGameFeaturesProjectPolicies interface
|
||
|
|
||
|
private:
|
||
|
UPROPERTY(Transient)
|
||
|
TArray<TObjectPtr<UObject>> Observers;
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
// checked
|
||
|
UCLASS()
|
||
|
class ULyraGameFeature_HotfixManager : public UObject, public IGameFeatureStateChangeObserver
|
||
|
{
|
||
|
GENERATED_BODY()
|
||
|
|
||
|
public:
|
||
|
virtual void OnGameFeatureLoading(const UGameFeatureData* GameFeatureData, const FString& PluginURL) override;
|
||
|
};
|
||
|
|
||
|
// checked
|
||
|
UCLASS()
|
||
|
class ULyraGameFeature_AddGameplayCuePaths : public UObject, public IGameFeatureStateChangeObserver
|
||
|
{
|
||
|
GENERATED_BODY()
|
||
|
|
||
|
public:
|
||
|
virtual void OnGameFeatureRegistering(const UGameFeatureData* GameFeatureData, const FString& PluginName, const FString& PluginURL) override;
|
||
|
virtual void OnGameFeatureUnregistering(const UGameFeatureData* GameFeatureData, const FString& PluginName, const FString& PluginURL) override;
|
||
|
};
|