147template <
typename SupportALambda,
typename SupportBLambda >
227 bValid =
OutEntries[0].Initialize(
VertsA.GetData(),
VertsB.GetData(), 1, 2, 3, { 3,1,2 }, { 1,1,1 });
228 bValid &=
OutEntries[1].Initialize(
VertsA.GetData(),
VertsB.GetData(), 0, 3, 2, { 2,0,3 }, { 2,1,0 });
229 bValid &=
OutEntries[2].Initialize(
VertsA.GetData(),
VertsB.GetData(), 0, 1, 3, { 3,0,1 }, { 2,2,0 });
230 bValid &=
OutEntries[3].Initialize(
VertsA.GetData(),
VertsB.GetData(), 0, 2, 1, { 1,0,2 }, { 2,0,0 });
249 bValid =
OutEntries[3].Initialize(
VertsA.GetData(),
VertsB.GetData(), 0, 2, 1, { 1,0,2 }, { 2,0,0 });
256 bValid =
OutEntries[0].Initialize(
VertsA.GetData(),
VertsB.GetData(), 1, 2, 3, { 3,1,2 }, { 1,1,1 });
257 bValid &=
OutEntries[1].Initialize(
VertsA.GetData(),
VertsB.GetData(), 0, 3, 2, { 2,0,3 }, { 2,1,0 });
258 bValid &=
OutEntries[2].Initialize(
VertsA.GetData(),
VertsB.GetData(), 0, 1, 3, { 3,0,1 }, { 2,2,0 });
270 bValid =
OutEntries[0].Initialize(
VertsA.GetData(),
VertsB.GetData(), 1, 2, 3, { 3,1,2 }, { 1,1,1 });
271 bValid &=
OutEntries[1].Initialize(
VertsA.GetData(),
VertsB.GetData(), 0, 3, 2, { 2,0,3 }, { 2,1,0 });
272 bValid &=
OutEntries[2].Initialize(
VertsA.GetData(),
VertsB.GetData(), 0, 1, 3, { 3,0,1 }, { 2,2,0 });
273 bValid &=
OutEntries[3].Initialize(
VertsA.GetData(),
VertsB.GetData(), 0, 2, 1, { 1,0,2 }, { 2,0,0 });
324 for (
int i = 0; i < 3; ++i)
424template <
typename TSupportA,
typename TSupportB>
442 for (
int32 Idx = 0; Idx < 4; ++Idx)
449 for(
int32 Idx = 0; Idx < Entries.
Num(); ++Idx)
479 std::sort(Queue.
GetData(), Queue.
GetData() + Queue.
Num(), [&Entries](
const int32 L,
const int32 R) { return Entries[L] > Entries[R]; });
#define check(expr)
Definition AssertionMacros.h:314
#define CHAOS_ENSURE(Condition)
Definition ChaosCheck.h:22
#define FORCEINLINE_DEBUGGABLE
Definition CoreMiscDefines.h:74
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_LOG(CategoryName, Verbosity, Format,...)
Definition LogMacros.h:270
T * New(FMemStackBase &Mem, int32 Count=1, int32 Align=DEFAULT_ALIGNMENT)
Definition MemStack.h:259
FORCEINLINE VectorRegister4Float VectorSubtract(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:731
FORCEINLINE VectorRegister4Float VectorSqrt(const VectorRegister4Float &Vec)
Definition UnrealMathFPU.h:1263
FORCEINLINE VectorRegister4Float VectorReciprocalSqrt(const VectorRegister4Float &Vec)
Definition UnrealMathFPU.h:1279
FORCEINLINE VectorRegister4Float VectorDot3(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:880
FORCEINLINE VectorRegister4Float VectorMin(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:1686
FORCEINLINE VectorRegister4Float VectorDot4(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:901
FORCEINLINE VectorRegister4Float VectorDivide(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:834
FORCEINLINE VectorRegister4Float VectorMultiply(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:758
FORCEINLINE VectorRegister4Float VectorBitwiseAnd(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:1165
FORCEINLINE constexpr VectorRegister4Float MakeVectorRegisterFloatConstant(float X, float Y, float Z, float W)
Definition UnrealMathFPU.h:297
FORCEINLINE VectorRegister4Float VectorMultiplyAdd(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2, const VectorRegister4Float &Vec3)
Definition UnrealMathFPU.h:786
FORCEINLINE VectorRegister4Float VectorSelect(const VectorRegister4Float &Mask, const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:1105
FORCEINLINE VectorRegister4Float VectorCompareGT(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:974
FORCEINLINE VectorRegister4Float VectorCompareGE(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:1000
FORCEINLINE int32 VectorMaskBits(const VectorRegister4Float &Vec1)
Definition UnrealMathFPU.h:1075
FORCEINLINE VectorRegister4Float VectorNegate(const VectorRegister4Float &Vec)
Definition UnrealMathFPU.h:687
FORCEINLINE VectorRegister4Float VectorAbs(const VectorRegister4Float &Vec)
Definition UnrealMathFPU.h:661
FORCEINLINE VectorRegister4Float VectorAdd(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:704
#define VectorSwizzle(Vec, X, Y, Z, W)
Definition UnrealMathFPU.h:639
FORCEINLINE VectorRegister4Float VectorCross(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:1216
FORCEINLINE VectorRegister4Float VectorBitwiseOr(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:1140
bool VectorContainsNaNOrInfinite(const VectorRegister4Float &Vec)
Definition UnrealMathFPU.h:1960
FORCEINLINE VectorRegister4Float VectorCompareLE(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:1050
FORCEINLINE VectorRegister4Float MakeVectorRegisterFloat(uint32 X, uint32 Y, uint32 Z, uint32 W)
Definition UnrealMathFPU.h:175
FORCEINLINE TVectorRegisterType VectorNormalizeAccurate(TVectorRegisterType Vector)
Definition UnrealMathVectorCommon.h.inl:412
FORCEINLINE VectorRegister4Float VectorZero(void)
Definition UnrealMathVectorCommon.h.inl:16
UE_FORCEINLINE_HINT SizeType AddUninitialized()
Definition Array.h:1664
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT ElementType & Last(SizeType IndexFromTheEnd=0) UE_LIFETIMEBOUND
Definition Array.h:1263
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * GetData() UE_LIFETIMEBOUND
Definition Array.h:1027
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
ElementType Pop(EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:1196
Definition SkeletalMeshComponent.h:307
FORCEINLINE_DEBUGGABLE void VectorComputeEPAResults(const VectorRegister4Float *VertsA, const VectorRegister4Float *VertsB, const VectorTEPAEntry &Entry, VectorRegister4Float &OutPenetration, VectorRegister4Float &OutDir, VectorRegister4Float &OutA, VectorRegister4Float &OutB, EEPAResult &ResultStatus)
Definition EPAVectorized.h:363
FORCEINLINE const VectorRegister4Float VectorMinkowskiVert(const VectorRegister4Float *VertsABuffer, const VectorRegister4Float *VertsBBuffer, const int32 Idx)
Definition EPAVectorized.h:19
EEPAResult VectorEPA(TArray< VectorRegister4Float > &VertsABuffer, TArray< VectorRegister4Float > &VertsBBuffer, const TSupportA &SupportA, const TSupportB &SupportB, VectorRegister4Float &OutPenetration, VectorRegister4Float &OutDir, VectorRegister4Float &WitnessA, VectorRegister4Float &WitnessB)
Definition EPAVectorized.h:425
@ X
Definition SimulationModuleBase.h:152
FORCEINLINE_DEBUGGABLE void VectorEPAComputeVisibilityBorder(TEPAWorkingArray< VectorTEPAEntry > &Entries, int32 EntryIdx, const VectorRegister4Float &W, TEPAWorkingArray< FEPAFloodEntry > &OutBorderEdges, TEPAWorkingArray< FEPAFloodEntry > &ToVisitStack)
Definition EPAVectorized.h:319
EEPAResult
Definition EPA.h:421
FORCEINLINE_DEBUGGABLE T VectorSimplexFindClosestToOrigin(T *RESTRICT Simplex, int32 &RESTRICT NumVerts, T &RESTRICT OutBarycentric, T *RESTRICT A, T *RESTRICT B)
Definition SimplexVectorized.h:405
bool VectorInitializeEPA(TArray< VectorRegister4Float > &VertsA, TArray< VectorRegister4Float > &VertsB, const SupportALambda &SupportA, const SupportBLambda &SupportB, TEPAWorkingArray< VectorTEPAEntry > &OutEntries, VectorRegister4Float &OutTouchNormal)
Definition EPAVectorized.h:148
constexpr VectorRegister4Float Float1000
Definition UnrealMathVectorConstants.h.inl:44
Definition EPAVectorized.h:26
VectorRegister4Float Distance
Definition EPAVectorized.h:28
FORCEINLINE_DEBUGGABLE bool Initialize(const VectorRegister4Float *VerticesA, const VectorRegister4Float *VerticesB, int32 InIdx0, int32 InIdx1, int32 InIdx2, const TVector< int32, 3 > &InAdjFaces, const TVector< int32, 3 > &InAdjEdges)
Definition EPAVectorized.h:39
FORCEINLINE_DEBUGGABLE VectorRegister4Float DistanceToPlane(const VectorRegister4Float &X) const
Definition EPAVectorized.h:100
void SwapWinding(VectorTEPAEntry *Entries)
Definition EPAVectorized.h:70
int32 IdxBuffer[3]
Definition EPAVectorized.h:29
FORCEINLINE bool operator>(const VectorTEPAEntry &Other) const
Definition EPAVectorized.h:34
FORCEINLINE_DEBUGGABLE bool IsOriginProjectedInside(const VectorRegister4Float *VertsABuffer, const VectorRegister4Float *VertsBBuffer, const VectorRegister4Float Epsilon) const
Definition EPAVectorized.h:105
VectorRegister4Float PlaneNormal
Definition EPAVectorized.h:27
bool bObsolete
Definition EPAVectorized.h:32
TVector< int32, 3 > AdjFaces
Definition EPAVectorized.h:30
TVector< int32, 3 > AdjEdges
Definition EPAVectorized.h:31
Definition NumericLimits.h:41
Definition UnrealMathFPU.h:20