第一次提交

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,303 @@
// Copyright 2025 https://yuewu.dev/en All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "GameplayTagContainer.h"
#include "Engine/EngineTypes.h"
#include "Engine/HitResult.h"
#include "GES_ContextEffectsEnumLibrary.h"
#include "UObject/Object.h"
#include "GES_ContextEffectsStructLibrary.generated.h"
class UNiagaraComponent;
class UAudioComponent;
class UAnimSequenceBase;
class UParticleSystemComponent;
/**
* Definition of a context effect.
* 情景效果的定义。
*/
USTRUCT(BlueprintType, DisplayName="GES Context Effects Definition")
struct GENERICEFFECTSSYSTEM_API FGES_ContextEffects
{
GENERATED_BODY()
/**
* Tag identifying the effect.
* 标识效果的标签。
*/
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="GES")
FGameplayTag EffectTag;
/**
* Query for source tags.
* 源标签查询。
*/
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="GES")
FGameplayTagQuery SourceTagQuery;
/**
* Query for target tags.
* 目标标签查询。
*/
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="GES")
FGameplayTagQuery TargetTagQuery;
/**
* Array of effect assets (sounds, Niagara systems, particle systems).
* 效果资产数组音效、Niagara系统、粒子系统
*/
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="GES", meta = (AllowedClasses = "/Script/Engine.SoundBase, /Script/Niagara.NiagaraSystem, /Script/Engine.ParticleSystem"))
TArray<FSoftObjectPath> Effects;
/**
* Deprecated context tags.
* 已废弃的情景标签。
*/
UPROPERTY(VisibleAnywhere, Category="GES", meta=(DisplayName="Context(Deprecated)"))
FGameplayTagContainer Context;
#if WITH_EDITORONLY_DATA
/**
* Editor-friendly name for the effect.
* 效果的编辑器友好名称。
*/
UPROPERTY(EditAnywhere, Category="GES", meta=(EditCondition=false, EditConditionHides))
FString EditorFriendlyName;
#endif
};
/**
* Visual effects settings for animation notify.
* 动画通知的视觉效果设置。
*/
USTRUCT(BlueprintType)
struct GENERICEFFECTSSYSTEM_API FGES_ContextEffectAnimNotifyVFXSettings
{
GENERATED_BODY()
/**
* Scale for spawning visual effects.
* 生成视觉效果的缩放。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=FX)
FVector Scale = FVector(1.0f, 1.0f, 1.0f);
};
/**
* Audio settings for animation notify.
* 动画通知的音频设置。
*/
USTRUCT(BlueprintType)
struct GENERICEFFECTSSYSTEM_API FGES_ContextEffectAnimNotifyAudioSettings
{
GENERATED_BODY()
/**
* Volume multiplier for audio effects.
* 音频效果的音量倍增器。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Sound)
float VolumeMultiplier = 1.0f;
/**
* Pitch multiplier for audio effects.
* 音频效果的音高倍增器。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Sound)
float PitchMultiplier = 1.0f;
};
/**
* Trace settings for animation notify.
* 动画通知的追踪设置。
*/
USTRUCT(BlueprintType)
struct GENERICEFFECTSSYSTEM_API FGES_ContextEffectAnimNotifyTraceSettings
{
GENERATED_BODY()
/**
* Trace channel for surface detection.
* 用于表面检测的追踪通道。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Trace)
TEnumAsByte<ECollisionChannel> TraceChannel = ECollisionChannel::ECC_Visibility;
/**
* Vector offset for the end of the trace.
* 追踪结束位置的向量偏移。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Trace)
FVector EndTraceLocationOffset = FVector::ZeroVector;
/**
* Whether to ignore the actor during tracing.
* 追踪时是否忽略演员。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Trace)
bool bIgnoreActor = true;
};
/**
* Input structure for spawning context effects.
* 生成情景效果的输入结构。
*/
USTRUCT(BlueprintType)
struct GENERICEFFECTSSYSTEM_API FGES_SpawnContextEffectsInput
{
GENERATED_BODY()
public:
/**
* Name of the effect to spawn.
* 要生成的效果名称。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GES")
FGameplayTag EffectName;
/**
* Whether the effect is attached to a component.
* 效果是否附加到组件。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GES")
bool bAttached{true};
/**
* Location for spawning if not attached.
* 如果未附加,生成位置。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GES", meta=(EditCondition="!bAttached", EditConditionHides))
FVector Location{FVector::ZeroVector};
/**
* Rotation for spawning if not attached.
* 如果未附加,生成旋转。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GES", meta=(EditCondition="!bAttached", EditConditionHides))
FRotator Rotation{ForceInit};
/**
* Determines how source context is applied (merge or override).
* 确定源情景的应用方式(合并或覆盖)。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GES|Context")
EGES_EffectsContextType SourceContextType{EGES_EffectsContextType::Merge};
/**
* Optional source context tags.
* 可选的源情景标签。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GES|Context")
FGameplayTagContainer SourceContext;
/**
* Optional target context tags.
* 可选的目标情景标签。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GES|Context")
FGameplayTagContainer TargetContext;
/**
* Bone name for attachment if attached.
* 如果附加,附加的骨骼名称。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GES|Attachment", meta=(EditCondition="bAttached", EditConditionHides))
FName Bone{NAME_None};
/**
* Component to attach the effect to.
* 附加效果的组件。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GES|Attachment", meta=(EditCondition="bAttached", EditConditionHides))
TObjectPtr<USceneComponent> ComponentToAttach{nullptr};
/**
* Location offset for attached effects.
* 附加效果的位置偏移。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GES|Attachment", meta=(EditCondition="bAttached", EditConditionHides))
FVector LocationOffset{FVector::ZeroVector};
/**
* Rotation offset for attached effects.
* 附加效果的旋转偏移。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GES|Attachment", meta=(EditCondition="bAttached", EditConditionHides))
FRotator RotationOffset{ForceInit};
/**
* Optional animation sequence triggering the effect.
* 触发效果的可选动画序列。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GES")
TObjectPtr<const UAnimSequenceBase> AnimationSequence{nullptr};
/**
* Scale for visual effects.
* 视觉效果的缩放。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GES|Vfx")
FVector VFXScale = FVector(1);
/**
* Volume multiplier for audio effects.
* 音频效果的音量倍增器。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GES|Sfx")
float AudioVolume = 1;
/**
* Pitch multiplier for audio effects.
* 音频效果的音高倍增器。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GES|Sfx")
float AudioPitch = 1;
/**
* Whether the effect was triggered by a successful hit.
* 效果是否由成功命中触发。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GES|Hit")
bool bHitSuccess{false};
/**
* Optional hit result for the effect.
* 效果的可选命中结果。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GES|Hit")
FHitResult HitResult;
};
/**
* Output structure for spawned context effects.
* 生成情景效果的输出结构。
*/
USTRUCT(BlueprintType)
struct GENERICEFFECTSSYSTEM_API FGES_SpawnContextEffectsOutput
{
GENERATED_BODY()
/**
* Array of spawned audio components.
* 生成的音频组件数组。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GES")
TArray<TObjectPtr<UAudioComponent>> AudioComponents;
/**
* Array of spawned Niagara components.
* 生成的Niagara组件数组。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GES")
TArray<TObjectPtr<UNiagaraComponent>> NiagaraComponents;
/**
* Array of spawned particle system components.
* 生成的粒子系统组件数组。
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GES")
TArray<TObjectPtr<UParticleSystemComponent>> ParticlesComponents;
};