RealtimeStyleTransferRuntime/Source/LyraGame/Feedback/ContextEffects/AnimNotify_LyraContextEffec...

171 lines
5.7 KiB
C
Raw Permalink Normal View History

2022-05-23 18:41:30 +00:00
// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Animation/AnimNotifies/AnimNotify.h"
#include "GameplayTagContainer.h"
#include "Engine/EngineTypes.h"
#include "PhysicalMaterials/PhysicalMaterial.h"
#include "AnimNotify_LyraContextEffects.generated.h"
/**
*
*/
USTRUCT(BlueprintType)
struct LYRAGAME_API FLyraContextEffectAnimNotifyVFXSettings
{
GENERATED_BODY()
// Scale to spawn the particle system at
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = FX)
FVector Scale = FVector(1.0f, 1.0f, 1.0f);
};
/**
*
*/
USTRUCT(BlueprintType)
struct LYRAGAME_API FLyraContextEffectAnimNotifyAudioSettings
{
GENERATED_BODY()
// Volume Multiplier
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Sound)
float VolumeMultiplier = 1.0f;
// Pitch Multiplier
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Sound)
float PitchMultiplier = 1.0f;
};
/**
*
*/
USTRUCT(BlueprintType)
struct LYRAGAME_API FLyraContextEffectAnimNotifyTraceSettings
{
GENERATED_BODY()
// Trace Channel
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Trace)
TEnumAsByte<ECollisionChannel> TraceChannel = ECollisionChannel::ECC_Visibility;
// Vector offset from Effect Location
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Trace)
FVector EndTraceLocationOffset = FVector::ZeroVector;
// Ignore this Actor when getting trace result
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Trace)
bool bIgnoreActor = true;
};
/**
*
*/
USTRUCT(BlueprintType)
struct LYRAGAME_API FLyraContextEffectAnimNotifyPreviewSettings
{
GENERATED_BODY()
// If true, will attempt to match selected Surface Type to Context Tag via Project Settings
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Preview)
bool bPreviewPhysicalSurfaceAsContext = true;
// Surface Type
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Preview, meta=(EditCondition="bPreviewPhysicalSurfaceAsContext"))
TEnumAsByte<EPhysicalSurface> PreviewPhysicalSurface = EPhysicalSurface::SurfaceType_Default;
// Preview Library
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Preview, meta = (AllowedClasses = "LyraContextEffectsLibrary"))
FSoftObjectPath PreviewContextEffectsLibrary;
// Preview Context
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Preview)
FGameplayTagContainer PreviewContexts;
};
/**
*
*/
UCLASS(const, hidecategories=Object, CollapseCategories, Config = Game, meta=(DisplayName="Play Context Effects"))
class LYRAGAME_API UAnimNotify_LyraContextEffects : public UAnimNotify
{
GENERATED_BODY()
public:
UAnimNotify_LyraContextEffects();
// Begin UObject interface
virtual void PostLoad() override;
#if WITH_EDITOR
virtual void PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) override;
#endif
// End UObject interface
// Begin UAnimNotify interface
virtual FString GetNotifyName_Implementation() const override;
virtual void Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation, const FAnimNotifyEventReference& EventReference) override;
#if WITH_EDITOR
virtual void ValidateAssociatedAssets() override;
#endif
// End UAnimNotify interface
#if WITH_EDITOR
UFUNCTION(BlueprintCallable)
void SetParameters(FGameplayTag EffectIn, FVector LocationOffsetIn, FRotator RotationOffsetIn,
FLyraContextEffectAnimNotifyVFXSettings VFXPropertiesIn, FLyraContextEffectAnimNotifyAudioSettings AudioPropertiesIn,
bool bAttachedIn, FName SocketNameIn, bool bPerformTraceIn, FLyraContextEffectAnimNotifyTraceSettings TracePropertiesIn);
#endif
// Effect to Play
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AnimNotify", meta = (DisplayName = "Effect", ExposeOnSpawn = true))
FGameplayTag Effect;
// Location offset from the socket
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AnimNotify", meta = (ExposeOnSpawn = true))
FVector LocationOffset = FVector::ZeroVector;
// Rotation offset from socket
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AnimNotify", meta = (ExposeOnSpawn = true))
FRotator RotationOffset = FRotator::ZeroRotator;
// Scale to spawn the particle system at
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AnimNotify", meta = (ExposeOnSpawn = true))
FLyraContextEffectAnimNotifyVFXSettings VFXProperties;
// Scale to spawn the particle system at
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AnimNotify", meta = (ExposeOnSpawn = true))
FLyraContextEffectAnimNotifyAudioSettings AudioProperties;
// Should attach to the bone/socket
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AttachmentProperties", meta = (ExposeOnSpawn = true))
uint32 bAttached : 1; //~ Does not follow coding standard due to redirection from BP
// SocketName to attach to
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AttachmentProperties", meta = (ExposeOnSpawn = true, EditCondition = "bAttached"))
FName SocketName;
// Will perform a trace, required for SurfaceType to Context Conversion
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AnimNotify", meta = (ExposeOnSpawn = true))
uint32 bPerformTrace : 1;
// Scale to spawn the particle system at
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AnimNotify", meta = (ExposeOnSpawn = true, EditCondition = "bPerformTrace"))
FLyraContextEffectAnimNotifyTraceSettings TraceProperties;
#if WITH_EDITORONLY_DATA
UPROPERTY(Config, EditAnywhere, Category = "PreviewProperties")
uint32 bPreviewInEditor : 1;
UPROPERTY(EditAnywhere, Category = "PreviewProperties", meta = (EditCondition = "bPreviewInEditor"))
FLyraContextEffectAnimNotifyPreviewSettings PreviewProperties;
#endif
};