UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ParticleEmitterInstances.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 UnParticleEmitterInstances.h:
5 Particle emitter instance definitions/ macros.
6=============================================================================*/
7
8#pragma once
9
10#include "CoreMinimal.h"
12#include "Stats/Stats.h"
14#include "Distributions.h"
16#include "ParticleHelper.h"
19
20//Temporary define to allow switching on and off of some trail optimizations until bugs can be worked out.
21#define ENABLE_TRAILS_START_END_INDEX_OPTIMIZATION (0)
22
35class UParticleSystemComponent;
36
37/*-----------------------------------------------------------------------------
38 Forward declarations
39-----------------------------------------------------------------------------*/
41// Emitter and module types
44class UParticleModule;
45// Data types
50
51class UStaticMeshComponent;
52class UParticleSystemComponent;
53
57
59
61
63
65
66enum ETrailWidthMode : int;
67
72
73/*-----------------------------------------------------------------------------
74 Information compiled from modules to build runtime emitter data.
75-----------------------------------------------------------------------------*/
76
78{
87
94
99
104
109
118
121
126
141 float Friction;
146
153
162
177
180
187
189
192
203
205
210
213};
214
215// Hacky base class to avoid 8 bytes of padding after the vtable
220
221
222/*-----------------------------------------------------------------------------
223 FParticleEmitterInstance
224-----------------------------------------------------------------------------*/
226{
227public:
232
323#if WITH_EDITOR
324 float LastTickDurationMs;
325#endif
342
346
349#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
353#endif //#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
354
357
360
362
365
368
369#if STATS
371#endif
372
373 //
375 ENGINE_API virtual void Init();
376
385
386 ENGINE_API virtual void Tick(float DeltaTime, bool bSuppressSpawning);
388
390 ENGINE_API void FakeBursts();
391
400 ENGINE_API virtual float Tick_EmitterTimeSetup(float DeltaTime, UParticleLODLevel* CurrentLODLevel);
418 ENGINE_API virtual void Tick_ModuleUpdate(float DeltaTime, UParticleLODLevel* CurrentLODLevel);
433
441
442 ENGINE_API virtual void Rewind();
444 ENGINE_API virtual void UpdateBoundingBox(float DeltaTime);
445 ENGINE_API virtual void ForceUpdateBoundingBox();
455 ENGINE_API virtual void ResetBurstList();
456 ENGINE_API virtual float GetCurrentBurstRateOffset(float& DeltaTime, int32& Burst);
457 ENGINE_API virtual void ResetParticleParameters(float DeltaTime);
460 float DeltaTime, FVector& Result, FMatrix& RotationMat);
461 ENGINE_API virtual void UpdateOrbitData(float DeltaTime);
462 ENGINE_API virtual void ParticlePrefetch();
463
469 ENGINE_API virtual float Spawn(float DeltaTime);
470
481 ENGINE_API void SpawnParticles( int32 Count, float StartTime, float Increment, const FVector& InitialLocation, const FVector& InitialVelocity, struct FParticleEventInstancePayload* EventPayload );
482
495
503 ENGINE_API virtual void PreSpawn(FBaseParticle* Particle, const FVector& InitialLocation, const FVector& InitialVelocity);
504
512 ENGINE_API virtual void PostSpawn(FBaseParticle* Particle, float InterpolationPercentage, float SpawnTime);
513
514 ENGINE_API virtual bool HasCompleted();
515 ENGINE_API virtual void KillParticles();
521 ENGINE_API virtual void KillParticle(int32 Index);
522
528 ENGINE_API virtual void KillParticlesForced(bool bFireEvents = false);
529
532 {
534 }
535
541
546
549
552
563 {
565 {
566 return ParticleIndices[InIndex];
567 }
568 return -1;
569 }
578
583
590 {
591 return ActiveParticles > 0;
592 }
593
600
605 {
606 return NULL;
607 }
608
615 {
616 return NULL;
617 }
618
626 {
627 OutNum = 0;
628 OutMax = 0;
629 }
630
635
639 ENGINE_API virtual void ProcessParticleEvents(float DeltaTime, bool bSuppressSpawning);
640
644 virtual void OnDeactivateSystem()
645 {
646 }
647
652 {
653 return 0;
654 }
655
659 virtual bool IsMeshRotationActive() const
660 {
661 return false;
662 }
663
669 {
670 }
671
677 UE_DEPRECATED(5.7, "Please use GatherMaterialRelevance with EShaderPlatform argument and not ERHIFeatureLevel::Type")
680
688
689 // Beam interface
691 virtual void SetBeamSourcePoint(FVector NewSourcePoint,int32 SourceIndex) {};
692 virtual void SetBeamSourceTangent(FVector NewTangentPoint,int32 SourceIndex) {};
693 virtual void SetBeamSourceStrength(float NewSourceStrength,int32 SourceIndex) {};
694 virtual void SetBeamTargetPoint(FVector NewTargetPoint,int32 TargetIndex) {};
695 virtual void SetBeamTargetTangent(FVector NewTangentPoint,int32 TargetIndex) {};
696 virtual void SetBeamTargetStrength(float NewTargetStrength,int32 TargetIndex) {};
697
698 //Beam get interface
699 virtual bool GetBeamEndPoint(FVector& OutEndPoint) const { return false; }
700 virtual bool GetBeamSourcePoint(int32 SourceIndex, FVector& OutSourcePoint) const { return false; }
701 virtual bool GetBeamSourceTangent(int32 SourceIndex, FVector& OutTangentPoint) const { return false; }
702 virtual bool GetBeamSourceStrength(int32 SourceIndex, float& OutSourceStrength) const { return false; }
703 virtual bool GetBeamTargetPoint(int32 TargetIndex, FVector& OutTargetPoint) const { return false; }
704 virtual bool GetBeamTargetTangent(int32 TargetIndex, FVector& OutTangentPoint) const { return false; }
705 virtual bool GetBeamTargetStrength(int32 TargetIndex, float& OutTargetStrength) const { return false; }
706
707 // Called on world origin changes
708 ENGINE_API virtual void ApplyWorldOffset(FVector InOffset, bool bWorldShift);
709
710 virtual bool IsTrailEmitter()const{ return false; }
711
715 virtual void BeginTrail(){}
716
720 virtual void EndTrail(){}
721
731
736 ENGINE_API virtual void Tick_MaterialOverrides(int32 EmitterIndex);
737
742
747
748protected:
749
758
763
768
773
774
779
780};
781
782#if STATS
784{
788 template<class T>
789 inline FScopeCycleCounterEmitter(const T *Object)
790 {
791 if (Object)
792 {
793 TStatId SpriteStatId = Object->SpriteTemplate->GetStatID();
794 if (FThreadStats::IsCollectingData(SpriteStatId))
795 {
797 }
798 }
799 }
803 template<class T>
805 {
806 if (FThreadStats::IsCollectingData(OtherStat) && Object)
807 {
808 TStatId StatId = Object->SpriteTemplate->GetStatID();
809 if (!StatId.IsNone())
810 {
811 Start(StatId);
812 }
813 }
814 }
819 {
820 Stop();
821 }
822};
823#else
833#endif
834
835/*-----------------------------------------------------------------------------
836 ParticleSpriteEmitterInstance
837-----------------------------------------------------------------------------*/
839{
842
845
850
857
864 virtual void GetAllocatedSize(int32& OutNum, int32& OutMax) override;
865
873
874protected:
875
883 virtual bool FillReplayData( FDynamicEmitterReplayDataBase& OutData ) override;
884
885};
886
887/*-----------------------------------------------------------------------------
888 ParticleMeshEmitterInstance
889-----------------------------------------------------------------------------*/
891{
896
899
902
904 ENGINE_API virtual void Init() override;
905 ENGINE_API virtual bool Resize(int32 NewMaxActiveParticles, bool bSetMaxActiveCount = true) override;
906 ENGINE_API virtual void Tick(float DeltaTime, bool bSuppressSpawning) override;
907 ENGINE_API virtual void UpdateBoundingBox(float DeltaTime) override;
908 ENGINE_API virtual uint32 RequiredBytes() override;
909 ENGINE_API virtual void PostSpawn(FBaseParticle* Particle, float InterpolationPercentage, float SpawnTime) override;
912
913 ENGINE_API virtual void Tick_MaterialOverrides(int32 EmitterIndex) override;
914
921
928 ENGINE_API virtual void GetAllocatedSize(int32& OutNum, int32& OutMax) override;
929
937
941 virtual int32 GetMeshRotationOffset() const override
942 {
943 return MeshRotationOffset;
944 }
945
949 virtual bool IsMeshRotationActive() const override
950 {
951 return MeshRotationActive;
952 }
953
959
965 UE_DEPRECATED(5.7, "Please use GatherMaterialRelevance with EShaderPlatform argument and not ERHIFeatureLevel::Type")
968
972 UE_DEPRECATED(5.7, "Please use GatherMaterialRelevance without ERHIFeatureLevel::Type")
975
977
986};
987
988/*-----------------------------------------------------------------------------
989 ParticleBeam2EmitterInstance
990-----------------------------------------------------------------------------*/
992{
994
1002
1040
1045
1048
1051
1052 // Beam interface.
1053 virtual void SetBeamEndPoint(FVector NewEndPoint) override;
1054 virtual void SetBeamSourcePoint(FVector NewSourcePoint,int32 SourceIndex) override;
1055 virtual void SetBeamSourceTangent(FVector NewTangentPoint,int32 SourceIndex) override;
1056 virtual void SetBeamSourceStrength(float NewSourceStrength,int32 SourceIndex) override;
1057 virtual void SetBeamTargetPoint(FVector NewTargetPoint,int32 TargetIndex) override;
1058 virtual void SetBeamTargetTangent(FVector NewTangentPoint,int32 TargetIndex) override;
1059 virtual void SetBeamTargetStrength(float NewTargetStrength,int32 TargetIndex) override;
1060 virtual void ApplyWorldOffset(FVector InOffset, bool bWorldShift) override;
1061
1062 virtual bool GetBeamEndPoint(FVector& OutEndPoint) const override;
1063 virtual bool GetBeamSourcePoint(int32 SourceIndex, FVector& OutSourcePoint) const override;
1064 virtual bool GetBeamSourceTangent(int32 SourceIndex, FVector& OutTangentPoint) const override;
1065 virtual bool GetBeamSourceStrength(int32 SourceIndex, float& OutSourceStrength) const override;
1066 virtual bool GetBeamTargetPoint(int32 TargetIndex, FVector& OutTargetPoint) const override;
1067 virtual bool GetBeamTargetTangent(int32 TargetIndex, FVector& OutTangentPoint) const override;
1068 virtual bool GetBeamTargetStrength(int32 TargetIndex, float& OutTargetStrength) const override;
1069 //
1070 virtual void InitParameters(UParticleEmitter* InTemplate) override;
1071 virtual void Init() override;
1072 virtual void Tick(float DeltaTime, bool bSuppressSpawning) override;
1079 virtual void Tick_ModulePostUpdate(float DeltaTime, UParticleLODLevel* CurrentLODLevel) override;
1080
1087 virtual void SetCurrentLODIndex(int32 InLODIndex, bool bInFullyProcess) override;
1088
1096 virtual void PostSpawn(FBaseParticle* Particle, float InterpolationPercentage, float SpawnTime) override;
1097
1098 virtual void UpdateBoundingBox(float DeltaTime) override;
1099 virtual void ForceUpdateBoundingBox() override;
1100 virtual uint32 RequiredBytes() override;
1101 float SpawnBeamParticles(float OldLeftover, float Rate, float DeltaTime, int32 Burst = 0, float BurstTime = 0.0f);
1102 virtual void KillParticles() override;
1107 void SetupBeamModifierModulesOffsets();
1108 void ResolveSource();
1109 void ResolveTarget();
1110 void DetermineVertexAndTriangleCount();
1111
1116
1122 virtual FDynamicEmitterReplayDataBase* GetReplayData() override;
1123
1130 virtual void GetAllocatedSize(int32& OutNum, int32& OutMax) override;
1131
1139
1144 {
1145 if (SourceEmitter == Instance)
1146 {
1147 SourceEmitter = NULL;
1148 }
1149 if (TargetEmitter == Instance)
1150 {
1151 TargetEmitter = NULL;
1152 }
1153 }
1154
1155protected:
1160
1168 virtual bool FillReplayData( FDynamicEmitterReplayDataBase& OutData ) override;
1169
1170};
1171
1172/*-----------------------------------------------------------------------------
1173 FParticleRibbonEmitterInstance.
1174-----------------------------------------------------------------------------*/
1176{
1191
1209
1210#if ENABLE_TRAILS_START_END_INDEX_OPTIMIZATION
1215
1216 void SetStartIndex(int32 TrailIndex, int32 ParticleIndex)
1217 {
1218 CurrentStartIndices[TrailIndex] = ParticleIndex;
1219 if (CurrentEndIndices[TrailIndex] == ParticleIndex)
1220 {
1221 CurrentEndIndices[TrailIndex] = INDEX_NONE;
1222 }
1223 CheckIndices(TrailIndex);
1224 }
1225
1226 template<typename TrailDataType> void GetTrailStart(const int32 TrailIdx, int32 &OutStartIndex, TrailDataType *&OutTrailData, FBaseParticle *&OutParticle)
1227 {
1228 if (TrailIdx != INDEX_NONE)
1229 {
1232 {
1233 DECLARE_PARTICLE_PTR(CheckParticle, ParticleData + ParticleStride * OutStartIndex);
1234 TrailDataType* CheckTrailData = ((TrailDataType*)((uint8*)CheckParticle + TypeDataOffset));
1238 }
1239 }
1240 }
1241
1242 template<typename TrailDataType> void GetTrailEnd(const int32 TrailIdx, int32 &OutEndIndex, TrailDataType *&OutTrailData, FBaseParticle *&OutParticle)
1243 {
1244 if (TrailIdx != INDEX_NONE)
1245 {
1247 if (OutEndIndex != INDEX_NONE)
1248 {
1249 DECLARE_PARTICLE_PTR(CheckParticle, ParticleData + ParticleStride * OutEndIndex);
1250 TrailDataType* CheckTrailData = ((TrailDataType*)((uint8*)CheckParticle + TypeDataOffset));
1254 }
1255 }
1256 }
1257
1258
1259 void SetEndIndex(int32 TrailIndex, int32 ParticleIndex)
1260 {
1261 CurrentEndIndices[TrailIndex] = ParticleIndex;
1262 if (CurrentStartIndices[TrailIndex] == ParticleIndex)
1263 {
1264 CurrentStartIndices[TrailIndex] = INDEX_NONE;
1265 }
1266 CheckIndices(TrailIndex);
1267 }
1268
1269 void SetDeadIndex(int32 TrailIndex, int32 ParticleIndex)
1270 {
1271 if (CurrentStartIndices[TrailIndex] == ParticleIndex)
1272 {
1273 CurrentStartIndices[TrailIndex] = INDEX_NONE;
1274 }
1275
1276 if (CurrentEndIndices[TrailIndex] == ParticleIndex)
1277 {
1278 CurrentEndIndices[TrailIndex] = INDEX_NONE;
1279 }
1280 CheckIndices(TrailIndex);
1281 }
1282
1283 void ClearIndices(int32 TrailIndex, int32 ParticleIndex)
1284 {
1285 SetDeadIndex(TrailIndex, ParticleIndex);
1286 CheckIndices(TrailIndex);
1287 }
1288
1289 void CheckIndices(int32 TrailIdx)
1290 {
1291#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
1293 {
1294 DECLARE_PARTICLE_PTR(EndParticle, ParticleData + ParticleStride * CurrentEndIndices[TrailIdx]);
1297 }
1298
1300 {
1301 DECLARE_PARTICLE_PTR(StartParticle, ParticleData + ParticleStride * CurrentStartIndices[TrailIdx]);
1304 }
1305#endif
1306 }
1307
1308 void CheckAllIndices()
1309 {
1310#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
1311 for (uint32 TrailIdx = 0; TrailIdx < 128; TrailIdx++)
1312 {
1314 {
1315 DECLARE_PARTICLE_PTR(EndParticle, ParticleData + ParticleStride * CurrentEndIndices[TrailIdx]);
1318 }
1319
1321 {
1322 DECLARE_PARTICLE_PTR(StartParticle, ParticleData + ParticleStride * CurrentStartIndices[TrailIdx]);
1325 }
1326 }
1327#endif
1328 }
1329
1330#else //ENABLE_TRAILS_START_END_INDEX_OPTIMIZATION
1331
1333{
1334 for (int32 FindTrailIdx = 0; FindTrailIdx < ActiveParticles; FindTrailIdx++)
1335 {
1336 int32 CheckIndex = ParticleIndices[FindTrailIdx];
1337 DECLARE_PARTICLE_PTR(CheckParticle, ParticleData + ParticleStride * CheckIndex);
1338 TrailDataType* CheckTrailData = ((TrailDataType*)((uint8*)CheckParticle + TypeDataOffset));
1340 {
1341 if (CheckTrailData->TrailIndex == TrailIdx)
1342 {
1343 OutStartIndex = CheckIndex;
1346 break;
1347 }
1348 }
1349 }
1350}
1352{
1353 for (int32 FindTrailIdx = 0; FindTrailIdx < ActiveParticles; FindTrailIdx++)
1354 {
1355 int32 CheckIndex = ParticleIndices[FindTrailIdx];
1356 DECLARE_PARTICLE_PTR(CheckParticle, ParticleData + ParticleStride * CheckIndex);
1357 TrailDataType* CheckTrailData = ((TrailDataType*)((uint8*)CheckParticle + TypeDataOffset));
1359 {
1360 if (CheckTrailData->TrailIndex == TrailIdx)
1361 {
1362 OutEndIndex = CheckIndex;
1365 break;
1366 }
1367 }
1368 }
1369}
1370void SetStartIndex(int32 TrailIndex, int32 ParticleIndex){}
1371void SetEndIndex(int32 TrailIndex, int32 ParticleIndex){}
1372void SetDeadIndex(int32 TrailIndex, int32 ParticleIndex){}
1373void ClearIndices(int32 TrailIndex, int32 ParticleIndex){}
1376
1377#endif
1378
1379 void DumpCircularTrailsSpam();
1380#if !UE_BUILD_SHIPPING
1382 {
1384 {
1385 DumpCircularTrailsSpam();
1386 return true;
1387 }
1388 return false;
1389 }
1390#else
1391 bool CheckForCircularTrail(FBaseParticle* StartParticle, FBaseParticle* CheckParticle) { return StartParticle == CheckParticle; }
1392#endif
1393
1397 , VertexCount(0)
1398 , TriangleCount(0)
1399 , TrailCount(0)
1400 , MaxTrailCount(0)
1401 , RunningTime(0.0f)
1402 , LastTickTime(0.0f)
1403 , bDeadTrailsOnDeactivate(false)
1404 , bFirstUpdate(true)
1405 , bEnableInactiveTimeTracking(false)
1406 {
1407 TrailSpawnTimes.Empty();
1408 LastSpawnTime.Empty();
1409 SourceDistanceTraveled.Empty();
1410 TiledUDistanceTraveled.Empty();
1411
1412 for (int32 TrailIdx = 0; TrailIdx < 128; TrailIdx++)
1413 {
1414#if ENABLE_TRAILS_START_END_INDEX_OPTIMIZATION
1417#endif
1418 }
1419 }
1420
1425
1426 virtual void Init() override;
1427 virtual void InitParameters(UParticleEmitter* InTemplate) override;
1428 virtual void Tick(float DeltaTime, bool bSuppressSpawning) override;
1429
1430 bool AddParticleHelper(int32 InTrailIdx,
1433
1440 virtual void Tick_RecalculateTangents(float DeltaTime, UParticleLODLevel* CurrentLODLevel);
1441 virtual void UpdateBoundingBox(float DeltaTime) override;
1442 virtual void ForceUpdateBoundingBox() override;
1443 virtual void KillParticles() override;
1444
1451 virtual void KillParticles(int32 InTrailIdx, int32 InKillCount);
1452
1453 virtual void SetupTrailModules() {};
1454 virtual void UpdateSourceData(float DeltaTime, bool bFirstTime);
1455 // Update the start particles of the trail, if needed
1456// virtual void UpdateStartParticles(float DeltaTime, bool bFirstTime) {}
1457
1461 virtual void OnDeactivateSystem() override;
1462
1463protected:
1467 UMaterialInterface* GetCurrentMaterial();
1468
1470 {
1472 GET_Next
1475 {
1476 GET_Any, // Grab the prev/next particle
1477 GET_Spawned, // Grab the first prev/next particle that was true spawned
1478 GET_Interpolated, // Grab the first prev/next particle that was interpolation spawned
1479 GET_Start, // Grab the start particle for the trail the particle is in
1480 GET_End, // Grab the end particle for the trail the particle is in
1481 };
1482
1496 bool GetParticleInTrail(
1500 EGetTrailDirection InGetDirection,
1501 EGetTrailParticleOption InGetOption,
1504
1506 virtual void PrintParticleData(FBaseParticle* Particle, FTrailsBaseTypeDataPayload* TrailData, int32 CurrentIndex, int32 TrailIndex){}
1510 virtual void PrintTrails(){}
1511};
1512
1514{
1517
1520
1525
1565// TArray<int32> CurrentStartIndices;
1567// TArray<bool> SkipSourceSegment;
1568
1571
1574
1577
1578 virtual void InitParameters(UParticleEmitter* InTemplate) override;
1579
1586 virtual void Tick_RecalculateTangents(float DeltaTime, UParticleLODLevel* CurrentLODLevel) override;
1587
1588 virtual bool GetSpawnPerUnitAmount(float DeltaTime, int32 InTrailIdx, int32& OutCount, float& OutRate);
1589
1599 void GetParticleLifetimeAndSize(int32 InTrailIdx, const FBaseParticle* InParticle, bool bInNoLivingParticles, float& OutOneOverMaxLifetime, float& OutSize);
1600
1606 virtual float Spawn(float DeltaTime) override;
1607
1615 bool Spawn_Source(float DeltaTime);
1623 float Spawn_RateAndBurst(float DeltaTime);
1624
1625 virtual void SetupTrailModules() override;
1626 void ResolveSource();
1627 virtual void UpdateSourceData(float DeltaTime, bool bFirstTime) override;
1628 // Update the start particles of the trail, if needed
1629// virtual void UpdateStartParticles(float DeltaTime, bool bFirstTime);
1630 bool ResolveSourcePoint(int32 InTrailIdx, FVector& OutPosition, FQuat& OutRotation, FVector& OutUp, FVector& OutTangent, float& OutTangentStrength);
1631
1633 void DetermineVertexAndTriangleCount();
1634
1640 virtual bool IsDynamicDataRequired(UParticleLODLevel* CurrentLODLevel) override;
1641
1645 virtual FDynamicEmitterDataBase* GetDynamicData(bool bSelected, ERHIFeatureLevel::Type InFeatureLevel) override;
1646
1652 virtual FDynamicEmitterReplayDataBase* GetReplayData() override;
1653
1660 virtual void GetAllocatedSize(int32& OutNum, int32& OutMax) override;
1661
1668 virtual void GetResourceSizeEx(FResourceSizeEx& CumulativeResourceSize) override;
1669
1674 {
1675 if (SourceEmitter == Instance)
1676 {
1677 SourceEmitter = NULL;
1678 }
1679 }
1680
1682 virtual void ApplyWorldOffset(FVector InOffset, bool bWorldShift) override;
1683
1684protected:
1685
1693 virtual bool FillReplayData( FDynamicEmitterReplayDataBase& OutData ) override;
1694};
1695
1696/*-----------------------------------------------------------------------------
1697 FParticleAnimTrailEmitterInstance.
1698-----------------------------------------------------------------------------*/
1699
1701{
1704
1707
1712
1717
1721 float Width;
1722
1727
1731 const void* Owner;
1732
1737
1742
1744#if WITH_EDITORONLY_DATA
1745 uint32 bRenderGeometry : 1;
1746 uint32 bRenderSpawnPoints : 1;
1747 uint32 bRenderTangents : 1;
1748 uint32 bRenderTessellation : 1;
1749#endif
1750
1753
1756
1759
1760 virtual void InitParameters(UParticleEmitter* InTemplate) override;
1761
1772 virtual void RecalculateTangentAndInterpolationParam(
1776
1783 virtual void Tick_RecalculateTangents(float DeltaTime, UParticleLODLevel* CurrentLODLevel) override;
1784
1785 virtual bool GetSpawnPerUnitAmount(float DeltaTime, int32 InTrailIdx, int32& OutCount, float& OutRate);
1786
1792 virtual float Spawn(float DeltaTime) override;
1793
1794 virtual void SetupTrailModules() override;
1796 virtual void UpdateSourceData(float DeltaTime, bool bFirstTime) override;
1797
1798 void UpdateBoundingBox(float DeltaTime) override;
1799 void ForceUpdateBoundingBox() override;
1800
1802 void DetermineVertexAndTriangleCount();
1803
1804 virtual bool HasCompleted() override;
1808 virtual FDynamicEmitterDataBase* GetDynamicData(bool bSelected, ERHIFeatureLevel::Type InFeatureLevel) override;
1809
1815 virtual FDynamicEmitterReplayDataBase* GetReplayData() override;
1816
1823 virtual void GetAllocatedSize(int32& OutNum, int32& OutMax) override;
1824
1831 virtual void GetResourceSizeEx(FResourceSizeEx& CumulativeResourceSize) override;
1832
1833 virtual bool IsTrailEmitter() const override { return true; }
1834
1838 virtual void BeginTrail() override;
1839
1843 virtual void EndTrail() override;
1844
1853 virtual void SetTrailSourceData(FName InFirstSocketName, FName InSecondSocketName, ETrailWidthMode InWidthMode, float InWidth) override;
1854
1855 bool IsTrailActive()const;
1856
1857#if WITH_EDITORONLY_DATA
1867#endif
1868
1869protected:
1870
1878 virtual bool FillReplayData( FDynamicEmitterReplayDataBase& OutData ) override;
1879
1885 void SpawnParticle( int32& StartParticleIndex, const struct FAnimTrailParticleSpawnParams& Params );
1886
1888 virtual void PrintParticleData(FBaseParticle* Particle, FTrailsBaseTypeDataPayload* TrailData, int32 CurrentIndex, int32 TrailIndex) override;
1890 virtual void PrintAllActiveParticles() override;
1892 virtual void PrintTrails() override;
1893};
#define NULL
Definition oodle2base.h:134
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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
ETrailWidthMode
Definition EngineTypes.h:682
return true
Definition ExternalRpcRegistry.cpp:601
void Init()
Definition LockFreeList.h:4
#define DECLARE_PARTICLE_PTR(Name, Address)
Definition ParticleHelper.h:74
#define TRAIL_EMITTER_IS_END(index)
Definition ParticleHelper.h:507
#define TRAIL_EMITTER_IS_START(index)
Definition ParticleHelper.h:504
@ Stop
Definition PrecomputedVolumetricLightmapStreaming.cpp:26
EShaderPlatform
Definition RHIShaderPlatform.h:11
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
Definition Distributions.h:611
Definition Distributions.h:666
Definition NameTypes.h:617
Definition ParticleEmitterInstanceOwner.h:29
Definition Array.h:670
void Empty(SizeType Slack=0)
Definition Array.h:2273
Definition EnumAsByte.h:22
Definition ContainerAllocationPolicies.h:894
Definition MaterialInterface.h:296
Definition ParticleEmitter.h:98
Definition ParticleLODLevel.h:22
Definition ParticleModuleBeamModifier.h:66
Definition ParticleModuleBeamNoise.h:24
Definition ParticleModuleBeamSource.h:26
Definition ParticleModuleBeamTarget.h:25
Definition ParticleModuleOrientationAxisLock.h:42
Definition ParticleModuleSpawnPerUnit.h:17
Definition ParticleModuleSpawn.h:16
Definition ParticleModuleTrailSource.h:41
Definition ParticleModuleTypeDataAnimTrail.h:22
Definition ParticleModuleTypeDataBeam2.h:69
Definition ParticleModuleTypeDataMesh.h:63
Definition ParticleModuleTypeDataRibbon.h:27
Definition ParticleModule.h:149
Definition ParticleSpriteEmitter.h:28
Definition VectorField.h:16
Definition SceneComponent.h:24
Type
Definition RHIFeatureLevel.h:20
@ Start
Definition GeoEnum.h:100
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition ParticleTrail2EmitterInstance.cpp:3029
Definition ParticleHelper.h:814
Definition ParticleHelper.h:181
Definition ParticleHelper.h:1265
Definition ParticleHelper.h:1174
Definition ParticleEmitterInstances.h:69
TArray< bool > Fired
Definition ParticleEmitterInstances.h:70
Definition MaterialRelevance.h:13
Definition ParticleHelper.h:938
Definition ParticleEmitterInstances.h:1701
float Width
Definition ParticleEmitterInstances.h:1721
UParticleModuleSpawnPerUnit * SpawnPerUnitModule
Definition ParticleEmitterInstances.h:1706
FName FirstSocketName
Definition ParticleEmitterInstances.h:1711
int32 HeadOnlyParticles
Definition ParticleEmitterInstances.h:1752
virtual bool IsTrailEmitter() const override
Definition ParticleEmitterInstances.h:1833
bool bTagTrailAsDead
Definition ParticleEmitterInstances.h:1736
bool bTrailEnabled
Definition ParticleEmitterInstances.h:1741
UParticleModuleTypeDataAnimTrail * TrailTypeData
Definition ParticleEmitterInstances.h:1703
const void * Owner
Definition ParticleEmitterInstances.h:1731
FName SecondSocketName
Definition ParticleEmitterInstances.h:1716
ETrailWidthMode WidthMode
Definition ParticleEmitterInstances.h:1726
Definition ParticleEmitterInstances.h:992
TArray< float > UserSetTargetStrengthArray
Definition ParticleEmitterInstances.h:1029
TArray< int32 > BeamTrianglesPerSheet
Definition ParticleEmitterInstances.h:1044
virtual void OnEmitterInstanceKilled(FParticleEmitterInstance *Instance) override
Definition ParticleEmitterInstances.h:1143
TArray< FVector > TargetTangentArray
Definition ParticleEmitterInstances.h:1027
int32 BeamCount
Definition ParticleEmitterInstances.h:1011
int32 ForceSpawnCount
Definition ParticleEmitterInstances.h:1005
UParticleModuleBeamSource * BeamModule_Source
Definition ParticleEmitterInstances.h:995
int32 BeamModule_SourceModifier_Offset
Definition ParticleEmitterInstances.h:999
TArray< FVector > UserSetSourceTangentArray
Definition ParticleEmitterInstances.h:1019
UParticleModuleTypeDataBeam2 * BeamTypeData
Definition ParticleEmitterInstances.h:993
AActor * TargetActor
Definition ParticleEmitterInstances.h:1031
TArray< FVector > UserSetTargetTangentArray
Definition ParticleEmitterInstances.h:1039
int32 BeamMethod
Definition ParticleEmitterInstances.h:1007
bool FirstEmission
Definition ParticleEmitterInstances.h:1003
UParticleModuleBeamModifier * BeamModule_SourceModifier
Definition ParticleEmitterInstances.h:998
FParticleEmitterInstance * SourceEmitter
Definition ParticleEmitterInstances.h:1015
TArray< float > UserSetSourceStrengthArray
Definition ParticleEmitterInstances.h:1021
TArray< FVector > TargetPointArray
Definition ParticleEmitterInstances.h:1025
TArray< FVector > UserSetTargetArray
Definition ParticleEmitterInstances.h:1037
TArray< FVector > UserSetSourceArray
Definition ParticleEmitterInstances.h:1017
TArray< FName > TargetPointSourceNames
Definition ParticleEmitterInstances.h:1035
UParticleModuleBeamTarget * BeamModule_Target
Definition ParticleEmitterInstances.h:996
TArray< int32 > TextureTiles
Definition ParticleEmitterInstances.h:1009
FParticleEmitterInstance * TargetEmitter
Definition ParticleEmitterInstances.h:1033
AActor * SourceActor
Definition ParticleEmitterInstances.h:1013
int32 TickCount
Definition ParticleEmitterInstances.h:1004
int32 BeamModule_TargetModifier_Offset
Definition ParticleEmitterInstances.h:1001
int32 TriangleCount
Definition ParticleEmitterInstances.h:1043
TArray< float > DistanceArray
Definition ParticleEmitterInstances.h:1023
UParticleModuleBeamModifier * BeamModule_TargetModifier
Definition ParticleEmitterInstances.h:1000
int32 VertexCount
Definition ParticleEmitterInstances.h:1042
UParticleModuleBeamNoise * BeamModule_Noise
Definition ParticleEmitterInstances.h:997
Definition ParticleEmitterInstances.h:78
FComposableVectorDistribution ColorScale
Definition ParticleEmitterInstances.h:96
uint8 CollisionMode
Definition ParticleEmitterInstances.h:131
FRawDistributionVector DynamicColor
Definition ParticleEmitterInstances.h:101
FVector2D MaxSizeScaleBySpeed
Definition ParticleEmitterInstances.h:117
FVector LocalVectorFieldRotationRate
Definition ParticleEmitterInstances.h:176
FComposableFloatDistribution DragScale
Definition ParticleEmitterInstances.h:125
FComposableFloatDistribution SubImageIndex
Definition ParticleEmitterInstances.h:120
TArray< class UParticleModule * > SpawnModules
Definition ParticleEmitterInstances.h:86
float MaxFacingCameraBlendDistance
Definition ParticleEmitterInstances.h:209
float LocalVectorFieldIntensity
Definition ParticleEmitterInstances.h:168
FComposableFloatDistribution PointAttractorStrength
Definition ParticleEmitterInstances.h:152
FRawDistributionVector DynamicColorScale
Definition ParticleEmitterInstances.h:106
uint32 bLocalVectorFieldUseFixDT
Definition ParticleEmitterInstances.h:202
class UParticleModuleSpawnPerUnit * SpawnPerUnitModule
Definition ParticleEmitterInstances.h:84
float GlobalVectorFieldScale
Definition ParticleEmitterInstances.h:159
float MaxLifetime
Definition ParticleEmitterInstances.h:182
float GlobalVectorFieldTightness
Definition ParticleEmitterInstances.h:161
uint8 CollisionResponse
Definition ParticleEmitterInstances.h:130
FComposableVectorDistribution SizeScale
Definition ParticleEmitterInstances.h:111
float CollisionRandomDistribution
Definition ParticleEmitterInstances.h:139
float MaxRotationRate
Definition ParticleEmitterInstances.h:184
FComposableVectorDistribution OrbitOffset
Definition ParticleEmitterInstances.h:89
FVector LocalVectorFieldMinInitialRotation
Definition ParticleEmitterInstances.h:172
float Friction
Definition ParticleEmitterInstances.h:141
FComposableVectorDistribution OrbitRotationRate
Definition ParticleEmitterInstances.h:93
float CollisionRandomSpread
Definition ParticleEmitterInstances.h:137
bool bEnableCollision
Definition ParticleEmitterInstances.h:128
uint32 bLocalVectorFieldIgnoreComponentTransform
Definition ParticleEmitterInstances.h:194
float PointAttractorRadius
Definition ParticleEmitterInstances.h:150
FComposableFloatDistribution Resilience
Definition ParticleEmitterInstances.h:143
class UVectorField * LocalVectorField
Definition ParticleEmitterInstances.h:164
FParticleEmitterBuildInfo()
Definition ParticleEmitterInstances.cpp:340
FComposableFloatDistribution VectorFieldScale
Definition ParticleEmitterInstances.h:155
FVector2D PivotOffset
Definition ParticleEmitterInstances.h:191
FComposableFloatDistribution VectorFieldScaleOverLife
Definition ParticleEmitterInstances.h:157
FTransform LocalVectorFieldTransform
Definition ParticleEmitterInstances.h:166
int32 EstimatedMaxActiveParticleCount
Definition ParticleEmitterInstances.h:186
uint32 bLocalVectorFieldTileX
Definition ParticleEmitterInstances.h:196
uint32 bLocalVectorFieldTileY
Definition ParticleEmitterInstances.h:198
FRawDistributionFloat DynamicAlpha
Definition ParticleEmitterInstances.h:103
FVector2D MaxSize
Definition ParticleEmitterInstances.h:113
float CollisionRadiusScale
Definition ParticleEmitterInstances.h:133
uint32 bLocalVectorFieldTileZ
Definition ParticleEmitterInstances.h:200
float MinFacingCameraBlendDistance
Definition ParticleEmitterInstances.h:208
uint32 bUseVelocityForMotionBlur
Definition ParticleEmitterInstances.h:204
class UParticleModuleRequired * RequiredModule
Definition ParticleEmitterInstances.h:80
FVector2D SizeScaleBySpeed
Definition ParticleEmitterInstances.h:115
FComposableFloatDistribution DragCoefficient
Definition ParticleEmitterInstances.h:123
FComposableFloatDistribution ResilienceScaleOverLife
Definition ParticleEmitterInstances.h:145
uint32 bRemoveHMDRoll
Definition ParticleEmitterInstances.h:207
float CollisionRadiusBias
Definition ParticleEmitterInstances.h:135
float LocalVectorFieldTightness
Definition ParticleEmitterInstances.h:170
FRawDistributionFloat DynamicAlphaScale
Definition ParticleEmitterInstances.h:108
FVector PointAttractorPosition
Definition ParticleEmitterInstances.h:148
int32 ScreenAlignment
Definition ParticleEmitterInstances.h:188
FComposableVectorDistribution OrbitInitialRotation
Definition ParticleEmitterInstances.h:91
FVector ConstantAcceleration
Definition ParticleEmitterInstances.h:179
FVector LocalVectorFieldMaxInitialRotation
Definition ParticleEmitterInstances.h:174
class UParticleModuleSpawn * SpawnModule
Definition ParticleEmitterInstances.h:82
FComposableFloatDistribution AlphaScale
Definition ParticleEmitterInstances.h:98
Definition ParticleEmitterInstances.h:217
virtual ~FParticleEmitterInstanceFixLayout()=default
Definition ParticleEmitterInstances.h:226
int32 CurrentLODLevelIndex
Definition ParticleEmitterInstances.h:240
int32 LoopCount
Definition ParticleEmitterInstances.h:333
virtual ENGINE_API void ParticlePrefetch()
Definition ParticleEmitterInstances.cpp:1910
virtual ENGINE_API void SetCurrentLODIndex(int32 InLODIndex, bool bInFullyProcess)
Definition ParticleEmitterInstances.cpp:1126
virtual ENGINE_API void PostSpawn(FBaseParticle *Particle, float InterpolationPercentage, float SpawnTime)
Definition ParticleEmitterInstances.cpp:2412
uint8 bKillOnDeactivate
Definition ParticleEmitterInstances.h:267
virtual void SetTrailSourceData(FName InFirstSocketName, FName InSecondSocketName, ETrailWidthMode InWidthMode, float InWidth)
Definition ParticleEmitterInstances.h:730
static ENGINE_API const float PeakActiveParticleUpdateDelta
Definition ParticleEmitterInstances.h:231
ENGINE_API void SpawnParticles(int32 Count, float StartTime, float Increment, const FVector &InitialLocation, const FVector &InitialVelocity, struct FParticleEventInstancePayload *EventPayload)
Definition ParticleEmitterInstances.cpp:2166
ENGINE_API void SetupEmitterDuration()
Definition ParticleEmitterInstances.cpp:2633
virtual bool GetBeamSourcePoint(int32 SourceIndex, FVector &OutSourcePoint) const
Definition ParticleEmitterInstances.h:700
virtual FDynamicEmitterReplayDataBase * GetReplayData()
Definition ParticleEmitterInstances.h:614
int32 PayloadOffset
Definition ParticleEmitterInstances.h:257
virtual ENGINE_API float Tick_SpawnParticles(float DeltaTime, UParticleLODLevel *CurrentLODLevel, bool bSuppressSpawning, bool bFirstTime)
Definition ParticleEmitterInstances.cpp:1036
virtual bool GetBeamTargetStrength(int32 TargetIndex, float &OutTargetStrength) const
Definition ParticleEmitterInstances.h:705
virtual ENGINE_API FBaseParticle * GetParticle(int32 Index)
Definition ParticleEmitterInstances.cpp:2607
int32 CameraPayloadOffset
Definition ParticleEmitterInstances.h:255
ENGINE_API void GetScreenAlignmentAndScale(int32 &OutScreenAlign, FVector &OutScale)
Definition ParticleEmitterInstances.cpp:2993
virtual ENGINE_API uint8 * GetTypeDataModuleInstanceData()
Definition ParticleEmitterInstances.cpp:1574
int32 LightDataOffset
Definition ParticleEmitterInstances.h:250
int32 TypeDataInstanceOffset
Definition ParticleEmitterInstances.h:244
virtual ENGINE_API uint32 CalculateParticleStride(uint32 ParticleSize)
Definition ParticleEmitterInstances.cpp:1590
virtual ENGINE_API FBox GetBoundingBox()
Definition ParticleEmitterInstances.cpp:1221
uint8 bHaltSpawningExternal
Definition ParticleEmitterInstances.h:275
uint8 bFakeBurstsWhenSpawningSupressed
Definition ParticleEmitterInstances.h:285
virtual ENGINE_API void KillParticle(int32 Index)
Definition ParticleEmitterInstances.cpp:2495
int32 GetParticleDirectIndex(int32 InIndex)
Definition ParticleEmitterInstances.h:562
ENGINE_API UMaterialInterface * GetCurrentMaterial()
Definition ParticleEmitterInstances.cpp:3163
ENGINE_API void FixupParticleIndices()
Definition ParticleEmitterInstances.cpp:2116
int32 SubUVDataOffset
Definition ParticleEmitterInstances.h:246
uint8 bIsBeam
Definition ParticleEmitterInstances.h:281
ENGINE_API FParticleRandomSeedInstancePayload * GetModuleRandomSeedInstanceData(UParticleModule *Module)
Definition ParticleEmitterInstances.cpp:1554
virtual void SetBeamEndPoint(FVector NewEndPoint)
Definition ParticleEmitterInstances.h:690
FMatrix EmitterToSimulation
Definition ParticleEmitterInstances.h:261
virtual ENGINE_API void GatherMaterialRelevance(FMaterialRelevance *OutMaterialRelevance, const UParticleLODLevel *LODLevel, ERHIFeatureLevel::Type InFeatureLevel) const
Definition ParticleEmitterInstances.cpp:2897
virtual ENGINE_API bool HasCompleted()
Definition ParticleEmitterInstances.cpp:2380
int32 TypeDataOffset
Definition ParticleEmitterInstances.h:242
virtual ENGINE_API float GetCurrentBurstRateOffset(float &DeltaTime, int32 &Burst)
Definition ParticleEmitterInstances.cpp:1620
virtual ENGINE_API void KillParticlesForced(bool bFireEvents=false)
Definition ParticleEmitterInstances.cpp:2562
int32 EventCount
Definition ParticleEmitterInstances.h:351
UMaterialInterface * CurrentMaterial
Definition ParticleEmitterInstances.h:348
virtual bool GetBeamTargetTangent(int32 TargetIndex, FVector &OutTangentPoint) const
Definition ParticleEmitterInstances.h:704
ENGINE_API void CalculateOrbitOffset(FOrbitChainModuleInstancePayload &Payload, FVector &AccumOffset, FVector &AccumRotation, FVector &AccumRotationRate, float DeltaTime, FVector &Result, FMatrix &RotationMat)
Definition ParticleEmitterInstances.cpp:1735
virtual bool GetBeamSourceStrength(int32 SourceIndex, float &OutSourceStrength) const
Definition ParticleEmitterInstances.h:702
int32 IsRenderDataDirty
Definition ParticleEmitterInstances.h:335
ENGINE_API void UpdateTransforms()
Definition ParticleEmitterInstances.cpp:681
int32 ParticleSize
Definition ParticleEmitterInstances.h:301
virtual void SetBeamSourcePoint(FVector NewSourcePoint, int32 SourceIndex)
Definition ParticleEmitterInstances.h:691
UParticleLODLevel * CurrentLODLevel
Definition ParticleEmitterInstances.h:238
virtual ENGINE_API uint32 RequiredBytes()
Definition ParticleEmitterInstances.cpp:1486
int32 MaxActiveParticles
Definition ParticleEmitterInstances.h:311
uint8 bIgnoreComponentScale
Definition ParticleEmitterInstances.h:279
virtual void BeginTrail()
Definition ParticleEmitterInstances.h:715
float EmitterTime
Definition ParticleEmitterInstances.h:319
virtual ENGINE_API void ResetBurstList()
Definition ParticleEmitterInstances.cpp:1598
virtual ENGINE_API bool IsDynamicDataRequired(UParticleLODLevel *CurrentLODLevel)
Definition ParticleEmitterInstances.cpp:2694
int32 InstancePayloadSize
Definition ParticleEmitterInstances.h:299
virtual ENGINE_API void Rewind()
Definition ParticleEmitterInstances.cpp:1199
int32 MaxVertexIndex
Definition ParticleEmitterInstances.h:345
virtual ENGINE_API void UpdateOrbitData(float DeltaTime)
Definition ParticleEmitterInstances.cpp:1768
int32 TrianglesToRender
Definition ParticleEmitterInstances.h:344
int32 SortMode
Definition ParticleEmitterInstances.h:291
virtual ENGINE_API void ForceUpdateBoundingBox()
Definition ParticleEmitterInstances.cpp:1416
FVector OldLocation
Definition ParticleEmitterInstances.h:327
uint16 * ParticleIndices
Definition ParticleEmitterInstances.h:295
TArray< struct FLODBurstFired > BurstFired
Definition ParticleEmitterInstances.h:331
virtual ENGINE_API float Tick_EmitterTimeSetup(float DeltaTime, UParticleLODLevel *CurrentLODLevel)
Definition ParticleEmitterInstances.cpp:925
virtual bool IsMeshRotationActive() const
Definition ParticleEmitterInstances.h:659
virtual bool GetBeamSourceTangent(int32 SourceIndex, FVector &OutTangentPoint) const
Definition ParticleEmitterInstances.h:701
uint8 bHaltSpawning
Definition ParticleEmitterInstances.h:273
virtual ENGINE_API void ForceSpawn(float DeltaTime, int32 InSpawnCount, int32 InBurstCount, FVector &InLocation, FVector &InVelocity)
Definition ParticleEmitterInstances.cpp:2292
ENGINE_API int32 GetOrbitPayloadOffset()
Definition ParticleEmitterInstances.cpp:1226
int32 MaxEventCount
Definition ParticleEmitterInstances.h:352
virtual void SetHaltSpawning(bool bInHaltSpawning)
Definition ParticleEmitterInstances.h:531
void SetFakeBurstWhenSpawningSupressed(bool bInFakeBurstsWhenSpawningSupressed)
Definition ParticleEmitterInstances.h:542
uint8 bAxisLockEnabled
Definition ParticleEmitterInstances.h:283
ENGINE_API void CheckSpawnCount(int32 InNewCount, int32 InMaxCount)
Definition ParticleEmitterInstances.cpp:1918
float SpawnFraction
Definition ParticleEmitterInstances.h:313
FVector2D PivotOffset
Definition ParticleEmitterInstances.h:359
virtual ENGINE_API bool FillReplayData(FDynamicEmitterReplayDataBase &OutData)
Definition ParticleEmitterInstances.cpp:2782
virtual ENGINE_API FBaseParticle * GetParticleDirect(int32 InDirectIndex)
Definition ParticleEmitterInstances.cpp:2620
float CurrentDelay
Definition ParticleEmitterInstances.h:341
ENGINE_API uint8 * GetModuleInstanceData(UParticleModule *Module)
Definition ParticleEmitterInstances.cpp:1538
uint8 * ParticleData
Definition ParticleEmitterInstances.h:293
uint32 ParticleCounter
Definition ParticleEmitterInstances.h:307
int32 DynamicParameterDataOffset
Definition ParticleEmitterInstances.h:248
virtual int32 GetMeshRotationOffset() const
Definition ParticleEmitterInstances.h:651
virtual ENGINE_API bool Resize(int32 NewMaxActiveParticles, bool bSetMaxActiveCount=true)
Definition ParticleEmitterInstances.cpp:720
uint8 bRequiresLoopNotification
Definition ParticleEmitterInstances.h:277
FVector PositionOffsetThisTick
Definition ParticleEmitterInstances.h:356
virtual ENGINE_API void ApplyWorldOffset(FVector InOffset, bool bWorldShift)
Definition ParticleEmitterInstances.cpp:2928
virtual void GetAllocatedSize(int32 &OutNum, int32 &OutMax)
Definition ParticleEmitterInstances.h:625
ENGINE_API void FakeBursts()
Definition ParticleEmitterInstances.cpp:2532
virtual void OnDeactivateSystem()
Definition ParticleEmitterInstances.h:644
virtual ENGINE_API void UpdateBoundingBox(float DeltaTime)
Definition ParticleEmitterInstances.cpp:1270
virtual void SetBeamSourceStrength(float NewSourceStrength, int32 SourceIndex)
Definition ParticleEmitterInstances.h:693
float LastDeltaTime
Definition ParticleEmitterInstances.h:321
float EmitterDuration
Definition ParticleEmitterInstances.h:337
virtual void OnEmitterInstanceKilled(FParticleEmitterInstance *Instance)
Definition ParticleEmitterInstances.h:684
virtual ENGINE_API void ProcessParticleEvents(float DeltaTime, bool bSuppressSpawning)
Definition ParticleEmitterInstances.cpp:2714
UParticleEmitter * SpriteTemplate
Definition ParticleEmitterInstances.h:234
virtual ENGINE_API float Spawn(float DeltaTime)
Definition ParticleEmitterInstances.cpp:1964
FMatrix SimulationToWorld
Definition ParticleEmitterInstances.h:263
virtual FDynamicEmitterDataBase * GetDynamicData(bool bSelected, ERHIFeatureLevel::Type InFeatureLevel)
Definition ParticleEmitterInstances.h:604
virtual bool IsTrailEmitter() const
Definition ParticleEmitterInstances.h:710
uint8 * InstanceData
Definition ParticleEmitterInstances.h:297
ENGINE_API uint32 GetModuleDataOffset(UParticleModule *Module)
Definition ParticleEmitterInstances.cpp:1530
FVector Location
Definition ParticleEmitterInstances.h:259
TArray< class UPointLightComponent * > HighQualityLights
Definition ParticleEmitterInstances.h:361
int32 ParticleStride
Definition ParticleEmitterInstances.h:303
virtual bool GetBeamTargetPoint(int32 TargetIndex, FVector &OutTargetPoint) const
Definition ParticleEmitterInstances.h:703
TEnumAsByte< EParticleAxisLock > LockAxisFlags
Definition ParticleEmitterInstances.h:289
ENGINE_API bool UseLocalSpace()
Definition ParticleEmitterInstances.cpp:2987
virtual ENGINE_API void ResetParticleParameters(float DeltaTime)
Definition ParticleEmitterInstances.cpp:1675
TArray< float > EmitterDurations
Definition ParticleEmitterInstances.h:339
virtual ENGINE_API void KillParticles()
Definition ParticleEmitterInstances.cpp:2436
uint8 bEnabled
Definition ParticleEmitterInstances.h:265
ENGINE_API FVector GetParticleLocationWithOrbitOffset(FBaseParticle *Particle)
Definition ParticleEmitterInstances.cpp:1249
bool HasActiveParticles()
Definition ParticleEmitterInstances.h:589
virtual void SetBeamTargetPoint(FVector NewTargetPoint, int32 TargetIndex)
Definition ParticleEmitterInstances.h:694
virtual bool GetBeamEndPoint(FVector &OutEndPoint) const
Definition ParticleEmitterInstances.h:699
virtual void SetMeshMaterials(const TArray< UMaterialInterface * > &InMaterials)
Definition ParticleEmitterInstances.h:668
int32 ActiveParticles
Definition ParticleEmitterInstances.h:305
ENGINE_API void CheckEmitterFinished()
Definition ParticleEmitterInstances.cpp:881
uint8 bEmitterIsDone
Definition ParticleEmitterInstances.h:287
virtual ENGINE_API ~FParticleEmitterInstance()
Definition ParticleEmitterInstances.cpp:452
virtual void GetResourceSizeEx(FResourceSizeEx &CumulativeResourceSize)
Definition ParticleEmitterInstances.h:632
virtual ENGINE_API void Tick_ModuleUpdate(float DeltaTime, UParticleLODLevel *CurrentLODLevel)
Definition ParticleEmitterInstances.cpp:1065
ENGINE_API class UParticleLODLevel * GetCurrentLODLevelChecked()
Definition ParticleEmitterInstances.cpp:2273
float LightVolumetricScatteringIntensity
Definition ParticleEmitterInstances.h:251
FBox ParticleBoundingBox
Definition ParticleEmitterInstances.h:329
IParticleEmitterInstanceOwner & Component
Definition ParticleEmitterInstances.h:236
uint8 bKillOnCompleted
Definition ParticleEmitterInstances.h:269
virtual ENGINE_API void PreSpawn(FBaseParticle *Particle, const FVector &InitialLocation, const FVector &InitialVelocity)
Definition ParticleEmitterInstances.cpp:2356
virtual ENGINE_API void Tick_MaterialOverrides(int32 EmitterIndex)
Definition ParticleEmitterInstances.cpp:2942
virtual ENGINE_API void Tick_ModuleFinalUpdate(float DeltaTime, UParticleLODLevel *CurrentLODLevel)
Definition ParticleEmitterInstances.cpp:1100
virtual ENGINE_API void Tick_ModulePostUpdate(float DeltaTime, UParticleLODLevel *CurrentLODLevel)
Definition ParticleEmitterInstances.cpp:1085
virtual void SetBeamSourceTangent(FVector NewTangentPoint, int32 SourceIndex)
Definition ParticleEmitterInstances.h:692
virtual void SetBeamTargetStrength(float NewTargetStrength, int32 TargetIndex)
Definition ParticleEmitterInstances.h:696
virtual ENGINE_API void InitParameters(UParticleEmitter *InTemplate)
Definition ParticleEmitterInstances.cpp:479
virtual void EndTrail()
Definition ParticleEmitterInstances.h:720
float SecondsSinceCreation
Definition ParticleEmitterInstances.h:317
virtual void SetBeamTargetTangent(FVector NewTangentPoint, int32 TargetIndex)
Definition ParticleEmitterInstances.h:695
uint8 bRequiresSorting
Definition ParticleEmitterInstances.h:271
virtual void SetHaltSpawningExternal(bool bInHaltSpawning)
Definition ParticleEmitterInstances.h:537
int32 OrbitModuleOffset
Definition ParticleEmitterInstances.h:253
virtual ENGINE_API void Init()
Definition ParticleEmitterInstances.cpp:490
Definition ParticleHelper.h:987
Definition ParticleEmitterInstances.h:891
virtual ENGINE_API void GetAllocatedSize(int32 &OutNum, int32 &OutMax) override
Definition ParticleEmitterInstances.cpp:3746
virtual ENGINE_API bool IsDynamicDataRequired(UParticleLODLevel *CurrentLODLevel) override
Definition ParticleEmitterInstances.cpp:3661
UParticleModuleTypeDataMesh * MeshTypeData
Definition ParticleEmitterInstances.h:892
virtual ENGINE_API bool Resize(int32 NewMaxActiveParticles, bool bSetMaxActiveCount=true) override
Definition ParticleEmitterInstances.cpp:3225
virtual int32 GetMeshRotationOffset() const override
Definition ParticleEmitterInstances.h:941
virtual ENGINE_API void Tick_MaterialOverrides(int32 EmitterIndex) override
Definition ParticleEmitterInstances.cpp:3376
bool MeshRotationActive
Definition ParticleEmitterInstances.h:893
virtual ENGINE_API void GetResourceSizeEx(FResourceSizeEx &CumulativeResourceSize) override
Definition ParticleEmitterInstances.cpp:3764
ENGINE_API void GetMeshMaterials(TArray< UMaterialInterface *, TInlineAllocator< 2 > > &OutMaterials, const UParticleLODLevel *LODLevel, ERHIFeatureLevel::Type InFeatureLevel, bool bLogWarnings=false) const
Definition ParticleEmitterInstances.cpp:3812
virtual ENGINE_API uint32 RequiredBytes() override
Definition ParticleEmitterInstances.cpp:3571
virtual ENGINE_API void UpdateBoundingBox(float DeltaTime) override
Definition ParticleEmitterInstances.cpp:3434
virtual ENGINE_API void Init() override
Definition ParticleEmitterInstances.cpp:3211
virtual ENGINE_API bool FillReplayData(FDynamicEmitterReplayDataBase &OutData) override
Definition ParticleEmitterInstances.cpp:3890
virtual ENGINE_API void SetMeshMaterials(const TArray< UMaterialInterface * > &InMaterials) override
Definition ParticleEmitterInstances.cpp:3780
int32 MeshRotationOffset
Definition ParticleEmitterInstances.h:894
virtual ENGINE_API FDynamicEmitterDataBase * GetDynamicData(bool bSelected, ERHIFeatureLevel::Type InFeatureLevel) override
Definition ParticleEmitterInstances.cpp:3676
virtual ENGINE_API void PostSpawn(FBaseParticle *Particle, float InterpolationPercentage, float SpawnTime) override
Definition ParticleEmitterInstances.cpp:3598
virtual ENGINE_API void GatherMaterialRelevance(FMaterialRelevance *OutMaterialRelevance, const UParticleLODLevel *LODLevel, ERHIFeatureLevel::Type InFeatureLevel) const override
Definition ParticleEmitterInstances.cpp:3790
virtual ENGINE_API void InitParameters(UParticleEmitter *InTemplate) override
Definition ParticleEmitterInstances.cpp:3192
virtual bool IsMeshRotationActive() const override
Definition ParticleEmitterInstances.h:949
TArray< UMaterialInterface * > CurrentMaterials
Definition ParticleEmitterInstances.h:898
virtual ENGINE_API FDynamicEmitterReplayDataBase * GetReplayData() override
Definition ParticleEmitterInstances.cpp:3721
int32 MeshMotionBlurOffset
Definition ParticleEmitterInstances.h:895
Definition ParticleHelper.h:1036
Definition ParticleEmitterInstances.h:1514
TArray< FQuat > CurrentSourceRotation
Definition ParticleEmitterInstances.h:1529
TArray< FQuat > LastSourceRotation
Definition ParticleEmitterInstances.h:1539
TArray< int32 > SourceIndices
Definition ParticleEmitterInstances.h:1555
TArray< FVector > LastSourceTangent
Definition ParticleEmitterInstances.h:1543
TArray< float > SourceTimes
Definition ParticleEmitterInstances.h:1557
TArray< FVector > CurrentSourceUp
Definition ParticleEmitterInstances.h:1531
TArray< FVector > LastSourceUp
Definition ParticleEmitterInstances.h:1541
TArray< float > CurrentSourceTangentStrength
Definition ParticleEmitterInstances.h:1535
int32 HeadOnlyParticles
Definition ParticleEmitterInstances.h:1570
TArray< FVector > LastSourcePosition
Definition ParticleEmitterInstances.h:1537
virtual void OnEmitterInstanceKilled(FParticleEmitterInstance *Instance) override
Definition ParticleEmitterInstances.h:1673
UParticleModuleTypeDataRibbon * TrailTypeData
Definition ParticleEmitterInstances.h:1516
TArray< float > CurrentLifetimes
Definition ParticleEmitterInstances.h:1561
TArray< float > CurrentSizes
Definition ParticleEmitterInstances.h:1563
TArray< float > LastSourceTimes
Definition ParticleEmitterInstances.h:1559
UParticleModuleTrailSource * SourceModule
Definition ParticleEmitterInstances.h:1522
TArray< FVector > CurrentSourceTangent
Definition ParticleEmitterInstances.h:1533
TArray< float > LastSourceTangentStrength
Definition ParticleEmitterInstances.h:1545
int32 LastSelectedParticleIndex
Definition ParticleEmitterInstances.h:1553
FParticleEmitterInstance * SourceEmitter
Definition ParticleEmitterInstances.h:1551
TArray< FVector > CurrentSourcePosition
Definition ParticleEmitterInstances.h:1527
AActor * SourceActor
Definition ParticleEmitterInstances.h:1547
TArray< FVector > SourceOffsets
Definition ParticleEmitterInstances.h:1549
int32 TrailModule_Source_Offset
Definition ParticleEmitterInstances.h:1524
UParticleModuleSpawnPerUnit * SpawnPerUnitModule
Definition ParticleEmitterInstances.h:1519
Definition ParticleEmitterInstances.h:839
virtual ~FParticleSpriteEmitterInstance()
Definition ParticleEmitterInstances.cpp:3016
virtual void GetAllocatedSize(int32 &OutNum, int32 &OutMax) override
Definition ParticleEmitterInstances.cpp:3092
virtual bool FillReplayData(FDynamicEmitterReplayDataBase &OutData) override
Definition ParticleEmitterInstances.cpp:3137
virtual FDynamicEmitterDataBase * GetDynamicData(bool bSelected, ERHIFeatureLevel::Type InFeatureLevel) override
Definition ParticleEmitterInstances.cpp:3030
virtual void GetResourceSizeEx(FResourceSizeEx &CumulativeResourceSize) override
Definition ParticleEmitterInstances.cpp:3110
virtual FDynamicEmitterReplayDataBase * GetReplayData() override
Definition ParticleEmitterInstances.cpp:3067
Definition ParticleEmitterInstances.h:1176
virtual ~FParticleTrailsEmitterInstance_Base()
Definition ParticleEmitterInstances.h:1422
virtual void PrintTrails()
Definition ParticleEmitterInstances.h:1510
bool CheckForCircularTrail(FBaseParticle *StartParticle, FBaseParticle *CheckParticle)
Definition ParticleEmitterInstances.h:1381
EGetTrailDirection
Definition ParticleEmitterInstances.h:1470
@ GET_Prev
Definition ParticleEmitterInstances.h:1471
uint32 bFirstUpdate
Definition ParticleEmitterInstances.h:1201
virtual void SetupTrailModules()
Definition ParticleEmitterInstances.h:1453
TArray< float > TrailSpawnTimes
Definition ParticleEmitterInstances.h:1193
EGetTrailParticleOption
Definition ParticleEmitterInstances.h:1475
@ GET_End
Definition ParticleEmitterInstances.h:1480
@ GET_Any
Definition ParticleEmitterInstances.h:1476
@ GET_Spawned
Definition ParticleEmitterInstances.h:1477
@ GET_Interpolated
Definition ParticleEmitterInstances.h:1478
@ GET_Start
Definition ParticleEmitterInstances.h:1479
int32 TrailCount
Definition ParticleEmitterInstances.h:1182
int32 MaxTrailCount
Definition ParticleEmitterInstances.h:1184
void CheckAllIndices()
Definition ParticleEmitterInstances.h:1375
void SetStartIndex(int32 TrailIndex, int32 ParticleIndex)
Definition ParticleEmitterInstances.h:1370
void ClearIndices(int32 TrailIndex, int32 ParticleIndex)
Definition ParticleEmitterInstances.h:1373
TArray< float > LastSpawnTime
Definition ParticleEmitterInstances.h:1195
float LastTickTime
Definition ParticleEmitterInstances.h:1188
void GetTrailEnd(const int32 TrailIdx, int32 &OutEndIndex, TrailDataType *&OutTrailData, FBaseParticle *&OutParticle)
Definition ParticleEmitterInstances.h:1351
int32 VertexCount
Definition ParticleEmitterInstances.h:1178
virtual void PrintAllActiveParticles()
Definition ParticleEmitterInstances.h:1508
void GetTrailStart(const int32 TrailIdx, int32 &OutStartIndex, TrailDataType *&OutTrailData, FBaseParticle *&OutParticle)
Definition ParticleEmitterInstances.h:1332
void SetEndIndex(int32 TrailIndex, int32 ParticleIndex)
Definition ParticleEmitterInstances.h:1371
uint32 bDeadTrailsOnDeactivate
Definition ParticleEmitterInstances.h:1190
void SetDeadIndex(int32 TrailIndex, int32 ParticleIndex)
Definition ParticleEmitterInstances.h:1372
float RunningTime
Definition ParticleEmitterInstances.h:1186
int32 TriangleCount
Definition ParticleEmitterInstances.h:1180
void CheckIndices(int32 TrailIdx)
Definition ParticleEmitterInstances.h:1374
uint32 bEnableInactiveTimeTracking
Definition ParticleEmitterInstances.h:1208
TArray< float > TiledUDistanceTraveled
Definition ParticleEmitterInstances.h:1199
FParticleTrailsEmitterInstance_Base(IParticleEmitterInstanceOwner &InComponent)
Definition ParticleEmitterInstances.h:1395
virtual void PrintParticleData(FBaseParticle *Particle, FTrailsBaseTypeDataPayload *TrailData, int32 CurrentIndex, int32 TrailIndex)
Definition ParticleEmitterInstances.h:1506
TArray< float > SourceDistanceTraveled
Definition ParticleEmitterInstances.h:1197
Definition DistributionFloat.h:28
Definition DistributionVector.h:59
Definition ResourceSize.h:31
Definition ParticleHelper.h:803
Definition ParticleEmitterInstances.h:825
FScopeCycleCounterEmitter(const FParticleEmitterInstance *Object, TStatId OtherStat)
Definition ParticleEmitterInstances.h:829
FScopeCycleCounterEmitter(const FParticleEmitterInstance *Object)
Definition ParticleEmitterInstances.h:826
Definition ParticleHelper.h:757
Definition LightweightStats.h:416