19 template<EThreadContext Id>
31 template<
typename TOverlapHit>
34 static_assert(std::is_same_v<TOverlapHit, ChaosInterface::TThreadOverlapHit<Id>>);
35 return PairwiseShapeOverlapHelper(
43 [
this,
ObjectA, &OutOverlaps](
const FShapeOverlapData&
A,
const FShapeOverlapData&
B,
const FMTDInfo&)
62 template<
typename TRaycastHit>
65 static_assert(std::is_same_v<TRaycastHit, ChaosInterface::TThreadRaycastHit<Id>>);
84 Interface.VisitEveryShape(
86 [
this, &bHit, &
WorldTM, &LocalStart, &
LocalDelta, &
Delta, DeltaMag, &
BestWorldTM,
bTraceComplex, &
OutBestHit](
const FConstPhysicsObjectHandle IterObject,
TThreadShapeInstance<Id>* Shape)
100 const bool bRaycastHit = Shape->GetGeometry()->Raycast(
140 template<
typename TOverlapHit>
146 template<
typename TOverlapHit>
149 static_assert(std::is_same_v<TOverlapHit, ChaosInterface::TThreadOverlapHit<Id>>);
155 Interface.VisitEveryShape(
185 template<
typename TSweepHit>
188 static_assert(std::is_same_v<TSweepHit, ChaosInterface::TThreadSweepHit<Id>>);
202 Interface.VisitEveryShape(
204 [
this, &
WorldTM, &
InGeom, &StartTM, &bHit, &
Delta, DeltaMag, &Dir, &
OutBestHit, &Params](
const FConstPhysicsObjectHandle IterObject,
TThreadShapeInstance<Id>* Shape)
222 [Shape, &
WorldTM, &Dir, DeltaMag, &
Distance, &
WorldPosition, &WorldNormal, &FaceIdx, &FaceNormal, &Params](
const auto& Downcast,
const auto&
FullTransformB)
225 return Chaos::SweepQuery(*Shape->GetGeometry(),
WorldTM, Downcast,
FullTransformB, Dir, DeltaMag,
Distance,
WorldPosition, WorldNormal, FaceIdx, FaceNormal, 0.f, Params.bComputeMTD);
267 struct FShapeOverlapData
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define FVector
Definition IOSSystemIncludes.h:8
const bool bTraceComplex
Definition PhysicsInterfaceUtils.h:19
#define UE_KINDA_SMALL_NUMBER
Definition UnrealMathUtility.h:131
Definition ImplicitObject.h:111
Definition PhysicsObjectCollisionInterface.h:21
CHAOS_API bool PhysicsObjectOverlap(const FConstPhysicsObjectHandle ObjectA, const FTransform &InTransformA, const FConstPhysicsObjectHandle ObjectB, const FTransform &InTransformB, bool bTraceComplex)
Definition PhysicsObjectCollisionInterface.cpp:7
CHAOS_API bool PhysicsObjectOverlapWithAABBSize(const FConstPhysicsObjectHandle ObjectA, const FTransform &InTransformA, const FConstPhysicsObjectHandle ObjectB, const FTransform &InTransformB, bool bTraceComplex, const FVector &Tolerance, FVector &OutOverlapSize)
Definition PhysicsObjectCollisionInterface.cpp:60
bool LineTrace(TArrayView< const FConstPhysicsObjectHandle > InObjects, const FVector &WorldStart, const FVector &WorldEnd, bool bTraceComplex, TRaycastHit &OutBestHit)
Definition PhysicsObjectCollisionInterface.h:63
FPhysicsObjectCollisionInterface(FReadPhysicsObjectInterface< Id > &InInterface)
Definition PhysicsObjectCollisionInterface.h:23
CHAOS_API bool PhysicsObjectOverlapWithAABBIntersections(const FConstPhysicsObjectHandle ObjectA, const FTransform &InTransformA, const FConstPhysicsObjectHandle ObjectB, const FTransform &InTransformB, bool bTraceComplex, const FVector &Tolerance, TArray< FBox > &Intersections)
Definition PhysicsObjectCollisionInterface.cpp:82
bool ShapeSweep(TArrayView< const FConstPhysicsObjectHandle > InObjects, const Chaos::FImplicitObject &InGeom, const FTransform &StartTM, const FVector &EndPos, const FSweepParameters &Params, TSweepHit &OutBestHit)
Definition PhysicsObjectCollisionInterface.h:186
bool ShapeOverlap(TArrayView< const FConstPhysicsObjectHandle > InObjects, const Chaos::FImplicitObject &InGeom, const FTransform &GeomTransform, TArray< TOverlapHit > &OutOverlaps)
Definition PhysicsObjectCollisionInterface.h:141
bool PhysicsObjectOverlap(const FConstPhysicsObjectHandle ObjectA, const FTransform &InTransformA, const FConstPhysicsObjectHandle ObjectB, const FTransform &InTransformB, bool bTraceComplex, TArray< TOverlapHit > &OutOverlaps)
Definition PhysicsObjectCollisionInterface.h:32
CHAOS_API bool PhysicsObjectOverlapWithMTD(const FConstPhysicsObjectHandle ObjectA, const FTransform &InTransformA, const FConstPhysicsObjectHandle ObjectB, const FTransform &InTransformB, bool bTraceComplex, FMTDInfo &OutMTD)
Definition PhysicsObjectCollisionInterface.cpp:14
bool ShapeOverlapWithMTD(TArrayView< const FConstPhysicsObjectHandle > InObjects, const Chaos::FImplicitObject &InGeom, const FTransform &GeomTransform, TArray< TOverlapHit > &OutOverlaps, FMTDInfo *MTD)
Definition PhysicsObjectCollisionInterface.h:147
CHAOS_API bool PhysicsObjectOverlapWithAABB(const FConstPhysicsObjectHandle ObjectA, const FTransform &InTransformA, const FConstPhysicsObjectHandle ObjectB, const FTransform &InTransformB, bool bTraceComplex, const FVector &Tolerance, FBox &OutOverlap)
Definition PhysicsObjectCollisionInterface.cpp:38
Definition PhysicsObjectInterface.h:55
Definition ArrayView.h:139
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
Definition AndroidPlatformMisc.h:14
FORCEINLINE_DEBUGGABLE decltype(auto) CastHelper(const FImplicitObject &Geom, const Lambda &Func)
Definition CastingUtilities.h:21
Definition SkeletalMeshComponent.h:307
bool SweepQuery(const FImplicitObject &A, const FRigidTransform3 &ATM, const SweptGeometry &B, const FRigidTransform3 &BTM, const FVec3 &Dir, const FReal Length, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal, const FReal Thickness, const bool bComputeMTD)
Definition GeometryQueries.h:252
FRealDouble FReal
Definition Real.h:22
const FPhysicsObject * FConstPhysicsObjectHandle
Definition PhysicsObject.h:19
std::conditional_t< Id==EThreadContext::External, FShapeInstanceProxy, FShapeInstance > TThreadShapeInstance
Definition ShapeInstanceFwd.h:33
bool OverlapQuery(const FImplicitObject &A, const FRigidTransform3 &ATM, const QueryGeometry &B, const FRigidTransform3 &BTM, const FReal Thickness=0, FMTDInfo *OutMTD=nullptr)
Definition GeometryQueries.h:34
Definition GeometryQueries.h:27
Definition PhysicsObjectInternal.h:16
Definition PhysicsObjectCollisionInterface.h:14
bool bComputeMTD
Definition PhysicsObjectCollisionInterface.h:16
bool bSweepComplex
Definition PhysicsObjectCollisionInterface.h:15
Definition CollisionFilterData.h:46
Definition NumericLimits.h:41
static TVector< double > Zero()
Definition Vector.h:112
T Size() const
Definition Vector.h:1716