35template<
class T,
int d,
bool bSerializable = true>
39 using ObjectType =
typename FStorage::PtrType;
59 this->MLocalBoundingBox = MObject->BoundingBox().TransformedAABB(
InTransform);
72 this->MLocalBoundingBox = MObject->BoundingBox().TransformedAABB(
InTransform);
80 , MObject(
Other.MObject)
81 , MTransform(
Other.MTransform)
91 return MObject->GetNestedType();
172 return (MObject->GetRadiusf() > 0.0f) ? 0.0f :
Margin;
178 return (MObject->GetRadiusf() > 0.0f) ?
Margin : 0.0f;
183 return MObject->GetDoCollide();
188 auto TransformedX = MTransform.InverseTransformPosition(x);
194 virtual bool Raycast(
const TVector<T, d>& StartPoint,
const TVector<T, d>& Dir,
const T
Length,
const T Thickness, T& OutTime,
TVector<T, d>& OutPosition,
TVector<T, d>& OutNormal,
int32& OutFaceIndex)
const override
196 const TVector<T, d> LocalStart = MTransform.InverseTransformPosition(StartPoint);
197 const TVector<T, d> LocalDir = MTransform.InverseTransformVector(Dir);
201 if (MObject->Raycast(LocalStart, LocalDir,
Length, Thickness, OutTime, LocalPosition,
LocalNormal, OutFaceIndex))
205 OutPosition = MTransform.TransformPosition(LocalPosition);
206 OutNormal = MTransform.TransformVector(
LocalNormal);
226 return MTransform.TransformVectorNoScale(
LocalNormal);
232 return MObject->Overlap(
LocalPoint, Thickness);
238 auto TransformedEnd = MTransform.InverseTransformPosition(EndPoint);
255 Vec = MTransform.TransformPosition(
Vec);
264 MLocalBoundingBox = MObject->BoundingBox().TransformedAABB(
InTransform);
271 MObject->AccumulateAllImplicitObjects(Out,
NewTM);
277 int32 NumOut = Out.Num();
279 if (Out.Num() > NumOut)
281 Out[NumOut].Second = Out[NumOut].Second * MTransform;
290 return MObject->CalculateTransformedBounds(FRigidTransform3::MultiplyNoScale(MTransform ,
InTransform));
312 const ObjectType
Object()
const {
return MObject; }
334 return MObject->GetMaterialIndex(
HintIndex);
344 MObject = ImplicitObject;
351 return 1 + MObject->CountObjectsInHierarchy();
357 return MObject->CountLeafObjectsInHierarchyImpl();
363 const int32 RootObjectIndex,
378 const int32 RootObjectIndex,
392 const int32 RootObjectIndex,
413 return MObject->IsOverlappingBoundsImpl(LocalBounds);
431 UE_DEPRECATED(5.4,
"Please use DuplicateGeometryWithTransform instead")
432 inline TUniquePtr<FImplicitObject> DuplicateImplicitWithTransform(const FImplicitObject* const InObject,
FTransform NewTransform)
466template <
typename T,
int d>
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#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
UE_FORCEINLINE_HINT uint32 GetTypeHashHelper(const T &V)
Definition TypeHash.h:215
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
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 ClusterUnionManager.h:159
Definition ImplicitObject.h:111
FRealSingle Margin
Definition ImplicitObject.h:571
bool HasBoundingBox() const
Definition ImplicitObject.h:275
bool bDoCollide
Definition ImplicitObject.h:573
bool IsConvex() const
Definition ImplicitObject.h:277
virtual FName GetTypeName() const
Definition ImplicitObject.h:414
CHAOS_API void SerializeImp(FArchive &Ar)
Definition ImplicitObject.cpp:337
bool bIsConvex
Definition ImplicitObject.h:572
CHAOSCORE_API TAABB< T, d > InverseTransformedAABB(const Chaos::FRigidTransform3 &) const
Definition AABB.cpp:412
CHAOSCORE_API TAABB< T, d > TransformedAABB(const FTransform &) const
Definition AABB.cpp:385
static void SerializeAsAABB(FArchive &Ar, TAABB< T, d > &AABB)
Definition Box.h:467
Definition Serializable.h:10
Definition AssetRegistryState.h:50
UE_FORCEINLINE_HINT ReferencedType * GetReference() const
Definition RefCounting.h:584
Definition UniquePtr.h:107
@ Transformed
Definition ImplicitObjectType.h:17
Definition SkeletalMeshComponent.h:307
uint8 EImplicitObjectType
Definition ImplicitObjectType.h:41
void TImplicitObjectTransformSerializeHelper(FChaosArchive &Ar, FImplicitObjectPtr &Obj)
Definition ImplicitObjectTransformed.h:15
FRealDouble FReal
Definition Real.h:22
FORCEINLINE EImplicitObjectType GetInnerType(EImplicitObjectType Type)
Definition ImplicitObjectType.h:58
Definition ImplicitObject.h:42