45template <
typename TConcrete>
49 using T =
typename TConcrete::TType;
51 static constexpr int d = TConcrete::D;
52 static constexpr int D =
d;
126 return MObject->GetDoCollide();
136 return MObject->Raycast(StartPoint, Dir,
Length, Thickness, OutTime, OutPosition, OutNormal, OutFaceIndex);
164 return MObject->Support(Direction, Thickness, VertexIndex);
170 return MObject->SupportScaled(Direction, Thickness,
Scale, VertexIndex);
202 return MObject->GetNestedType();
219 if constexpr (std::is_same_v<TConcrete,FImplicitObject>)
233 if constexpr (std::is_same_v<TConcrete, FImplicitObject>)
246 if constexpr (std::is_same_v<TConcrete, FImplicitObject>)
258 template <
typename QueryGeomType>
259 bool LowLevelSweepGeom(
const QueryGeomType&
B,
const TRigidTransform<T, d>&
BToATM,
const TVector<T, d>& LocalDir,
const T Length,
T& OutTime,
TVector<T, d>& LocalPosition,
TVector<T, d>&
LocalNormal,
int32& OutFaceIndex,
TVector<T, d>& OutFaceNormal,
T Thickness = 0,
bool bComputeMTD =
false)
const
261 return MObject->SweepGeom(
B,
BToATM, LocalDir,
Length, OutTime, LocalPosition,
LocalNormal, OutFaceIndex, OutFaceNormal, Thickness, bComputeMTD);
265 template <
typename QueryGeomType>
271 template <
typename QueryGeomType>
322 return MObject->NumPlaneVertices(PlaneIndex);
370 return MObject->GetVertex(VertexIndex);
375 return MObject->GetCenterOfMass();
445template<
typename TConcrete,
bool bInstanced = true>
449 using T =
typename TConcrete::TType;
451 static constexpr int d = TConcrete::D;
452 static constexpr int D =
d;
504 ensureMsgf((
IsScaled(MObject->GetType()) ==
false),
TEXT(
"Scaled objects should not contain each other."));
524 if constexpr (std::is_same_v<TConcrete, FImplicitObject>)
538 if constexpr (std::is_same_v<TConcrete, FImplicitObject>)
552 if constexpr (std::is_same_v<TConcrete, FImplicitObject>)
565 if constexpr (std::is_same_v<TConcrete, FImplicitObject>)
588 return MObject->GetNestedType();
593 return (MObject->GetRadiusf() > 0.0f) ?
Margin : 0.0f;
598 return (MObject->GetRadiusf() > 0.0f) ?
Margin : 0.0f;
631 OutPosition = StartPoint;
636 else if (NewTime <
Length)
650 template <
typename QueryGeomType>
651 bool LowLevelSweepGeom(
const QueryGeomType&
B,
const TRigidTransform<T, d>&
BToATM,
const TVector<T, d>& LocalDir,
const T Length,
T& OutTime,
TVector<T, d>& LocalPosition,
TVector<T, d>&
LocalNormal,
int32& OutFaceIndex,
TVector<T, d>& OutFaceNormal,
T Thickness = 0,
bool bComputeMTD =
false)
const
671 if (MObject->SweepGeom(
B,
BToATMNoScale,
UnscaledDir,
UnscaledLength,
UnscaledTime,
UnscaledPosition,
UnscaledNormal, OutFaceIndex, OutFaceNormal, Thickness, bComputeMTD,
MScale))
689 template <
typename QueryGeomType>
690 bool LowLevelSweepGeomCCD(
const QueryGeomType&
B,
const TRigidTransform<T, d>&
BToATM,
const TVector<T, d>& LocalDir,
const T Length,
const FReal IgnorePenetration,
const FReal TargetPenetration,
T&
OutTOI,
T& OutPhi,
TVector<T, d>& LocalPosition,
TVector<T, d>&
LocalNormal,
int32& OutFaceIndex,
TVector<T, d>& OutFaceNormal)
const
710 if (MObject->SweepGeomCCD(
B,
BToATMNoScale,
UnscaledDir,
UnscaledLength, IgnorePenetration, TargetPenetration, TOI, Phi,
UnscaledPosition,
UnscaledNormal, OutFaceIndex, OutFaceNormal,
MScale))
726 template <
typename QueryGeomType>
741 template <
typename QueryGeomType>
754 return MObject->GetMostOpposingPlaneScaled(
Normal,
MScale);
794 return MObject->NumPlaneVertices(PlaneIndex);
815 return MObject->NumPlanes();
820 return MObject->NumEdges();
825 return MObject->NumVertices();
981 return MScale * MObject->GetCenterOfMass();
986 return MObject->GetRotationOfMass();
1020 return MObject->GetMaterialIndex(
HintIndex);
1047 friend FImplicitObject;
1064 ensureMsgf((
IsScaled(MObject->GetType()) ==
false),
TEXT(
"Scaled objects should not contain each other."));
1066 switch (MObject->GetType())
1089 template <
typename QueryGeomType>
1095 template <
typename QueryGeomType>
1105template <
typename TConcrete>
1108template <
typename T,
int d>
1111template<
typename TConcrete>
#define check(expr)
Definition AssertionMacros.h:314
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
#define ensure( InExpression)
Definition AssertionMacros.h:464
#define CHAOS_ENSURE(Condition)
Definition ChaosCheck.h:22
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define FORCEINLINE_DEBUGGABLE
Definition CoreMiscDefines.h:74
#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
ESPMode
Definition SharedPointerFwd.h:12
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
FORCEINLINE VectorRegister4Float MakeVectorRegister(uint32 X, uint32 Y, uint32 Z, uint32 W)
Definition UnrealMathFPU.h:195
FORCEINLINE void VectorStoreFloat3(const VectorRegister4Float &Vec, float *Dst)
Definition UnrealMathFPU.h:594
FORCEINLINE VectorRegister4Float MakeVectorRegisterFloatFromDouble(const VectorRegister4Double &Vec4d)
Definition UnrealMathFPU.h:262
#define UE_SMALL_NUMBER
Definition UnrealMathUtility.h:130
#define UE_KINDA_SMALL_NUMBER
Definition UnrealMathUtility.h:131
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition ChaosArchive.h:364
Definition ChaosArchive.h:167
Definition ImplicitObjectScaled.h:21
virtual TSerializablePtr< FImplicitObject > GetInnerObject() const
Definition ImplicitObjectScaled.h:29
FImplicitObjectInstanced(int32 Flags, EImplicitObjectType InType)
Definition ImplicitObjectScaled.h:23
FRealSingle OuterMargin
Definition ImplicitObjectScaled.h:42
FORCEINLINE FReal GetWindingOrder() const
Definition ImplicitObjectScaled.h:35
Definition ImplicitObjectScaled.h:398
FAABB3 MLocalBoundingBox
Definition ImplicitObjectScaled.h:442
const FVec3 GetInvScale() const
Definition ImplicitObjectScaled.h:428
FVec3f MInvScale
Definition ImplicitObjectScaled.h:440
FVec3f MScale
Definition ImplicitObjectScaled.h:439
const FVec3 GetScale() const
Definition ImplicitObjectScaled.h:422
virtual TSerializablePtr< FImplicitObject > GetInnerObject() const
Definition ImplicitObjectScaled.h:409
virtual const FAABB3 BoundingBox() const override
Definition ImplicitObjectScaled.h:433
FImplicitObjectScaled(int32 Flags, EImplicitObjectType InType)
Definition ImplicitObjectScaled.h:400
FRealSingle OuterMargin
Definition ImplicitObjectScaled.h:441
FORCEINLINE FReal GetWindingOrder() const
Definition ImplicitObjectScaled.h:415
Definition ImplicitObject.h:111
FRealSingle Margin
Definition ImplicitObject.h:571
bool HasBoundingBox() const
Definition ImplicitObject.h:275
EImplicitObjectType Type
Definition ImplicitObject.h:585
bool bDoCollide
Definition ImplicitObject.h:573
virtual FName GetTypeName() const
Definition ImplicitObject.h:414
CHAOS_API void SerializeImp(FArchive &Ar)
Definition ImplicitObject.cpp:337
CHAOS_API EImplicitObjectType GetType() const
Definition ImplicitObject.cpp:67
void SetMargin(FReal InMargin)
Definition ImplicitObject.h:567
bool bIsConvex
Definition ImplicitObject.h:572
virtual FRealSingle GetMarginf() const
Definition ImplicitObject.h:212
FORCEINLINE const TAABB< T, d > & BoundingBox() const
Definition AABB.h:156
FORCEINLINE void GrowToInclude(const TVector< T, d > &V)
Definition AABB.h:393
static void SerializeAsAABB(FArchive &Ar, TAABB< T, d > &AABB)
Definition Box.h:467
Definition CorePlane.h:12
static FORCEINLINE TCorePlane< T > MakeScaledUnsafe(const TCorePlane< U > &Plane, const TVec3< T > &Scale, const TVec3< T > &InvScale)
Definition CorePlane.h:72
Definition ImplicitObjectScaled.h:47
static constexpr int d
Definition ImplicitObjectScaled.h:51
virtual TSerializablePtr< FImplicitObject > GetInnerObject() const override
Definition ImplicitObjectScaled.h:103
TImplicitObjectInstanced(const ObjectType &&Object, const FReal InMargin=0)
Definition ImplicitObjectScaled.h:64
TImplicitObjectInstanced(const ObjectType &Object, const FReal InMargin=0)
Definition ImplicitObjectScaled.h:75
const TConcrete * GetInstancedObject() const
Definition ImplicitObjectScaled.h:108
typename TConcrete::TType T
Definition ImplicitObjectScaled.h:49
int32 NumPlaneVertices(int32 PlaneIndex) const
Definition ImplicitObjectScaled.h:320
const ObjectType Object() const
Definition ImplicitObjectScaled.h:193
virtual EImplicitObjectType GetNestedType() const override
Definition ImplicitObjectScaled.h:200
virtual Chaos::FImplicitObjectPtr CopyGeometry() const override
Definition ImplicitObjectScaled.h:205
static constexpr EImplicitObjectType StaticType()
Definition ImplicitObjectScaled.h:98
virtual FString ToString() const override
Definition ImplicitObjectScaled.h:212
virtual int32 FindMostOpposingFace(const FVec3 &Position, const FVec3 &UnitDir, int32 HintFaceIndex, FReal SearchDist) const override
Definition ImplicitObjectScaled.h:146
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 ImplicitObjectScaled.h:134
virtual const FAABB3 BoundingBox() const override
Definition ImplicitObjectScaled.h:188
virtual Chaos::FImplicitObjectPtr CopyGeometryWithScale(const FVec3 &Scale) const override
Definition ImplicitObjectScaled.h:1112
FORCEINLINE_DEBUGGABLE FVec3 SupportCore(const FVec3 &Direction, const FReal InMargin, FReal *OutSupportDelta, int32 &VertexIndex) const
Definition ImplicitObjectScaled.h:174
FORCEINLINE_DEBUGGABLE FVec3 SupportScaled(const FVec3 &Direction, const T Thickness, const FVec3 &Scale, int32 &VertexIndex) const
Definition ImplicitObjectScaled.h:168
T TType
Definition ImplicitObjectScaled.h:50
bool LowLevelOverlapGeom(const QueryGeomType &B, const TRigidTransform< T, d > &BToATM, T Thickness=0, FMTDInfo *OutMTD=nullptr) const
Definition ImplicitObjectScaled.h:266
bool LowLevelSweepGeom(const QueryGeomType &B, const TRigidTransform< T, d > &BToATM, const TVector< T, d > &LocalDir, const T Length, T &OutTime, TVector< T, d > &LocalPosition, TVector< T, d > &LocalNormal, int32 &OutFaceIndex, TVector< T, d > &OutFaceNormal, T Thickness=0, bool bComputeMTD=false) const
Definition ImplicitObjectScaled.h:259
int32 FindVertexPlanes(int32 VertexIndex, int32 *OutVertexPlanes, int32 MaxVertexPlanes) const
Definition ImplicitObjectScaled.h:307
virtual uint16 GetMaterialIndex(uint32 HintIndex) const
Definition ImplicitObjectScaled.h:277
bool GJKContactPoint(const QueryGeomType &A, const FRigidTransform3 &AToBTM, const FReal Thickness, FVec3 &Location, FVec3 &Normal, FReal &Penetration, int32 &FaceIndex) const
Definition ImplicitObjectScaled.h:272
bool GetClosestEdgeVertices(int32 PlaneIndexHint, const FVec3 &Position, int32 &OutVertexIndex0, int32 &OutVertexIndex1) const
Definition ImplicitObjectScaled.h:300
virtual void Serialize(FChaosArchive &Ar) override
Definition ImplicitObjectScaled.h:139
static constexpr int D
Definition ImplicitObjectScaled.h:52
int32 GetVertexPlanes3(int32 VertexIndex, int32 &PlaneIndex0, int32 &PlaneIndex1, int32 &PlaneIndex2) const
Definition ImplicitObjectScaled.h:314
FRotation3 GetRotationOfMass() const
Definition ImplicitObjectScaled.h:378
const FVec3 GetCenterOfMass() const
Definition ImplicitObjectScaled.h:373
int32 GetMostOpposingPlane(const FVec3 &Normal) const
Definition ImplicitObjectScaled.h:283
virtual FName GetTypeName() const
Definition ImplicitObject.h:414
const FVec3 GetVertex(int32 VertexIndex) const
Definition ImplicitObjectScaled.h:368
virtual bool Overlap(const FVec3 &Point, const FReal Thickness) const override
Definition ImplicitObjectScaled.h:156
int32 NumEdges() const
Definition ImplicitObjectScaled.h:346
void GetPlaneNX(const int32 FaceIndex, FVec3 &OutN, FVec3 &OutX) const
Definition ImplicitObjectScaled.h:362
TImplicitObjectInstanced()
Definition ImplicitObjectScaled.h:58
int32 NumVertices() const
Definition ImplicitObjectScaled.h:351
virtual uint32 GetTypeHash() const override
Definition ImplicitObjectScaled.h:195
virtual FReal GetRadius() const override
Definition ImplicitObjectScaled.h:114
int32 GetEdgePlane(int32 EdgeIndex, int32 EdgePlaneIndex) const
Definition ImplicitObjectScaled.h:336
bool GetDoCollide() const
Definition ImplicitObjectScaled.h:124
static const TImplicitObjectInstanced< TConcrete > * AsInstanced(const FImplicitObject &Obj)
Definition ImplicitObjectScaled.h:231
static TImplicitObjectInstanced< TConcrete > * CopyHelper(const TImplicitObjectInstanced< TConcrete > *Obj)
Definition ImplicitObjectScaled.h:391
FVec3 GetClosestEdge(int32 PlaneIndex, const FVec3 &Position, FVec3 &OutEdgePos0, FVec3 &OutEdgePos1) const
Definition ImplicitObjectScaled.h:289
FVec3 GetClosestEdgePosition(int32 PlaneIndex, const FVec3 &Position) const
Definition ImplicitObjectScaled.h:295
static TImplicitObjectInstanced< TConcrete > * AsInstanced(FImplicitObject &Obj)
Definition ImplicitObjectScaled.h:244
virtual FReal PhiWithNormal(const FVec3 &X, FVec3 &Normal) const override
Definition ImplicitObjectScaled.h:129
ObjectType MObject
Definition ImplicitObjectScaled.h:389
const FMatrix33 GetInertiaTensor(const FReal Mass) const
Definition ImplicitObjectScaled.h:383
int32 NumPlanes() const
Definition ImplicitObjectScaled.h:341
static const TImplicitObjectInstanced< TConcrete > & AsInstancedChecked(const FImplicitObject &Obj)
Definition ImplicitObjectScaled.h:217
virtual FRealSingle GetRadiusf() const override
Definition ImplicitObjectScaled.h:119
const TPlaneConcrete< FReal, 3 > GetPlane(int32 FaceIndex) const
Definition ImplicitObjectScaled.h:357
FORCEINLINE_DEBUGGABLE FVec3 Support(const FVec3 &Direction, const FReal Thickness, int32 &VertexIndex) const
Definition ImplicitObjectScaled.h:162
FORCEINLINE_DEBUGGABLE VectorRegister4Float SupportCoreSimd(const VectorRegister4Float &Direction, const FReal InMargin) const
Definition ImplicitObjectScaled.h:179
int32 GetEdgeVertex(int32 EdgeIndex, int32 EdgeVertexIndex) const
Definition ImplicitObjectScaled.h:331
TImplicitObjectInstanced(TImplicitObjectInstanced< TConcrete > &&Other)
Definition ImplicitObjectScaled.h:86
int32 GetPlaneVertex(int32 PlaneIndex, int32 PlaneVertexIndex) const
Definition ImplicitObjectScaled.h:326
virtual FVec3 FindGeometryOpposingNormal(const FVec3 &DenormDir, int32 HintFaceIndex, const FVec3 &OriginalNormal) const override
Definition ImplicitObjectScaled.h:151
Definition ImplicitObjectScaled.h:447
static constexpr int D
Definition ImplicitObjectScaled.h:452
virtual EImplicitObjectType GetNestedType() const override
Definition ImplicitObjectScaled.h:586
bool GJKContactPoint(const QueryGeomType &A, const FRigidTransform3 &AToBTM, const FReal Thickness, FVec3 &Location, FVec3 &Normal, FReal &Penetration, int32 &FaceIndex) const
Definition ImplicitObjectScaled.h:727
TImplicitObjectScaled(const TImplicitObjectScaled< TConcrete, bInstanced > &Other)=delete
bool LowLevelSweepGeomCCD(const QueryGeomType &B, const TRigidTransform< T, d > &BToATM, const TVector< T, d > &LocalDir, const T Length, const FReal IgnorePenetration, const FReal TargetPenetration, T &OutTOI, T &OutPhi, TVector< T, d > &LocalPosition, TVector< T, d > &LocalNormal, int32 &OutFaceIndex, TVector< T, d > &OutFaceNormal) const
Definition ImplicitObjectScaled.h:690
virtual Pair< FVec3, bool > FindClosestIntersectionImp(const FVec3 &StartPoint, const FVec3 &EndPoint, const FReal Thickness) const override
Definition ImplicitObjectScaled.h:893
virtual FReal GetRadius() const override
Definition ImplicitObjectScaled.h:591
static constexpr int d
Definition ImplicitObjectScaled.h:451
const FReal GetVolume() const
Definition ImplicitObjectScaled.h:974
virtual bool Overlap(const FVec3 &Point, const FReal Thickness) const override
Definition ImplicitObjectScaled.h:883
virtual Chaos::FImplicitObjectPtr CopyGeometryWithScale(const FVec3 &Scale) const override
Definition ImplicitObjectScaled.h:1028
static const TImplicitObjectScaled< TConcrete > & AsScaledChecked(const FImplicitObject &Obj)
Definition ImplicitObjectScaled.h:522
virtual FVec3 FindGeometryOpposingNormal(const FVec3 &DenormDir, int32 HintFaceIndex, const FVec3 &OriginalNormal) const override
Definition ImplicitObjectScaled.h:855
void SetScale(const FVec3f &Scale)
Definition ImplicitObjectScaled.h:954
void SetScale(const FVec3 &Scale)
Definition ImplicitObjectScaled.h:949
FORCEINLINE_DEBUGGABLE FVec3 Support(const FVec3 &Direction, const FReal Thickness, int32 &VertexIndex) const
Definition ImplicitObjectScaled.h:922
virtual void Serialize(FChaosArchive &Ar) override
Definition ImplicitObjectScaled.h:999
int32 NumPlaneVertices(int32 PlaneIndex) const
Definition ImplicitObjectScaled.h:792
int32 GetMostOpposingPlane(const FVec3 &Normal) const
Definition ImplicitObjectScaled.h:752
virtual int32 FindClosestFaceAndVertices(const FVec3 &Position, TArray< FVec3 > &FaceVertices, FReal SearchDist=FReal(0.01)) const override
Definition ImplicitObjectScaled.h:906
FORCEINLINE_DEBUGGABLE VectorRegister4Float SupportCoreSimd(const VectorRegister4Float &Direction, const FReal InMargin) const
Definition ImplicitObjectScaled.h:939
const FVec3 GetVertex(int32 VertexIndex) const
Definition ImplicitObjectScaled.h:843
TImplicitObjectScaled(ObjectType Object, const FVec3 &Scale, FReal InMargin=0)
Definition ImplicitObjectScaled.h:480
TSharedPtr< TConcrete, ESPMode::ThreadSafe > GetSharedObject() const
Definition ImplicitObjectScaled.h:997
static TImplicitObjectScaled< TConcrete > & AsScaledChecked(FImplicitObject &Obj)
Definition ImplicitObjectScaled.h:536
TImplicitObjectScaled(TImplicitObjectScaled< TConcrete, bInstanced > &&Other)
Definition ImplicitObjectScaled.h:500
TImplicitObjectScaled(TConcrete *Object, const FVec3 &Scale, FReal InMargin=0)
Definition ImplicitObjectScaled.h:487
virtual uint16 GetMaterialIndex(uint32 HintIndex) const override
Definition ImplicitObjectScaled.h:1018
T TType
Definition ImplicitObjectScaled.h:450
FRotation3 GetRotationOfMass() const
Definition ImplicitObjectScaled.h:984
const FMatrix33 GetInertiaTensor(const FReal Mass) const
Definition ImplicitObjectScaled.h:989
void GetPlaneNX(const int32 FaceIndex, FVec3 &OutN, FVec3 &OutX) const
Definition ImplicitObjectScaled.h:835
const FVec3 GetCenterOfMass() const
Definition ImplicitObjectScaled.h:979
virtual FName GetTypeName() const
Definition ImplicitObject.h:414
~TImplicitObjectScaled()
Definition ImplicitObjectScaled.h:515
virtual TSerializablePtr< FImplicitObject > GetInnerObject() const override
Definition ImplicitObjectScaled.h:576
virtual FReal PhiWithNormal(const FVec3 &X, FVec3 &Normal) const override
Definition ImplicitObjectScaled.h:601
virtual uint32 GetTypeHash() const override
Definition ImplicitObjectScaled.h:1013
virtual int32 FindMostOpposingFace(const FVec3 &Position, const FVec3 &UnitDir, int32 HintFaceIndex, FReal SearchDist) const override
Definition ImplicitObjectScaled.h:850
virtual FString ToString() const override
Definition ImplicitObjectScaled.h:1035
int32 GetEdgePlane(int32 EdgeIndex, int32 EdgePlaneIndex) const
Definition ImplicitObjectScaled.h:808
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 ImplicitObjectScaled.h:606
typename TConcrete::TType T
Definition ImplicitObjectScaled.h:449
const ObjectType Object() const
Definition ImplicitObjectScaled.h:994
int32 GetVertexPlanes3(int32 VertexIndex, int32 &PlaneIndex0, int32 &PlaneIndex1, int32 &PlaneIndex2) const
Definition ImplicitObjectScaled.h:786
TRefCountPtr< TConcrete > ObjectType
Definition ImplicitObjectScaled.h:454
FVec3 GetClosestEdge(int32 PlaneIndex, const FVec3 &Position, FVec3 &OutEdgePos0, FVec3 &OutEdgePos1) const
Definition ImplicitObjectScaled.h:758
static TImplicitObjectScaled< TConcrete > * AsScaled(FImplicitObject &Obj)
Definition ImplicitObjectScaled.h:563
FVec3 GetClosestEdgePosition(int32 PlaneIndex, const FVec3 &Position) const
Definition ImplicitObjectScaled.h:767
int32 NumEdges() const
Definition ImplicitObjectScaled.h:818
int32 GetEdgeVertex(int32 EdgeIndex, int32 EdgeVertexIndex) const
Definition ImplicitObjectScaled.h:803
virtual FRealSingle GetRadiusf() const override
Definition ImplicitObjectScaled.h:596
bool GetClosestEdgeVertices(int32 PlaneIndex, const FVec3 &Position, int32 &OutVertexIndex0, int32 &OutVertexIndex1) const
Definition ImplicitObjectScaled.h:772
virtual Chaos::FImplicitObjectPtr CopyGeometry() const override
Definition ImplicitObjectScaled.h:1023
static const TImplicitObjectScaled< TConcrete > * AsScaled(const FImplicitObject &Obj)
Definition ImplicitObjectScaled.h:550
const TPlaneConcrete< FReal, 3 > GetPlane(int32 FaceIndex) const
Definition ImplicitObjectScaled.h:829
int32 NumPlanes() const
Definition ImplicitObjectScaled.h:813
FORCEINLINE_DEBUGGABLE FVec3 SupportCore(const FVec3 &Direction, const FReal InMargin, FReal *OutSupportDelta, int32 &VertexIndex) const
Definition ImplicitObjectScaled.h:934
std::conditional_t< bInstanced, TSerializablePtr< TConcrete >, TUniquePtr< TConcrete > > ObjectTypeDeprecated
Definition ImplicitObjectScaled.h:457
const TConcrete * GetUnscaledObject() const
Definition ImplicitObjectScaled.h:581
int32 NumVertices() const
Definition ImplicitObjectScaled.h:823
bool LowLevelOverlapGeom(const QueryGeomType &B, const TRigidTransform< T, d > &BToATM, T Thickness=0, FMTDInfo *OutMTD=nullptr) const
Definition ImplicitObjectScaled.h:742
static constexpr EImplicitObjectType StaticType()
Definition ImplicitObjectScaled.h:517
int32 FindVertexPlanes(int32 VertexIndex, int32 *OutVertexPlanes, int32 MaxVertexPlanes) const
Definition ImplicitObjectScaled.h:779
int32 GetPlaneVertex(int32 PlaneIndex, int32 PlaneVertexIndex) const
Definition ImplicitObjectScaled.h:798
bool LowLevelSweepGeom(const QueryGeomType &B, const TRigidTransform< T, d > &BToATM, const TVector< T, d > &LocalDir, const T Length, T &OutTime, TVector< T, d > &LocalPosition, TVector< T, d > &LocalNormal, int32 &OutFaceIndex, TVector< T, d > &OutFaceNormal, T Thickness=0, bool bComputeMTD=false) const
Definition ImplicitObjectScaled.h:651
Definition Serializable.h:10
FRealSingle Max() const
Definition Vector.h:519
FRealSingle SafeNormalize(FRealSingle Epsilon=1e-4f)
Definition Vector.h:567
virtual CORE_API void UsingCustomVersion(const struct FGuid &Guid)
Definition Archive.cpp:590
CORE_API int32 CustomVer(const struct FGuid &Key) const
Definition Archive.cpp:602
uint32 GetRefCount()
Definition RefCounting.h:604
UE_FORCEINLINE_HINT ReferencedType * GetReference() const
Definition RefCounting.h:584
Definition SharedPointer.h:692
Definition UniquePtr.h:107
@ IsInstanced
Definition ImplicitObjectType.h:35
@ Union
Definition ImplicitObjectType.h:18
@ IsScaled
Definition ImplicitObjectType.h:36
@ Transformed
Definition ImplicitObjectType.h:17
TVec3< T > ScaleInertia(const TVec3< T > &Inertia, const TVec3< T > &Scale, const bool bScaleMass)
Definition Utilities.h:519
Definition SkeletalMeshComponent.h:307
TVector< FRealSingle, 3 > FVec3f
Definition Core.h:27
TRefCountPtr< FImplicitObject > FImplicitObjectPtr
Definition ImplicitFwd.h:33
uint8 EImplicitObjectType
Definition ImplicitObjectType.h:41
@ X
Definition SimulationModuleBase.h:152
FORCEINLINE bool IsInstanced(EImplicitObjectType Type)
Definition ImplicitObjectType.h:43
FRealDouble FReal
Definition Real.h:22
TSerializablePtr< T > MakeSerializable(const TUniquePtr< T > &Unique)
Definition Serializable.h:60
float FRealSingle
Definition Real.h:14
FORCEINLINE bool IsScaled(EImplicitObjectType Type)
Definition ImplicitObjectType.h:48
TVector< FReal, 3 > FVec3
Definition Core.h:17
const T * UnwrapImplicit(const FImplicitObject &Implicit, FVec3 &OutScale, FReal &OutMargin)
Remove the Instanced or Scaled wrapper from an ImplicitObject of a known inner type and extract the i...
Definition ImplicitObjectScaled.h:1143
TAABB< FReal, 3 > FAABB3
Definition ImplicitObject.h:34
uint32 GetTypeHash(const TBox< T > &Box)
Definition Box.h:1008
Definition GeometryQueries.h:27
static bool IsBaseOf(const EImplicitObjectType InType)
Definition ImplicitObjectScaled.h:1121
static bool IsBaseOf(const EImplicitObjectType InType)
Definition ImplicitObjectScaled.h:1131
Definition ImplicitObject.h:83
CORE_API static const FGuid GUID
Definition ExternalPhysicsCustomObjectVersion.h:144
@ ScaledGeometryIsConcrete
Definition ExternalPhysicsCustomObjectVersion.h:49
static UE_FORCEINLINE_HINT bool IsNearlyEqual(float A, float B, float ErrorTolerance=UE_SMALL_NUMBER)
Definition UnrealMathUtility.h:388
Definition NumericLimits.h:41
T Z
Definition Vector.h:68
T Y
Definition Vector.h:65
T X
Definition Vector.h:62
TVector< T > GetSignVector() const
Definition Vector.h:1823
T Size() const
Definition Vector.h:1716
Definition UnrealMathFPU.h:20