15template <
typename T,
bool>
35 auto Requires(
typename T::TPayloadType) ->void;
41template <
typename T,
int d>
52template <
typename T,
int d>
58template<
class OBJECT_ARRAY,
class LEAF_TYPE,
class T = FReal,
int d = 3>
93 MObjects =
Other.MObjects;
94 MGlobalObjects =
Other.MGlobalObjects;
95 MWorldSpaceBoxes =
Other.MWorldSpaceBoxes;
96 MMaxLevels =
Other.MMaxLevels;
97 Elements =
Other.Elements;
104 MObjects =
Other.MObjects;
107 MMaxLevels =
Other.MMaxLevels;
126 template<
class T_INTERSECTION>
137 return MGlobalObjects;
143 template<
typename TVisitor>
148 VisitAllIntersectionsRecursive(Elements[0], LocalBounds, Visitor);
161 return MGlobalObjects;
167#if !UE_BUILD_SHIPPING
181 UE_LOG(
LogChaos,
Verbose,
TEXT(
"%sNode has Box: (%f, %f, %f) to (%f, %f, %f) with %d Children"), *Prefix,
MyNode->MMin[0],
MyNode->MMin[1],
MyNode->MMin[2],
MyNode->MMax[0],
MyNode->MMax[1],
MyNode->MMax[2],
MyNode->MChildren.Num());
184 PrintTree(Prefix +
" ", &Elements[
Child]);
188 template<
typename TVisitor>
197 if (
MyNode.MChildren.Num() == 0)
215 template <
typename QUERY_OBJECT>
232template<
class OBJECT_ARRAY,
class LEAF_TYPE,
class T,
int d>
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
return true
Definition ExternalRpcRegistry.cpp:601
#define UE_LOG(CategoryName, Verbosity, Format,...)
Definition LogMacros.h:270
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition ChaosArchive.h:167
Definition ISpatialAcceleration.h:166
Definition ISpatialAcceleration.h:267
virtual void DeepAssign(const ISpatialAcceleration< TPayloadType, T, d > &Other)
Definition ISpatialAcceleration.h:344
Definition BoundingVolumeHierarchy.h:60
TBoundingVolumeHierarchy()
Definition BoundingVolumeHierarchy.h:68
CHAOS_API void Serialize(FArchive &Ar)
Definition BoundingVolumeHierarchy.cpp:696
TBoundingVolumeHierarchy(TBoundingVolumeHierarchy< OBJECT_ARRAY, LEAF_TYPE, T, d > &&Other)
Definition BoundingVolumeHierarchy.h:78
TArray< int32 > FindAllIntersections(const TSpatialRay< T, d > &Ray) const
Definition BoundingVolumeHierarchy.h:154
TBoundingVolumeHierarchy & operator=(TBoundingVolumeHierarchy< OBJECT_ARRAY, LEAF_TYPE, T, d > &&Other)
Definition BoundingVolumeHierarchy.h:102
CHAOS_API const TAABB< T, d > & GetWorldSpaceBoundingBox(const TGeometryParticles< T, d > &InParticles, const int32 Index)
Definition BoundingVolumeHierarchy.cpp:43
TArray< int32 > FindAllIntersectionsImp(const T_INTERSECTION &Intersection) const
Definition BoundingVolumeHierarchy.h:127
TBoundingVolumeHierarchy & operator=(const TBoundingVolumeHierarchy< OBJECT_ARRAY, LEAF_TYPE, T, d > &Other)
Definition BoundingVolumeHierarchy.h:90
static constexpr T DefaultDt
Definition BoundingVolumeHierarchy.h:65
const TArray< int32 > & GlobalObjects() const
Definition BoundingVolumeHierarchy.h:159
virtual void Serialize(FChaosArchive &Ar) override
Definition BoundingVolumeHierarchy.h:173
static constexpr bool DefaultAllowMultipleSplitting
Definition BoundingVolumeHierarchy.h:63
CHAOS_API void UpdateHierarchy(const bool AllowMultipleSplitting=DefaultAllowMultipleSplitting, const bool bUseVelocity=DefaultUseVelocity, const T Dt=DefaultDt)
Definition BoundingVolumeHierarchy.cpp:93
typename TBVHLeafTraits< LEAF_TYPE, TModels_V< CComplexBVHLeaf, LEAF_TYPE > >::TPayloadType TPayloadType
Definition BoundingVolumeHierarchy.h:66
static constexpr int32 DefaultMaxLevels
Definition BoundingVolumeHierarchy.h:62
static constexpr bool DefaultUseVelocity
Definition BoundingVolumeHierarchy.h:64
void Reinitialize(const TArray< uint32 > &ActiveIndices, bool bUseVelocity, T Dt)
Definition BoundingVolumeHierarchy.h:121
void Reinitialize(bool bUseVelocity, T Dt)
Definition BoundingVolumeHierarchy.h:116
void VisitAllIntersections(const FAABB3 &LocalBounds, const TVisitor &Visitor) const
Definition BoundingVolumeHierarchy.h:144
TArray< int32 > FindAllIntersections(const FAABB3 &Box) const
Definition BoundingVolumeHierarchy.h:153
TBoundingVolumeHierarchy(const TBoundingVolumeHierarchy< OBJECT_ARRAY, LEAF_TYPE, T, d > &Other)=delete
virtual void DeepAssign(const ISpatialAcceleration< int32, T, d > &Other) override
Definition BoundingVolumeHierarchy.h:83
TArray< int32 > FindAllIntersections(const TVector< T, d > &Point) const
Definition BoundingVolumeHierarchy.h:155
Definition GeometryParticles.h:152
Definition ISpatialAcceleration.h:78
Definition Archive.h:1208
Definition UnrealString.h.inl:34
Definition SkeletalMeshComponent.h:307
FChaosArchive & operator<<(FChaosArchive &Ar, FRigidParticleControlFlags &Flags)
Definition RigidParticleControlFlags.cpp:15
TAABB< FReal, 3 > FAABB3
Definition ImplicitObject.h:34
@ Visitor
Definition XmppMultiUserChat.h:94
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition BoundingVolumeHierarchy.h:33
auto Requires(typename T::TPayloadType) -> void
Definition BoundingVolumeHierarchy.h:43
TVector< T, d > MMin
Definition BoundingVolumeHierarchy.h:46
~TBVHNode()
Definition BoundingVolumeHierarchy.h:45
TArray< int32 > MChildren
Definition BoundingVolumeHierarchy.h:48
int32 MAxis
Definition BoundingVolumeHierarchy.h:47
TVector< T, d > MMax
Definition BoundingVolumeHierarchy.h:46
int32 LeafIndex
Definition BoundingVolumeHierarchy.h:49
TBVHNode()
Definition BoundingVolumeHierarchy.h:44
typename T::ElementType TPayloadType
Definition BoundingVolumeHierarchy.h:29
typename T::TPayloadType TPayloadType
Definition BoundingVolumeHierarchy.h:23
Definition BoundingVolumeHierarchy.h:17