UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ParticlesRange.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
5#include "Chaos/Particles.h"
7
8namespace Chaos::Softs
9{
10
38
40{
41 return HashCombine(Index.RangeId, Index.ParticleIndex);
42}
43
44template<typename ParticlesType, typename = typename TEnableIf<TIsDerivedFrom<ParticlesType, TParticles<FSolverReal, 3>>::IsDerived>::Type>
46{
47public:
48
49 TParticlesRange() = default;
50 virtual ~TParticlesRange() = default;
51
59
66
67 bool IsValid() const
68 {
69 return Particles && Offset >= 0 && ((uint32)(Offset + RangeSize) <= Particles->Size());
70 }
71
72 template<typename T>
74 {
75 check(Offset >= 0 && Offset + RangeSize <= Array.Num());
76 return TConstArrayView<T>(Array.GetData() + Offset, RangeSize);
77 }
78
79 template<typename T>
81 {
82 check(Offset >= 0 && Offset + RangeSize <= Array.Num());
83 return TArrayView<T>(Array.GetData() + Offset, RangeSize);
84 }
85
86 const ParticlesType& GetParticles() const { check(Particles); return *Particles; }
87 ParticlesType& GetParticles() { check(Particles); return *Particles; }
88 int32 GetOffset() const { return Offset; }
89 int32 GetRangeSize() const { return RangeSize; }
90 int32 Size() const { return RangeSize; } // So this has same interface as Particles
92 {
93 return (Index >= 0) && (Index < RangeSize);
94 }
95 int32 GetRangeId() const { return RangeId; }
96
97protected:
98
99 ParticlesType* Particles = nullptr;
102 int32 RangeId = INDEX_NONE; // Can be used to identify a Range.
103};
104}
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
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 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ParticlesRange.h:46
int32 GetOffset() const
Definition ParticlesRange.h:88
int32 RangeId
Definition ParticlesRange.h:102
static TParticlesRange AddParticleRange(ParticlesType &InParticles, const int32 InRangeSize, const int32 InRangeId=INDEX_NONE)
Definition ParticlesRange.h:60
bool IsValid() const
Definition ParticlesRange.h:67
ParticlesType * Particles
Definition ParticlesRange.h:99
virtual ~TParticlesRange()=default
ParticlesType & GetParticles()
Definition ParticlesRange.h:87
TParticlesRange(ParticlesType *InParticles, int32 InOffset, int32 InRangeSize, int32 InRangeId=INDEX_NONE)
Definition ParticlesRange.h:52
int32 Size() const
Definition ParticlesRange.h:90
int32 GetRangeId() const
Definition ParticlesRange.h:95
int32 RangeSize
Definition ParticlesRange.h:101
const ParticlesType & GetParticles() const
Definition ParticlesRange.h:86
TArrayView< T > GetArrayView(TArray< T > &Array) const
Definition ParticlesRange.h:80
int32 Offset
Definition ParticlesRange.h:100
bool IsValidIndex(int32 Index) const
Definition ParticlesRange.h:91
int32 GetRangeSize() const
Definition ParticlesRange.h:89
TConstArrayView< T > GetConstArrayView(const TArray< T > &Array) const
Definition ParticlesRange.h:73
Definition ArrayView.h:139
Definition Array.h:670
Definition CollectionEmbeddedSpringConstraintFacade.cpp:6
uint32 GetTypeHash(const FParticleRangeIndex &Index)
Definition ParticlesRange.h:39
U16 Index
Definition radfft.cpp:71
Definition ParticlesRange.h:12
bool operator==(const FParticleRangeIndex &) const =default
FParticleRangeIndex(const int32 InRangeId, const int32 InParticleIndex)
Definition ParticlesRange.h:23
FParticleRangeIndex & operator=(const FParticleRangeIndex &)=default
FParticleRangeIndex & operator=(FParticleRangeIndex &&)=default
int32 ParticleIndex
Definition ParticlesRange.h:14
bool operator<(const FParticleRangeIndex &Other) const
Definition ParticlesRange.h:28
int32 RangeId
Definition ParticlesRange.h:13
FParticleRangeIndex(const FParticleRangeIndex &)=default
FParticleRangeIndex(FParticleRangeIndex &&)=default