第一次提交

This commit is contained in:
不明不惑
2026-03-03 01:23:02 +08:00
commit 3e434877e8
1053 changed files with 102411 additions and 0 deletions

View File

@@ -0,0 +1,195 @@
// Copyright 2025 https://yuewu.dev/en All Rights Reserved.
#pragma once
#include "Animation/AnimNotifies/AnimNotify.h"
#include "Chaos/ChaosEngineInterface.h"
#include "GameplayTagContainer.h"
#include "GES_ContextEffectsStructLibrary.h"
#include "Engine/EngineTypes.h"
#include "GES_AnimNotify_ContextEffects.generated.h"
class UGES_AnimNotify_ContextEffects;
/**
* Base class for customizing spawn behavior of context effects.
* 自定义情景效果生成行为的基类。
*/
UCLASS(Abstract, Blueprintable, EditInlineNew, DefaultToInstanced, CollapseCategories, Const)
class UGES_ContextEffectsSpawnParametersProvider : public UObject
{
GENERATED_BODY()
public:
/**
* Provides spawn parameters for context effects.
* 为情景效果提供生成参数。
* @param InMeshComp The skeletal mesh component. 骨骼网格组件。
* @param InNotifyNotify The context effects notify. 情景效果通知。
* @param InAnimation The animation sequence. 动画序列。
* @param OutSpawnLocation The spawn location (output). 生成位置(输出)。
* @param OutSpawnRotation The spawn rotation (output). 生成旋转(输出)。
* @return True if parameters were provided, false otherwise. 如果提供了参数则返回true否则返回false。
*/
UFUNCTION(BlueprintNativeEvent, Category="GES|AnimNotify")
bool ProvideParameters(USkeletalMeshComponent* InMeshComp, const UGES_AnimNotify_ContextEffects* InNotifyNotify, UAnimSequenceBase* InAnimation,
FVector& OutSpawnLocation, FRotator& OutSpawnRotation) const;
};
/**
* Animation notify for playing context effects.
* 用于播放情景效果的动画通知。
*/
UCLASS(const, hidecategories = Object, CollapseCategories, Config = Game, meta = (DisplayName = "Play Context Effects"))
class GENERICEFFECTSSYSTEM_API UGES_AnimNotify_ContextEffects : public UAnimNotify
{
GENERATED_BODY()
public:
/**
* Constructor for the context effects animation notify.
* 情景效果动画通知构造函数。
*/
UGES_AnimNotify_ContextEffects(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
/**
* Called after the object is loaded.
* 对象加载后调用。
*/
virtual void PostLoad() override;
#if WITH_EDITOR
/**
* Handles property changes in the editor.
* 处理编辑器中的属性更改。
* @param PropertyChangedEvent The property change event. 属性更改事件。
*/
virtual void PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) override;
#endif
/**
* Retrieves the display name for the notify.
* 获取通知的显示名称。
* @return The notify name. 通知名称。
*/
virtual FString GetNotifyName_Implementation() const override;
/**
* Called when the notify is triggered during animation.
* 动画期间通知触发时调用。
* @param MeshComp The skeletal mesh component. 骨骼网格组件。
* @param Animation The animation sequence. 动画序列。
* @param EventReference The animation notify event reference. 动画通知事件引用。
*/
virtual void Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation, const FAnimNotifyEventReference& EventReference) override;
#if WITH_EDITOR
/**
* Validates associated assets in the editor.
* 在编辑器中验证相关资产。
*/
virtual void ValidateAssociatedAssets() override;
#endif
#if WITH_EDITOR
/**
* Sets parameters for the context effects notify in the editor.
* 在编辑器中设置情景效果通知的参数。
* @param EffectIn The effect tag. 效果标签。
* @param LocationOffsetIn The location offset. 位置偏移。
* @param RotationOffsetIn The rotation offset. 旋转偏移。
* @param VFXPropertiesIn The VFX settings. VFX设置。
* @param AudioPropertiesIn The audio settings. 音频设置。
* @param bAttachedIn Whether to attach to mesh. 是否附加到网格。
* @param SocketNameIn The socket name for attachment. 附加的插槽名称。
* @param bPerformTraceIn Whether to perform a trace. 是否执行追踪。
* @param TracePropertiesIn The trace settings. 追踪设置。
*/
UFUNCTION(BlueprintCallable, Category="GES|AnimNotify")
void SetParameters(FGameplayTag EffectIn, FVector LocationOffsetIn, FRotator RotationOffsetIn,
FGES_ContextEffectAnimNotifyVFXSettings VFXPropertiesIn, FGES_ContextEffectAnimNotifyAudioSettings AudioPropertiesIn,
bool bAttachedIn, FName SocketNameIn, bool bPerformTraceIn, FGES_ContextEffectAnimNotifyTraceSettings TracePropertiesIn);
#endif
/**
* The effect to play.
* 要播放的效果。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="AnimNotify", meta = (DisplayName = "Effect", ExposeOnSpawn = true))
FGameplayTag Effect;
/**
* Location offset for effect spawning (socket if attached, mesh if not).
* 效果生成的位置偏移(附加时为插槽,否则为网格)。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="AnimNotify", meta = (ExposeOnSpawn = true))
FVector LocationOffset = FVector::ZeroVector;
/**
* Rotation offset for effect spawning.
* 效果生成的旋转偏移。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="AnimNotify", meta = (ExposeOnSpawn = true))
FRotator RotationOffset = FRotator::ZeroRotator;
/**
* Visual effects settings for the notify.
* 通知的视觉效果设置。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="AnimNotify", meta = (ExposeOnSpawn = true))
FGES_ContextEffectAnimNotifyVFXSettings VFXProperties;
/**
* Audio settings for the notify.
* 通知的音频设置。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="AnimNotify", meta = (ExposeOnSpawn = true))
FGES_ContextEffectAnimNotifyAudioSettings AudioProperties;
/**
* Whether to attach the effect to the mesh component.
* 是否将效果附加到网格组件。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="AttachmentProperties", meta = (DisplayName="Attach To Mesh", ExposeOnSpawn = true))
uint32 bAttached : 1;
/**
* Optional provider for custom spawn location/rotation if not attached.
* 如果未附加,可选的自定义生成位置/旋转提供者。
*/
UPROPERTY(EditAnywhere, BlueprintReadOnly, Instanced, Category="AttachmentProperties", meta=(EditCondition="!bAttached"))
TObjectPtr<UGES_ContextEffectsSpawnParametersProvider> SpawnParametersProvider;
/**
* Socket name to attach the effect to.
* 附加效果的插槽名称。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="AttachmentProperties", meta=(EditCondition="bAttached"))
FName SocketName{NAME_None};
/**
* Whether to perform a trace for surface type conversion.
* 是否执行追踪以进行表面类型转换。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="AnimNotify", meta = (ExposeOnSpawn = true))
uint32 bPerformTrace : 1;
/**
* Trace settings for the notify.
* 通知的追踪设置。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="AnimNotify", meta = (ExposeOnSpawn = true, EditCondition = "bPerformTrace"))
FGES_ContextEffectAnimNotifyTraceSettings TraceProperties;
#if WITH_EDITORONLY_DATA
/**
* Performs a preview of the context effects in the editor.
* 在编辑器中执行情景效果预览。
* @param InOwningActor The owning actor. 拥有演员。
* @param InSourceContext The source context tags. 源情景标签。
* @param InTargetContext The target context tags. 目标情景标签。
* @param InMeshComp The skeletal mesh component. 骨骼网格组件。
*/
void PerformEditorPreview(AActor* InOwningActor, FGameplayTagContainer& InSourceContext, FGameplayTagContainer& InTargetContext, USkeletalMeshComponent* InMeshComp);
#endif
};