UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SimpleGeometryParticles.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
6#include "Chaos/Particles.h"
7#include "Chaos/Rotation.h"
10
11
12namespace Chaos
13{
14 template<class T, int d>
16 {
17 public:
18
20 using TParticles<T,d>::GetX;
21
39
46
47 virtual ~TSimpleGeometryParticles() override
48 {}
49
50 UE_DEPRECATED(5.4, "Use GetR instead")
51 FORCEINLINE const TRotation<T, d> R(const int32 Index) const { return TRotation<T, d>(MR[Index]); }
52 UE_DEPRECATED(5.4, "Use GetR or SetR instead.")
53 FORCEINLINE TRotation<T, d> R(const int32 Index) { return MR[Index]; }
54 FORCEINLINE const TRotation<T, d> GetR(const int32 Index) const { return TRotation<T, d>(MR[Index]); }
56 FORCEINLINE const TRotation<FRealSingle, d> GetRf(const int32 Index) const { return MR[Index]; }
60
61 FORCEINLINE const FImplicitObjectPtr& GetGeometry(const int32 Index) const { return MGeometry[Index]; }
66
67 FORCEINLINE const TArray<FImplicitObjectPtr>& GetAllGeometry() const { return MGeometry; }
69
70 virtual void Serialize(FChaosArchive& Ar)
71 {
73
76 {
80
81 if(Ar.IsLoading())
82 {
83 MGeometry.SetNumUninitialized(LGeometry.Num());
86 {
87 MGeometry[ImplicitIndex++] = ImplicitObjectPtr->CopyGeometry();
88 }
89 }
90 }
91 else
92 {
93 Ar << MGeometry;
94 }
95
97 if (Ar.CustomVer(FUE5ReleaseStreamObjectVersion::GUID) >= FUE5ReleaseStreamObjectVersion::SinglePrecisonParticleDataPT)
98 {
99 Ar << MR;
100 }
101 else
102 {
104 RDouble.Resize(MR.Num());
105 for (int32 Index = 0; Index < MR.Num(); ++Index)
106 {
108 }
109
110 Ar << RDouble;
111
112 MR.Resize(RDouble.Num());
113 for (int32 Index = 0; Index < RDouble.Num(); ++Index)
114 {
116 }
117 }
118 }
119
120 protected:
122 {
123 MGeometry[Index] = InGeometry;
124 }
125
126 private:
128 // MGeometry contains raw ptrs to every entry in both MSharedGeometry and MDynamicGeometry.
129 // It may also contain raw ptrs to geometry which is managed outside of Chaos.
131 };
132
133 template <typename T, int d>
135 {
136 Particles.Serialize(Ar);
137 return Ar;
138 }
139}
140
#define FORCEINLINE
Definition AndroidPlatform.h:140
#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
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ChaosArchive.h:167
Definition ArrayCollectionArray.h:15
void Resize(const int Num) override
Definition ArrayCollectionArray.h:79
int32 AddArray(TArrayCollectionArrayBase *Array)
Definition ArrayCollection.h:36
uint32 Size() const
Definition ArrayCollection.h:66
Definition Particles.h:32
const TVector< T, d > & GetX(const int32 Index) const
Definition Particles.h:156
void Serialize(FArchive &Ar)
Definition Particles.h:122
Definition Rotation.h:41
Definition Serializable.h:10
Definition SimpleGeometryParticles.h:16
virtual void SetGeometryImpl(const int32 Index, const FImplicitObjectPtr &InGeometry)
Definition SimpleGeometryParticles.h:121
TSimpleGeometryParticles(const TSimpleGeometryParticles< T, d > &Other)=delete
FORCEINLINE TArray< TRotation< FRealSingle, d > > & AllR()
Definition SimpleGeometryParticles.h:68
FORCEINLINE void SetRf(const int32 Index, const TRotation< FRealSingle, d > &InR)
Definition SimpleGeometryParticles.h:57
TSimpleGeometryParticles & operator=(TSimpleGeometryParticles< T, d > &&Other)=delete
FORCEINLINE const TRotation< T, d > GetR(const int32 Index) const
Definition SimpleGeometryParticles.h:54
TSimpleGeometryParticles()
Definition SimpleGeometryParticles.h:22
FORCEINLINE const FImplicitObjectPtr & GetGeometry(const int32 Index) const
Definition SimpleGeometryParticles.h:61
const TArrayCollectionArray< TRotation< FRealSingle, d > > & GetR() const
Definition SimpleGeometryParticles.h:58
TSimpleGeometryParticles & operator=(const TSimpleGeometryParticles< T, d > &Other)=delete
virtual void Serialize(FChaosArchive &Ar)
Definition SimpleGeometryParticles.h:70
TArrayCollectionArray< TRotation< FRealSingle, d > > & GetR()
Definition SimpleGeometryParticles.h:59
virtual ~TSimpleGeometryParticles() override
Definition SimpleGeometryParticles.h:47
FORCEINLINE const TRotation< FRealSingle, d > GetRf(const int32 Index) const
Definition SimpleGeometryParticles.h:56
void SetGeometry(const int32 Index, const FImplicitObjectPtr &InGeometry)
Definition SimpleGeometryParticles.h:62
FORCEINLINE const TArray< FImplicitObjectPtr > & GetAllGeometry() const
Definition SimpleGeometryParticles.h:67
TSimpleGeometryParticles(TSimpleGeometryParticles< T, d > &&Other)
Definition SimpleGeometryParticles.h:29
TSimpleGeometryParticles(TParticles< T, d > &&Other)
Definition SimpleGeometryParticles.h:40
FORCEINLINE void SetR(const int32 Index, const TRotation< T, d > &InR)
Definition SimpleGeometryParticles.h:55
virtual CORE_API void UsingCustomVersion(const struct FGuid &Guid)
Definition Archive.cpp:590
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
CORE_API int32 CustomVer(const struct FGuid &Key) const
Definition Archive.cpp:602
Definition Array.h:670
Definition SkeletalMeshComponent.h:307
FChaosArchive & operator<<(FChaosArchive &Ar, FRigidParticleControlFlags &Flags)
Definition RigidParticleControlFlags.cpp:15
U16 Index
Definition radfft.cpp:71
@ RefCountedOImplicitObjects
Definition FortniteValkyrieBranchObjectVersion.h:22
CORE_API static const FGuid GUID
Definition FortniteValkyrieBranchObjectVersion.h:45
CORE_API static const FGuid GUID
Definition UE5ReleaseStreamObjectVersion.h:22