RealtimeStyleTransferRuntime/Source/LyraGame/Feedback/ContextEffects/LyraContextEffectsLibrary.h

99 lines
2.2 KiB
C
Raw Normal View History

2022-05-23 18:41:30 +00:00
// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "UObject/SoftObjectPath.h"
#include "GameplayTagContainer.h"
#include "LyraContextEffectsLibrary.generated.h"
class USoundBase;
class UNiagaraSystem;
/**
*
*/
UENUM()
enum class EContextEffectsLibraryLoadState : uint8 {
Unloaded = 0,
Loading = 1,
Loaded = 2
};
/**
*
*/
USTRUCT(BlueprintType)
struct LYRAGAME_API FLyraContextEffects
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadOnly)
FGameplayTag EffectTag;
UPROPERTY(EditAnywhere, BlueprintReadOnly)
FGameplayTagContainer Context;
UPROPERTY(EditAnywhere, BlueprintReadOnly, meta = (AllowedClasses = "SoundBase, NiagaraSystem"))
TArray<FSoftObjectPath> Effects;
};
/**
*
*/
UCLASS()
class LYRAGAME_API ULyraActiveContextEffects : public UObject
{
GENERATED_BODY()
public:
UPROPERTY(VisibleAnywhere)
FGameplayTag EffectTag;
UPROPERTY(VisibleAnywhere)
FGameplayTagContainer Context;
UPROPERTY(VisibleAnywhere)
TArray<USoundBase*> Sounds;
UPROPERTY(VisibleAnywhere)
TArray<UNiagaraSystem*> NiagaraSystems;
};
DECLARE_DYNAMIC_DELEGATE_OneParam(FLyraContextEffectLibraryLoadingComplete, TArray<ULyraActiveContextEffects*>, LyraActiveContextEffects);
/**
*
*/
UCLASS(BlueprintType)
class LYRAGAME_API ULyraContextEffectsLibrary : public UObject
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadOnly)
TArray<FLyraContextEffects> ContextEffects;
UFUNCTION(BlueprintCallable)
void GetEffects(const FGameplayTag Effect, const FGameplayTagContainer Context, TArray<USoundBase*>& Sounds, TArray<UNiagaraSystem*>& NiagaraSystems);
UFUNCTION(BlueprintCallable)
void LoadEffects();
EContextEffectsLibraryLoadState GetContextEffectsLibraryLoadState();
private:
void LoadEffectsInternal();
void LyraContextEffectLibraryLoadingComplete(TArray<ULyraActiveContextEffects*> LyraActiveContextEffects);
UPROPERTY(Transient)
TArray< ULyraActiveContextEffects*> ActiveContextEffects;
UPROPERTY(Transient)
EContextEffectsLibraryLoadState EffectsLoadState = EContextEffectsLibraryLoadState::Unloaded;
};