18 class FImplicitBVHObject;
44 UE_DEPRECATED(5.4,
"Please use Combine with an array of implicit object ptrs instead")
112 for (
int32 i = 0; i < Objects.
Num(); ++i)
172 OutFaceIndex = FaceIdx;
185 if (Obj->Overlap(
Point, Thickness))
268 const
FAABB3& LocalBounds,
270 const
int32 RootObjectIndex,
277 const
int32 RootObjectIndex,
284 const
int32 RootObjectIndex,
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
#define ensure( InExpression)
Definition AssertionMacros.h:464
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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 Size
Definition VulkanMemory.cpp:4034
Definition BVHParticles.h:24
Definition ChaosArchive.h:167
Definition ImplicitObjectUnion.h:351
static FORCEINLINE constexpr EImplicitObjectType StaticType()
Definition ImplicitObjectUnion.h:359
void FindAllIntersectingClusteredObjects(TArray< FLargeUnionClusteredImplicitInfo > &Out, const FAABB3 &LocalBounds) const
Definition ImplicitObjectUnion.h:365
CHAOS_API TArray< FPBDRigidParticleHandle * > FindAllIntersectingChildren(const FAABB3 &LocalBounds) const
Definition ImplicitObjectUnion.cpp:567
CHAOS_API FImplicitObjectUnionClustered()
Definition ImplicitObjectUnion.cpp:523
FImplicitObjectUnionClustered(const FImplicitObjectUnionClustered &Other)=delete
virtual ~FImplicitObjectUnionClustered()=default
CHAOS_API const FBVHParticles * GetChildSimplicial(const int32 ChildIndex) const
Definition ImplicitObjectUnion.cpp:612
CHAOS_API const FPBDRigidParticleHandle * FindParticleForImplicitObject(const FImplicitObject *Object) const
Definition ImplicitObjectUnion.cpp:597
Definition ImplicitObjectUnion.h:27
TArray< Chaos::FImplicitObjectPtr > & GetObjects()
Definition ImplicitObjectUnion.h:207
virtual void CacheAllImplicitObjects()
Definition ImplicitObjectUnion.h:151
virtual CHAOS_API int32 CountLeafObjectsInHierarchyImpl() const override final
Definition ImplicitObjectUnion.cpp:244
virtual CHAOS_API bool VisitObjectsImpl(const FRigidTransform3 &ObjectTransform, const int32 RootObjectIndex, int32 &ObjectIndex, int32 &LeafObjectIndex, const FImplicitHierarchyVisitorBool &VisitorFunc) const override final
Definition ImplicitObjectUnion.cpp:308
CHAOS_API void RemoveAt(int32 RemoveIndex)
Definition ImplicitObjectUnion.cpp:134
FImplicitObjectUnion(const FImplicitObjectUnion &Other)=delete
static FORCEINLINE constexpr EImplicitObjectType StaticType()
Definition ImplicitObjectUnion.h:40
virtual CHAOS_API void FindAllIntersectingObjects(TArray< Pair< const FImplicitObject *, FRigidTransform3 > > &Out, const FAABB3 &LocalBounds) const
Definition ImplicitObjectUnion.cpp:203
virtual CHAOS_API ~FImplicitObjectUnion()
virtual CHAOS_API bool IsOverlappingBoundsImpl(const FAABB3 &LocalBounds) const override final
Definition ImplicitObjectUnion.cpp:330
virtual void AccumulateAllImplicitObjects(TArray< Pair< const FImplicitObject *, FRigidTransform3 > > &Out, const FRigidTransform3 &ParentTM) const
Definition ImplicitObjectUnion.h:141
virtual CHAOS_API Chaos::FImplicitObjectPtr DeepCopyGeometry() const
Definition ImplicitObjectUnion.cpp:375
CHAOS_API void DestroyBVH()
Definition ImplicitObjectUnion.cpp:188
virtual CHAOS_API Chaos::FImplicitObjectPtr CopyGeometryWithScale(const FVec3 &Scale) const override
Definition ImplicitObjectUnion.cpp:364
virtual FReal PhiWithNormal(const FVec3 &x, FVec3 &Normal) const override
Definition ImplicitObjectUnion.h:107
const TArray< Chaos::FImplicitObjectPtr > & GetObjects() const
Definition ImplicitObjectUnion.h:204
bool IsLocked() const
Definition ImplicitObjectUnion.h:97
void SetLocked(const bool bInLocked)
Definition ImplicitObjectUnion.h:76
virtual CHAOS_API Chaos::FImplicitObjectPtr DeepCopyGeometryWithScale(const FVec3 &Scale) const override
Definition ImplicitObjectUnion.cpp:386
CHAOS_API void CreateBVH()
Definition ImplicitObjectUnion.cpp:176
int32 GetNumRootObjects() const
Definition ImplicitObjectUnion.h:52
virtual bool Raycast(const FVec3 &StartPoint, const FVec3 &Dir, const FReal Length, const FReal Thickness, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex) const override
Definition ImplicitObjectUnion.h:153
virtual Pair< FVec3, bool > FindClosestIntersectionImp(const FVec3 &StartPoint, const FVec3 &EndPoint, const FReal Thickness) const override
Definition ImplicitObjectUnion.h:244
CHAOS_API void ForEachObject(TFunctionRef< bool(const FImplicitObject &, const FRigidTransform3 &)> Lambda) const
Definition ImplicitObjectUnion.cpp:397
TArray< Chaos::FImplicitObjectPtr > MObjects
Definition ImplicitObjectUnion.h:325
CHAOS_API void RemoveAtSortedIndices(const TArrayView< const int32 > &InIndices)
Definition ImplicitObjectUnion.cpp:149
CHAOS_API void LegacySerializeBVH(FChaosArchive &Ar)
Definition ImplicitObjectUnion.cpp:496
CHAOS_API void SetNumLeafObjects(const int32 InNumLeafObjects)
Definition ImplicitObjectUnion.cpp:167
void SetAllowBVH(const bool bInAllowBVH)
Definition ImplicitObjectUnion.h:64
TUniquePtr< Private::FImplicitBVH > BVH
Definition ImplicitObjectUnion.h:331
virtual CHAOS_API Chaos::FImplicitObjectPtr CopyGeometry() const
Definition ImplicitObjectUnion.cpp:353
CHAOS_API FImplicitObjectUnion()
Definition ImplicitObjectUnion.cpp:59
FFLags Flags
Definition ImplicitObjectUnion.h:333
virtual bool Overlap(const FVec3 &Point, const FReal Thickness) const override
Definition ImplicitObjectUnion.h:181
void SetLockedRecursive(const bool bInLocked)
Definition ImplicitObjectUnion.h:81
virtual uint32 GetTypeHash() const override
Definition ImplicitObjectUnion.h:212
CHAOS_API void RebuildBVH()
Definition ImplicitObjectUnion.cpp:197
virtual CHAOS_API void VisitLeafObjectsImpl(const FRigidTransform3 &ObjectTransform, const int32 RootObjectIndex, int32 &ObjectIndex, int32 &LeafObjectIndex, const FImplicitHierarchyVisitor &VisitorFunc) const override final
Definition ImplicitObjectUnion.cpp:290
virtual bool IsValidGeometry() const
Definition ImplicitObjectUnion.h:196
const Private::FImplicitBVH * GetBVH() const
Definition ImplicitObjectUnion.h:225
bool HasValidBVH() const
Definition ImplicitObjectUnion.cpp:100
CHAOS_API void CheckNotLocked() const
Definition ImplicitObjectUnion.cpp:106
int32 GetNumLeafObjects() const
Definition ImplicitObjectUnion.h:58
virtual const FAABB3 BoundingBox() const override
Definition ImplicitObjectUnion.h:139
int32 NumLeafObjects
Definition ImplicitObjectUnion.h:332
FAABB3 MLocalBoundingBox
Definition ImplicitObjectUnion.h:327
virtual CHAOS_API void VisitOverlappingLeafObjectsImpl(const FAABB3 &LocalBounds, const FRigidTransform3 &ObjectTransform, const int32 RootObjectIndex, int32 &ObjectIndex, int32 &LeafObjectIndex, const FImplicitHierarchyVisitor &VisitorFunc) const override final
Definition ImplicitObjectUnion.cpp:258
virtual CHAOS_API int32 CountObjectsInHierarchyImpl() const override final
Definition ImplicitObjectUnion.cpp:230
Definition ImplicitObject.h:111
virtual FName GetTypeName() const
Definition ImplicitObject.h:414
virtual CHAOS_API bool IsValidGeometry() const
Definition ImplicitObject.cpp:77
Definition ImplicitObjectBVH.h:104
Definition ParticleHandle.h:987
Definition ArrayView.h:139
UE_REWRITE SizeType Num() const
Definition Array.h:1144
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition UniquePtr.h:107
friend UE_FORCEINLINE_HINT uint32 GetTypeHash(const UE_STRING_CLASS &S)
Definition UnrealString.h.inl:2176
bool bChaosUnionBVHEnabled
Definition ImplicitObjectUnion.cpp:19
@ Union
Definition ImplicitObjectType.h:18
@ UnionClustered
Definition ImplicitObjectType.h:28
Definition SkeletalMeshComponent.h:307
uint8 EImplicitObjectType
Definition ImplicitObjectType.h:41
FRealDouble FReal
Definition Real.h:22
Definition OverriddenPropertySet.cpp:45
FAutoConsoleVariableRef CVars[]
Definition MassProcessingPhaseManager.cpp:29
Definition ImplicitObjectUnion.h:337
FLargeUnionClusteredImplicitInfo(const FImplicitObject *InImplicit, const FRigidTransform3 &InTransform, const FBVHParticles *InBVHParticles)
Definition ImplicitObjectUnion.h:338
const FImplicitObject * Implicit
Definition ImplicitObjectUnion.h:345
FRigidTransform3 Transform
Definition ImplicitObjectUnion.h:346
const FBVHParticles * BVHParticles
Definition ImplicitObjectUnion.h:347
static bool IsBaseOf(const EImplicitObjectType InType)
Definition ImplicitObjectUnion.h:389
Definition ImplicitObject.h:83
static bool IsBaseOf(const EImplicitObjectType InType)
Definition ImplicitObject.h:86
Definition NumericLimits.h:41
Definition ImplicitObjectUnion.h:305
uint8 bAllowBVH
Definition ImplicitObjectUnion.h:311
uint8 bHasBVH
Definition ImplicitObjectUnion.h:312
uint8 bIsLocked
Definition ImplicitObjectUnion.h:313
FFLags()
Definition ImplicitObjectUnion.h:307
uint8 Bits
Definition ImplicitObjectUnion.h:315