UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ParticleSystemStateStreamImpl.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
7#include "SceneTypes.h"
10
11#define UE_API RENDERER_API
12
14class FSceneInterface;
16
18
19class FParticleSystemObjectCascade final : public TRefCountingMixin<FParticleSystemObjectCascade>, public FTransformObjectListener, public IParticleEmitterInstanceOwner
20{
21public:
22
23private:
25 virtual void OnTransformObjectDirty() override final;
26
27 TRefCountPtr<FTransformObject> TransformObject;
28
29 FCustomPrimitiveData CustomPrimitiveData;
30 FPrimitiveSceneInfoData PrimitiveSceneData;
31 FPrimitiveSceneDesc PrimitiveSceneDesc;
32
35
37 void Update();
39
40 virtual const FTransform& GetAsyncComponentToWorld() const override;
41
42 virtual UObject* GetDistributionData() const override;
43 virtual const FTransform& GetComponentTransform() const override;
44 virtual FRotator GetComponentRotation() const override;
45 virtual const FTransform& GetComponentToWorld() const override;
46 virtual const FBoxSphereBounds& GetBounds() const override;
47 virtual TWeakObjectPtr<UWorld> GetWeakWorld() const override;
48 virtual bool HasWorld() const override;
49 virtual bool HasWorldSettings() const override;
50 virtual bool IsGameWorld() const override;
51 virtual float GetWorldTimeSeconds() const override;
52 virtual float GetWorldEffectiveTimeDilation() const override;
53 virtual FIntVector GetWorldOriginLocation() const override;
54 virtual FSceneInterface* GetScene() const override;
55 virtual bool GetFloatParameter(const FName InName, float& OutFloat) override;
56 virtual const FVector3f& GetLWCTile() const override;
57 virtual FString GetName() const override;
58 virtual FString GetFullName() const override;
59 virtual FString GetPathName() const override;
60 virtual bool IsActive() const override;
61 virtual bool IsValidLowLevel() const override;
62 virtual TArrayView<const FParticleSysParam> GetAsyncInstanceParameters() override;
63 virtual int32 GetCurrentDetailMode() const override;
64 virtual int32 GetCurrentLODIndex() const override;
65 virtual const FVector& GetPartSysVelocity() const override;
66 virtual const FVector& GetOldPosition() const override;
67 virtual FFXSystem* GetFXSystem() const override;
68 virtual const UParticleSystem* GetTemplate() const override;
69 virtual TArrayView<const FParticleSysParam> GetInstanceParameters() const override;
70 virtual TArrayView<FParticleEmitterInstance*> GetEmitterInstances() const override;
71 virtual TArrayView<TObjectPtr<UMaterialInterface>> GetEmitterMaterials() const override;
72 virtual FPrimitiveSceneProxy* GetSceneProxy() const override;
73 virtual bool GetIsWarmingUp() const override;
74 virtual bool GetJustRegistered() const override;
75 virtual float GetWarmupTime() const override;
76 virtual float GetEmitterDelay() const override;
77 virtual FRandomStream& GetRandomStream() override;
78
79 virtual void SetComponentToWorld(const FTransform& NewComponentToWorld) override;
80 virtual void DeactivateNextTick() override;
81
82 virtual UParticleSystemComponent* AsComponent() const override;
83
84 virtual void ReportEventSpawn(const FName InEventName, const float InEmitterTime, const FVector InLocation, const FVector InVelocity, const TArray<class UParticleModuleEventSendToGame*>& InEventData) override;
85 virtual void ReportEventDeath(const FName InEventName, const float InEmitterTime, const FVector InLocation, const FVector InVelocity, const TArray<class UParticleModuleEventSendToGame*>& InEventData, const float InParticleTime) override;
86 virtual void ReportEventCollision(const FName InEventName, const float InEmitterTime, const FVector InLocation, const FVector InDirection, const FVector InVelocity, const TArray<class UParticleModuleEventSendToGame*>& InEventData, const float InParticleTime, const FVector InNormal, const float InTime, const int32 InItem, const FName InBoneName, UPhysicalMaterial* PhysMat) override;
87 virtual void ReportEventBurst(const FName InEventName, const float InEmitterTime, const int32 ParticleCount, const FVector InLocation, const TArray<class UParticleModuleEventSendToGame*>& InEventData) override;
88
89 virtual TArrayView<FParticleEventSpawnData> GetSpawnEvents() const override;
90 virtual TArrayView<FParticleEventDeathData> GetDeathEvents() const override;
91 virtual TArrayView<FParticleEventCollideData> GetCollisionEvents() const override;
92 virtual TArrayView<FParticleEventBurstData> GetBurstEvents() const override;
93 virtual TArrayView<FParticleEventKismetData> GetKismetEvents() const override;
94
95 const UParticleSystem* Template;
96 TArray<FParticleEmitterInstance*> EmitterInstances;
99 bool bJustRegistered = true;
100 int32 LODLevel = 0;
101};
102
104
106
108
109struct FParticleSystemStateStreamSettingsCascade : TStateStreamSettings<IParticleSystemStateStream, FParticleSystemObjectCascade>
110{
112 static inline constexpr const TCHAR* DebugName = TEXT("ParticleSystem(Cascade)");
113};
114
116
117class FParticleSystemStateStreamCascade final : public TStateStream<FParticleSystemStateStreamSettingsCascade>
118{
119public:
121private:
122 void SetTransformObject(FParticleSystemObjectCascade& Object, const FParticleSystemDynamicState& Ds);
123 UE_API virtual void Render_OnCreate(const FParticleSystemStaticState& Ss, const FParticleSystemDynamicState& Ds, FParticleSystemObjectCascade*& UserData, bool IsDestroyedInSameFrame) override;
124 UE_API virtual void Render_OnUpdate(const FParticleSystemStaticState& Ss, const FParticleSystemDynamicState& Ds, FParticleSystemObjectCascade*& UserData) override;
125 UE_API virtual void Render_OnDestroy(const FParticleSystemStaticState& Ss, const FParticleSystemDynamicState& Ds, FParticleSystemObjectCascade*& UserData) override;
126
127 virtual void Render_PostUpdate() override;
128
129 FSceneInterface& Scene;
131};
132
134
136{
137public:
139
141 virtual void SetOtherBackend(IParticleSystemStateStream* Other) override;
142
143 virtual void Game_BeginTick() override {}
144 virtual void Game_EndTick(StateStreamTime AbsoluteTime) override {}
145 virtual void Game_Exit() override {}
146 virtual void* Game_GetVoidPointer() override { return this; }
147 virtual void Render_Update(StateStreamTime AbsoluteTime) override {}
148 virtual void Render_PostUpdate() override {}
149 virtual void Render_Exit() override {}
150 virtual void Render_GarbageCollect() override {}
151 virtual uint32 GetId() override { return ParticleSystemStateStreamId; }
152
155};
156
158
159#undef UE_API
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
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
constexpr uint32 ParticleSystemStateStreamCascadeId
Definition ParticleSystemStateStreamImpl.h:105
#define UE_API
Definition ParticleSystemStateStreamImpl.h:11
constexpr uint32 ParticleSystemStateStreamId
Definition ParticleSystemStateStream.h:43
UE_STATESTREAM_TIME_TYPE StateStreamTime
Definition StateStreamDefinitions.h:21
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition FXSystemPrivate.h:188
Definition NameTypes.h:617
Definition ParticleHelper.h:2241
Definition ParticleSystemStateStreamImpl.h:20
Definition ParticleSystemStateStreamImpl.h:118
Definition ParticleSystemStateStreamImpl.h:136
FParticleSystemStateStreamCascade * CascadeBackend
Definition ParticleSystemStateStreamImpl.h:153
virtual void SetOtherBackend(IParticleSystemStateStream *Other) override
Definition ParticleSystemStateStreamImpl.cpp:426
virtual uint32 GetId() override
Definition ParticleSystemStateStreamImpl.h:151
virtual void Render_Exit() override
Definition ParticleSystemStateStreamImpl.h:149
virtual void Render_PostUpdate() override
Definition ParticleSystemStateStreamImpl.h:148
virtual void Game_BeginTick() override
Definition ParticleSystemStateStreamImpl.h:143
virtual void Game_EndTick(StateStreamTime AbsoluteTime) override
Definition ParticleSystemStateStreamImpl.h:144
virtual void Game_Exit() override
Definition ParticleSystemStateStreamImpl.h:145
virtual FParticleSystemHandle Game_CreateInstance(const FParticleSystemStaticState &Ss, const FParticleSystemDynamicState &Ds) override
FParticleSystemStateStreamImpl(FSceneInterface &InScene)
Definition ParticleSystemStateStreamImpl.h:138
virtual void Render_GarbageCollect() override
Definition ParticleSystemStateStreamImpl.h:150
virtual void Render_Update(StateStreamTime AbsoluteTime) override
Definition ParticleSystemStateStreamImpl.h:147
virtual void * Game_GetVoidPointer() override
Definition ParticleSystemStateStreamImpl.h:146
IParticleSystemStateStream * OtherBackend
Definition ParticleSystemStateStreamImpl.h:154
Definition PrimitiveSceneProxy.h:296
Definition SceneInterface.h:106
Definition TransformStateStreamImpl.h:16
Definition ParticleEmitterInstanceOwner.h:29
Definition ParticleSystemStateStream.h:50
Definition StateStream.h:14
Definition ArrayView.h:139
Definition Array.h:670
Definition RefCounting.h:454
Definition RefCounting.h:355
Definition GenericStateStream.h:35
Definition Object.h:95
Definition ParticleSystem.h:160
Definition PhysicalMaterial.h:104
Type
Definition RHIFeatureLevel.h:20
Definition SceneTypes.h:30
Definition ParticleSystemStateStream.h:27
Definition ParticleSystemStateStreamHandle.h:15
Definition ParticleSystemSceneProxy.h:18
Definition ParticleSystemStateStreamImpl.h:110
@ Id
Definition ParticleSystemStateStreamImpl.h:111
static constexpr const TCHAR * DebugName
Definition ParticleSystemStateStreamImpl.h:112
Definition ParticleSystemStateStream.h:17
Definition PrimitiveSceneDesc.h:26
Definition PrimitiveSceneInfoData.h:16
Definition RandomStream.h:20
Definition GenericStateStream.h:18
Definition WeakObjectPtrTemplates.h:25
Definition BoxSphereBounds.h:25
static CORE_API const TVector< float > ZeroVector
Definition Vector.h:79