UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Chaos::TBoundingVolume< InPayloadType, T, d > Class Template Referencefinal

#include <BoundingVolume.h>

+ Inheritance diagram for Chaos::TBoundingVolume< InPayloadType, T, d >:

Public Types

using TPayloadType = InPayloadType
 
using PayloadType = TPayloadType
 
using TType = T
 
- Public Types inherited from Chaos::ISpatialAcceleration< TPayloadType, T, d >
using TPayload = TPayloadType
 

Public Member Functions

 TBoundingVolume ()
 
template<typename ParticleView >
 TBoundingVolume (const ParticleView &Particles, const bool bUseVelocity=false, const T Dt=0, const int32 MaxCells=DefaultMaxCells, const T InMaxPayloadBounds=DefaultMaxPayloadBounds)
 
 TBoundingVolume (TBoundingVolume< TPayloadType, T, d > &&Other)
 
 TBoundingVolume (const TBoundingVolume< TPayloadType, T, d > &Other)
 
virtual void DeepAssign (const ISpatialAcceleration< TPayloadType, T, d > &Other) override
 
TBoundingVolume< TPayloadType, T, d > & operator= (const TBoundingVolume< TPayloadType, T, d > &Other)
 
TBoundingVolume< TPayloadType, T, d > & operator= (TBoundingVolume< TPayloadType, T, d > &&Other)
 
virtual TUniquePtr< ISpatialAcceleration< TPayloadType, T, d > > Copy () const override
 
template<typename ParticleView >
void Reinitialize (const ParticleView &Particles, const bool bUseVelocity=false, const T Dt=0, const int32 MaxCells=DefaultMaxCells)
 
TArray< TPayloadTypeFindAllIntersectionsImp (const TAABB< T, d > &Intersection) const
 
virtual void Reset () override
 
virtual bool RemoveElement (const TPayloadType &Payload) override
 
virtual bool UpdateElement (const TPayloadType &Payload, const TAABB< T, d > &NewBounds, bool bHasBounds) override
 
void UpdateElementWithoutDirty (const TPayloadType &Payload, const TAABB< T, 3 > &NewBounds)
 
void AddElement (const TPayloadBoundsElement< TPayloadType, T > &Payload)
 
void RecomputeBounds (bool bDynamicTree)
 
int32 GetElementCount ()
 
virtual TArray< TPayloadTypeFindAllIntersections (const FAABB3 &Box) const override
 
const TArray< TPayloadBoundsElement< TPayloadType, T > > & GlobalObjects () const
 
virtual void Raycast (const TVector< T, d > &Start, const TVector< T, d > &Dir, const T Length, ISpatialVisitor< TPayloadType, T > &Visitor) const override
 
template<typename SQVisitor >
bool RaycastFast (const TVector< T, d > &Start, FQueryFastData &CurData, SQVisitor &Visitor, const FVec3 &Dir, const FVec3 InvDir, const bool bParallel[3]) const
 
template<typename SQVisitor >
bool RaycastFastSimd (const VectorRegister4Double &Start, FQueryFastData &CurData, SQVisitor &Visitor, const VectorRegister4Double &Dir, const VectorRegister4Double &InvDir, const VectorRegister4Double &Parallel, const VectorRegister4Double &Length) const
 
template<typename SQVisitor , bool bPruneDuplicates = true>
void Raycast (const TVector< T, d > &Start, const TVector< T, d > &Dir, const T Length, SQVisitor &Visitor) const
 
void Sweep (const TVector< T, d > &Start, const TVector< T, d > &Dir, const T Length, const TVector< T, d > QueryHalfExtents, ISpatialVisitor< TPayloadType, T > &Visitor) const override
 
template<typename SQVisitor >
bool SweepFast (const TVector< T, d > &Start, FQueryFastData &CurData, const TVector< T, d > &QueryHalfExtents, SQVisitor &Visitor, const FVec3 &Dir, const FVec3 InvDir, const bool bParallel[3]) const
 
template<typename SQVisitor , bool bPruneDuplicates = true>
void Sweep (const TVector< T, d > &Start, const TVector< T, d > &Dir, const T Length, const TVector< T, d > QueryHalfExtents, SQVisitor &Visitor) const
 
virtual void Overlap (const TAABB< T, d > &QueryBounds, ISpatialVisitor< TPayloadType, T > &Visitor) const override
 
template<typename SQVisitor >
bool OverlapFast (const TAABB< T, d > &QueryBounds, SQVisitor &Visitor) const
 
template<typename SQVisitor , bool bPruneDuplicates = true>
void Overlap (const TAABB< T, d > &QueryBounds, SQVisitor &Visitor) const
 
bool IsLeafDirty () const
 
void SetDirtyState (const bool bDirtyState)
 
virtual void Serialize (FChaosArchive &Ar) override
 
void GatherElements (TArray< TPayloadBoundsElement< TPayloadType, T > > &OutElements) const
 
int32 GetReserveCount () const
 
TAABB< T, d > GetBounds () const
 
- Public Member Functions inherited from Chaos::ISpatialAcceleration< TPayloadType, T, d >
 ISpatialAcceleration (SpatialAccelerationType InType=static_cast< SpatialAccelerationType >(ESpatialAcceleration::Unknown))
 
 ISpatialAcceleration (ESpatialAcceleration InType)
 
virtual ~ISpatialAcceleration ()=default
 
virtual bool IsAsyncTimeSlicingComplete ()
 
virtual void ProgressAsyncTimeSlicing (bool ForceBuildCompletion=false)
 
virtual bool ShouldRebuild ()
 
virtual bool IsTreeDynamic () const
 
virtual void ClearShouldRebuild ()
 
virtual void PrepareCopyTimeSliced (const ISpatialAcceleration< TPayloadType, T, 3 > &InFrom)
 
virtual void ProgressCopyTimeSliced (const ISpatialAcceleration< TPayloadType, T, 3 > &InFrom, int MaximumBytesToCopy)
 
virtual void CacheOverlappingLeaves ()
 
virtual void Raycast (const FVec3 &Start, const FVec3 &Dir, const FReal Length, ISpatialVisitor< TPayloadType, FReal > &Visitor) const
 
virtual void Sweep (const FVec3 &Start, const FVec3 &Dir, const FReal Length, const FVec3 QueryHalfExtents, ISpatialVisitor< TPayloadType, FReal > &Visitor) const
 
virtual void Overlap (const FAABB3 &QueryBounds, ISpatialVisitor< TPayloadType, FReal > &Visitor) const
 
virtual bool RemoveElement (const TPayloadType &Payload)
 
virtual bool NeedUpdateElement (const TPayloadType &Payload, const TAABB< T, 3 > &NewBounds)
 
virtual bool UpdateElement (const TPayloadType &Payload, const TAABB< T, d > &NewBounds, bool bHasBounds)
 
virtual bool RemoveElementFrom (const TPayloadType &Payload, FSpatialAccelerationIdx Idx)
 
virtual bool NeedUpdateElementIn (const TPayloadType &Payload, const TAABB< T, d > &NewBounds, FSpatialAccelerationIdx Idx)
 
virtual bool UpdateElementIn (const TPayloadType &Payload, const TAABB< T, d > &NewBounds, bool bHasBounds, FSpatialAccelerationIdx Idx)
 
virtual void DeepAssign (const ISpatialAcceleration< TPayloadType, T, d > &Other)
 
virtual void DebugDraw (ISpacialDebugDrawInterface< T > *InInterface) const
 
virtual void DebugDrawLeaf (ISpacialDebugDrawInterface< T > &InInterface, const FLinearColor &InLinearColor, float InThickness) const
 
virtual void DumpStats () const
 
virtual void DumpStatsTo (class FOutputDevice &Ar) const
 
SpatialAccelerationType GetType () const
 
template<typename TConcrete >
TConcreteAs ()
 
template<typename TConcrete >
const TConcreteAs () const
 
template<typename TConcrete >
TConcreteAsChecked ()
 
template<typename TConcrete >
const TConcreteAsChecked () const
 
int32 GetSyncTimestamp ()
 
void SetSyncTimestamp (int32 InTimestamp)
 

Static Public Attributes

static constexpr int D = d
 
static constexpr int32 DefaultMaxCells = 15
 
static constexprDefaultMaxPayloadBounds = 100000
 
static constexpr ESpatialAcceleration StaticType = ESpatialAcceleration::BoundingVolume
 

Additional Inherited Members

- Static Public Member Functions inherited from Chaos::ISpatialAcceleration< TPayloadType, T, d >
static ISpatialAcceleration< TPayloadType, T, d > * SerializationFactory (FChaosArchive &Ar, ISpatialAcceleration< TPayloadType, T, d > *Accel)
 
- Protected Member Functions inherited from Chaos::ISpatialAcceleration< TPayloadType, T, d >
virtual void SetAsyncTimeSlicingComplete (bool InState)
 

Member Typedef Documentation

◆ PayloadType

template<typename InPayloadType , typename T = FReal, int d = 3>
using Chaos::TBoundingVolume< InPayloadType, T, d >::PayloadType = TPayloadType

◆ TPayloadType

template<typename InPayloadType , typename T = FReal, int d = 3>
using Chaos::TBoundingVolume< InPayloadType, T, d >::TPayloadType = InPayloadType

◆ TType

template<typename InPayloadType , typename T = FReal, int d = 3>
using Chaos::TBoundingVolume< InPayloadType, T, d >::TType = T

Constructor & Destructor Documentation

◆ TBoundingVolume() [1/4]

template<typename InPayloadType , typename T = FReal, int d = 3>
Chaos::TBoundingVolume< InPayloadType, T, d >::TBoundingVolume ( )
inline

◆ TBoundingVolume() [2/4]

template<typename InPayloadType , typename T = FReal, int d = 3>
template<typename ParticleView >
Chaos::TBoundingVolume< InPayloadType, T, d >::TBoundingVolume ( const ParticleView Particles,
const bool  bUseVelocity = false,
const T  Dt = 0,
const int32  MaxCells = DefaultMaxCells,
const T  InMaxPayloadBounds = DefaultMaxPayloadBounds 
)
inline

◆ TBoundingVolume() [3/4]

template<typename InPayloadType , typename T = FReal, int d = 3>
Chaos::TBoundingVolume< InPayloadType, T, d >::TBoundingVolume ( TBoundingVolume< TPayloadType, T, d > &&  Other)
inline

◆ TBoundingVolume() [4/4]

template<typename InPayloadType , typename T = FReal, int d = 3>
Chaos::TBoundingVolume< InPayloadType, T, d >::TBoundingVolume ( const TBoundingVolume< TPayloadType, T, d > &  Other)
inline

Member Function Documentation

◆ AddElement()

template<typename InPayloadType , typename T = FReal, int d = 3>
void Chaos::TBoundingVolume< InPayloadType, T, d >::AddElement ( const TPayloadBoundsElement< TPayloadType, T > &  Payload)
inline

◆ Copy()

template<typename InPayloadType , typename T = FReal, int d = 3>
virtual TUniquePtr< ISpatialAcceleration< TPayloadType, T, d > > Chaos::TBoundingVolume< InPayloadType, T, d >::Copy ( ) const
inlineoverridevirtual

◆ DeepAssign()

template<typename InPayloadType , typename T = FReal, int d = 3>
virtual void Chaos::TBoundingVolume< InPayloadType, T, d >::DeepAssign ( const ISpatialAcceleration< TPayloadType, T, d > &  Other)
inlineoverridevirtual

◆ FindAllIntersections()

template<typename InPayloadType , typename T = FReal, int d = 3>
virtual TArray< TPayloadType > Chaos::TBoundingVolume< InPayloadType, T, d >::FindAllIntersections ( const FAABB3 Box) const
inlineoverridevirtual

◆ FindAllIntersectionsImp()

template<typename InPayloadType , typename T = FReal, int d = 3>
TArray< TPayloadType > Chaos::TBoundingVolume< InPayloadType, T, d >::FindAllIntersectionsImp ( const TAABB< T, d > &  Intersection) const
inline

◆ GatherElements()

template<typename InPayloadType , typename T = FReal, int d = 3>
void Chaos::TBoundingVolume< InPayloadType, T, d >::GatherElements ( TArray< TPayloadBoundsElement< TPayloadType, T > > &  OutElements) const
inline

◆ GetBounds()

template<typename InPayloadType , typename T = FReal, int d = 3>
TAABB< T, d > Chaos::TBoundingVolume< InPayloadType, T, d >::GetBounds ( ) const
inline

◆ GetElementCount()

template<typename InPayloadType , typename T = FReal, int d = 3>
int32 Chaos::TBoundingVolume< InPayloadType, T, d >::GetElementCount ( )
inline

◆ GetReserveCount()

template<typename InPayloadType , typename T = FReal, int d = 3>
int32 Chaos::TBoundingVolume< InPayloadType, T, d >::GetReserveCount ( ) const
inline

◆ GlobalObjects()

template<typename InPayloadType , typename T = FReal, int d = 3>
const TArray< TPayloadBoundsElement< TPayloadType, T > > & Chaos::TBoundingVolume< InPayloadType, T, d >::GlobalObjects ( ) const
inline

◆ IsLeafDirty()

template<typename InPayloadType , typename T = FReal, int d = 3>
bool Chaos::TBoundingVolume< InPayloadType, T, d >::IsLeafDirty ( ) const
inline

Check if the leaf is dirty (if one of the payload have been updated)

Returns
Dirty boolean that indicates if the leaf is dirty or not

◆ operator=() [1/2]

template<typename InPayloadType , typename T = FReal, int d = 3>
TBoundingVolume< TPayloadType, T, d > & Chaos::TBoundingVolume< InPayloadType, T, d >::operator= ( const TBoundingVolume< TPayloadType, T, d > &  Other)
inline

◆ operator=() [2/2]

template<typename InPayloadType , typename T = FReal, int d = 3>
TBoundingVolume< TPayloadType, T, d > & Chaos::TBoundingVolume< InPayloadType, T, d >::operator= ( TBoundingVolume< TPayloadType, T, d > &&  Other)
inline

◆ Overlap() [1/2]

template<typename InPayloadType , typename T = FReal, int d = 3>
virtual void Chaos::TBoundingVolume< InPayloadType, T, d >::Overlap ( const TAABB< T, d > &  QueryBounds,
ISpatialVisitor< TPayloadType, T > &  Visitor 
) const
inlineoverridevirtual

◆ Overlap() [2/2]

template<typename InPayloadType , typename T = FReal, int d = 3>
template<typename SQVisitor , bool bPruneDuplicates = true>
void Chaos::TBoundingVolume< InPayloadType, T, d >::Overlap ( const TAABB< T, d > &  QueryBounds,
SQVisitor Visitor 
) const
inline

◆ OverlapFast()

template<typename InPayloadType , typename T = FReal, int d = 3>
template<typename SQVisitor >
bool Chaos::TBoundingVolume< InPayloadType, T, d >::OverlapFast ( const TAABB< T, d > &  QueryBounds,
SQVisitor Visitor 
) const
inline

◆ Raycast() [1/2]

template<typename InPayloadType , typename T = FReal, int d = 3>
virtual void Chaos::TBoundingVolume< InPayloadType, T, d >::Raycast ( const TVector< T, d > &  Start,
const TVector< T, d > &  Dir,
const T  Length,
ISpatialVisitor< TPayloadType, T > &  Visitor 
) const
inlineoverridevirtual

◆ Raycast() [2/2]

template<typename InPayloadType , typename T = FReal, int d = 3>
template<typename SQVisitor , bool bPruneDuplicates = true>
void Chaos::TBoundingVolume< InPayloadType, T, d >::Raycast ( const TVector< T, d > &  Start,
const TVector< T, d > &  Dir,
const T  Length,
SQVisitor Visitor 
) const
inline

◆ RaycastFast()

template<typename InPayloadType , typename T = FReal, int d = 3>
template<typename SQVisitor >
bool Chaos::TBoundingVolume< InPayloadType, T, d >::RaycastFast ( const TVector< T, d > &  Start,
FQueryFastData CurData,
SQVisitor Visitor,
const FVec3 Dir,
const FVec3  InvDir,
const bool  bParallel[3] 
) const
inline

◆ RaycastFastSimd()

template<typename InPayloadType , typename T = FReal, int d = 3>
template<typename SQVisitor >
bool Chaos::TBoundingVolume< InPayloadType, T, d >::RaycastFastSimd ( const VectorRegister4Double Start,
FQueryFastData CurData,
SQVisitor Visitor,
const VectorRegister4Double Dir,
const VectorRegister4Double InvDir,
const VectorRegister4Double Parallel,
const VectorRegister4Double Length 
) const
inline

◆ RecomputeBounds()

template<typename InPayloadType , typename T = FReal, int d = 3>
void Chaos::TBoundingVolume< InPayloadType, T, d >::RecomputeBounds ( bool  bDynamicTree)
inline

◆ Reinitialize()

template<typename InPayloadType , typename T = FReal, int d = 3>
template<typename ParticleView >
void Chaos::TBoundingVolume< InPayloadType, T, d >::Reinitialize ( const ParticleView Particles,
const bool  bUseVelocity = false,
const T  Dt = 0,
const int32  MaxCells = DefaultMaxCells 
)
inline

◆ RemoveElement()

template<typename InPayloadType , typename T = FReal, int d = 3>
virtual bool Chaos::TBoundingVolume< InPayloadType, T, d >::RemoveElement ( const TPayloadType Payload)
inlineoverridevirtual

◆ Reset()

template<typename InPayloadType , typename T = FReal, int d = 3>
virtual void Chaos::TBoundingVolume< InPayloadType, T, d >::Reset ( )
inlineoverridevirtual

◆ Serialize()

template<typename InPayloadType , typename T = FReal, int d = 3>
virtual void Chaos::TBoundingVolume< InPayloadType, T, d >::Serialize ( FChaosArchive Ar)
inlineoverridevirtual

◆ SetDirtyState()

template<typename InPayloadType , typename T = FReal, int d = 3>
void Chaos::TBoundingVolume< InPayloadType, T, d >::SetDirtyState ( const bool  bDirtyState)
inline

Set the dirty flag onto the leaf

Parameters
bDirtyStateDirty flag to set

◆ Sweep() [1/2]

template<typename InPayloadType , typename T = FReal, int d = 3>
void Chaos::TBoundingVolume< InPayloadType, T, d >::Sweep ( const TVector< T, d > &  Start,
const TVector< T, d > &  Dir,
const T  Length,
const TVector< T, d >  QueryHalfExtents,
ISpatialVisitor< TPayloadType, T > &  Visitor 
) const
inlineoverride

◆ Sweep() [2/2]

template<typename InPayloadType , typename T = FReal, int d = 3>
template<typename SQVisitor , bool bPruneDuplicates = true>
void Chaos::TBoundingVolume< InPayloadType, T, d >::Sweep ( const TVector< T, d > &  Start,
const TVector< T, d > &  Dir,
const T  Length,
const TVector< T, d >  QueryHalfExtents,
SQVisitor Visitor 
) const
inline

◆ SweepFast()

template<typename InPayloadType , typename T = FReal, int d = 3>
template<typename SQVisitor >
bool Chaos::TBoundingVolume< InPayloadType, T, d >::SweepFast ( const TVector< T, d > &  Start,
FQueryFastData CurData,
const TVector< T, d > &  QueryHalfExtents,
SQVisitor Visitor,
const FVec3 Dir,
const FVec3  InvDir,
const bool  bParallel[3] 
) const
inline

◆ UpdateElement()

template<typename InPayloadType , typename T = FReal, int d = 3>
virtual bool Chaos::TBoundingVolume< InPayloadType, T, d >::UpdateElement ( const TPayloadType Payload,
const TAABB< T, d > &  NewBounds,
bool  bHasBounds 
)
inlineoverridevirtual

◆ UpdateElementWithoutDirty()

template<typename InPayloadType , typename T = FReal, int d = 3>
void Chaos::TBoundingVolume< InPayloadType, T, d >::UpdateElementWithoutDirty ( const TPayloadType Payload,
const TAABB< T, 3 > &  NewBounds 
)
inline

Member Data Documentation

◆ D

template<typename InPayloadType , typename T = FReal, int d = 3>
constexpr int Chaos::TBoundingVolume< InPayloadType, T, d >::D = d
staticconstexpr

◆ DefaultMaxCells

template<typename InPayloadType , typename T = FReal, int d = 3>
constexpr int32 Chaos::TBoundingVolume< InPayloadType, T, d >::DefaultMaxCells = 15
staticconstexpr

◆ DefaultMaxPayloadBounds

template<typename InPayloadType , typename T = FReal, int d = 3>
constexpr T Chaos::TBoundingVolume< InPayloadType, T, d >::DefaultMaxPayloadBounds = 100000
staticconstexpr

◆ StaticType


The documentation for this class was generated from the following file: