UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ParticleModuleParameterDynamic.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
8#pragma once
9
10#include "CoreMinimal.h"
17#include "ParticleModuleParameterDynamic.generated.h"
18
23
28UENUM()
45
47USTRUCT()
49{
51
52
53 UPROPERTY(Category=EmitterDynamicParameter, VisibleAnywhere)
54 FName ParamName;
55
57 UPROPERTY(EditAnywhere, Category=EmitterDynamicParameter)
58 uint32 bUseEmitterTime:1;
59
61 UPROPERTY(EditAnywhere, Category=EmitterDynamicParameter)
62 uint32 bSpawnTimeOnly:1;
63
65 UPROPERTY(EditAnywhere, Category=EmitterDynamicParameter)
67
69 UPROPERTY(EditAnywhere, Category=EmitterDynamicParameter)
70 uint32 bScaleVelocityByParamValue:1;
71
73 UPROPERTY(EditAnywhere, Category=EmitterDynamicParameter)
75
76
78 : bUseEmitterTime(false)
79 , bSpawnTimeOnly(false)
80 , ValueMethod(0)
81 , bScaleVelocityByParamValue(false)
82 {
83 }
85 : ParamName(InParamName)
86 , bUseEmitterTime(InUseEmitterTime)
87 , bSpawnTimeOnly(false)
88 , ValueMethod(InValueMethod)
89 , bScaleVelocityByParamValue(false)
90 {
91 ParamValue.Distribution = InDistribution;
92 }
93
94};
95
96UCLASS(editinlinenew, hidecategories=Object, MinimalAPI, meta=(DisplayName = "Dynamic"))
98{
100
101
104
106 UPROPERTY()
108
109 UPROPERTY()
110 uint32 bUsesVelocity:1;
111
113 void InitializeDefaults();
114
115 //Begin UObject Interface
116 virtual void PostLoad() override;
117#if WITH_EDITOR
118 virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
119#endif // WITH_EDITOR
120 virtual void PostInitProperties() override;
121 //~ Begin UObject Interface
122
123 //~ Begin UParticleModule Interface
124 virtual void Spawn(const FSpawnContext& Context) override;
125 virtual void Update(const FUpdateContext& Context) override;
126 virtual uint32 RequiredBytes(UParticleModuleTypeDataBase* TypeData) override;
127 virtual void SetToSensibleDefaults(UParticleEmitter* Owner) override;
128 virtual void GetCurveObjects(TArray<FParticleCurvePair>& OutCurves) override;
129 virtual bool WillGeneratedModuleBeIdentical(UParticleLODLevel* SourceLODLevel, UParticleLODLevel* DestLODLevel, float Percentage) override
130 {
131 // The assumption is that at 100%, ANY module will be identical...
132 // (Although this is virtual to allow over-riding that assumption on a case-by-case basis!)
133 return true;
134 }
135 virtual void GetParticleSysParamsUtilized(TArray<FString>& ParticleSysParamList) override;
136 virtual void GetParticleParametersUtilized(TArray<FString>& ParticleParameterList) override;
137 virtual void RefreshModule(UInterpCurveEdSetup* EdSetup, UParticleEmitter* InEmitter, int32 InLODLevel) override;
138 //~ End UParticleModule Interface
139
148 void SpawnEx(const FSpawnContext& Context, struct FRandomStream* InRandomStream);
149
157 virtual void UpdateParameterNames(UMaterialInterface* InMaterialInterface);
158
159
170 inline float GetParameterValue(const FContext& Context, FEmitterDynamicParameter& InDynParams, FBaseParticle& Particle, FParticleEmitterInstance* Owner, struct FRandomStream* InRandomStream)
171 {
172 float ScaleValue = 1.0f;
173 float DistributionValue = 1.0f;
174 switch (InDynParams.ValueMethod)
175 {
176 case EDPV_VelocityX:
177 ScaleValue = Particle.Velocity.X;
178 break;
179 case EDPV_VelocityY:
180 ScaleValue = Particle.Velocity.Y;
181 break;
182 case EDPV_VelocityZ:
183 ScaleValue = Particle.Velocity.Z;
184 break;
185 case EDPV_VelocityMag:
186 ScaleValue = Particle.Velocity.Size();
187 break;
188 default:
189 //case EDPV_UserSet:
190 //case EDPV_AutoSet:
191 break;
192 }
193
194 if ((InDynParams.bScaleVelocityByParamValue == true) || (InDynParams.ValueMethod == EDPV_UserSet))
195 {
196 float TimeValue = InDynParams.bUseEmitterTime ? Owner->EmitterTime : Particle.RelativeTime;
197 DistributionValue = InDynParams.ParamValue.GetValue(TimeValue, Context.GetDistributionData(), InRandomStream);
198 }
199
201 }
202
213 inline float GetParameterValue_UserSet(const FContext& Context, FEmitterDynamicParameter& InDynParams, FBaseParticle& Particle, FParticleEmitterInstance* Owner, struct FRandomStream* InRandomStream)
214 {
215 return InDynParams.ParamValue.GetValue(InDynParams.bUseEmitterTime ? Owner->EmitterTime : Particle.RelativeTime, Context.GetDistributionData(), InRandomStream);
216 }
217
221 virtual void UpdateUsageFlags();
222
223 virtual bool CanTickInAnyThread() override;
224};
225
226
227
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
EEmitterDynamicParameterValue
Definition ParticleModuleParameterDynamic.h:30
@ EDPV_VelocityX
Definition ParticleModuleParameterDynamic.h:36
@ EDPV_VelocityZ
Definition ParticleModuleParameterDynamic.h:40
@ EDPV_VelocityY
Definition ParticleModuleParameterDynamic.h:38
@ EDPV_UserSet
Definition ParticleModuleParameterDynamic.h:32
@ EDPV_VelocityMag
Definition ParticleModuleParameterDynamic.h:42
@ EDPV_MAX
Definition ParticleModuleParameterDynamic.h:43
@ EDPV_AutoSet
Definition ParticleModuleParameterDynamic.h:34
@ Percentage
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition NameTypes.h:617
Definition Array.h:670
Definition EnumAsByte.h:22
Definition DistributionFloatConstant.h:13
Definition InterpCurveEdSetup.h:105
Definition MaterialInterface.h:296
virtual COREUOBJECT_API void PostInitProperties()
Definition UObjectGlobals.cpp:3961
Definition ParticleEmitter.h:98
Definition ParticleLODLevel.h:22
Definition ParticleModuleParameterBase.h:13
Definition ParticleModuleParameterDynamic.h:98
Definition ParticleModuleTypeDataBase.h:18
UpdateFlags
Definition DetourCrowd.h:208
@ false
Definition radaudio_common.h:23
Definition ParticleHelper.h:181
FVector3f Velocity
Definition ParticleHelper.h:191
float RelativeTime
Definition ParticleHelper.h:209
Definition ParticleModuleParameterDynamic.h:49
FEmitterDynamicParameter(FName InParamName, uint32 InUseEmitterTime, TEnumAsByte< enum EEmitterDynamicParameterValue > InValueMethod, UDistributionFloatConstant *InDistribution)
Definition ParticleModuleParameterDynamic.h:84
Definition ParticleEmitterInstances.h:226
Definition UnrealType.h:6865
Definition RandomStream.h:20
Definition DistributionFloat.h:28
T Z
Definition Vector.h:68
T Y
Definition Vector.h:65
T X
Definition Vector.h:62
T Size() const
Definition Vector.h:1716