74template<
typename KDOP_IDX_TYPE>
89 Nodes[NodeIndex] = 0xFFFFFFFF;
273template<
typename KDOP_IDX_TYPE>
294 return (
V0 +
V1 +
V2) / 3.f;
317template <
typename COLL_DATA_PROVIDER,
typename KDOP_IDX_TYPE>
struct TkDOPNode;
318template <
typename COLL_DATA_PROVIDER,
typename KDOP_IDX_TYPE>
struct TkDOPTree;
370 #define kDOPArray TArray
372 #define kDOPArray TChunkedArray
379template <
typename COLL_DATA_PROVIDER,
typename KDOP_IDX_TYPE>
551 n.LeftNode = Nodes.AddZeroed(2);
552 n.RightNode =
n.LeftNode + 1;
573 FkDOPBuildCollisionTriangle<KDOP_IDX_TYPE> EmptyTriangle(0,
FVector4(0,0,0,0),
FVector4(0,0,0,0),
FVector4(0,0,0,0));
575 t.StartIndex = SOATriangles.Num();
577 SOATriangles.AddZeroed(
t.NumTriangles );
624 for (
int32 TriangleIndex=Start; TriangleIndex<Start +
NumTris; TriangleIndex++)
683 NodeHit[
BoxIndex] = (MaxTime >= 0 && MaxTime >= MinTime && MinTime <
Check.Result->Time) ? 0xFFFFFFFF : 0;
765 && (!bHit ||
Check.bFindClosestIntersection))
777 && (!bHit ||
Check.bFindClosestIntersection))
840 && (!bHit ||
Check.bFindClosestIntersection))
852 && (!bHit ||
Check.bFindClosestIntersection))
911 if( !
Check.bFindClosestIntersection )
925template<
typename COLL_DATA_PROVIDER,
typename KDOP_IDX_TYPE>
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
@ ForceInit
Definition CoreMiscDefines.h:155
FORCEINLINE void CopyAssignItems(ElementType *Dest, const ElementType *Source, SizeType Count)
Definition MemoryOps.h:137
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define NUM_PLANES
Definition kDOP.h:11
FORCEINLINE bool appLineCheckTriangle(const FVector4 &Start, const FVector4 &End, const FVector4 &Dir, const FVector4 &V0, const FVector4 &V1, const FVector4 &V2, const FVector4 &Normal, float &IntersectionTime)
Definition kDOP.h:123
#define FVector
Definition IOSSystemIncludes.h:8
UE::Math::TVector4< double > FVector4
Definition MathFwd.h:49
UE::Math::TPlane< double > FPlane
Definition MathFwd.h:52
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
FORCEINLINE VectorRegister4Float VectorSubtract(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:731
FORCEINLINE VectorRegister4Float VectorMin(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:1686
FORCEINLINE VectorRegister4Float MakeVectorRegister(uint32 X, uint32 Y, uint32 Z, uint32 W)
Definition UnrealMathFPU.h:195
FORCEINLINE VectorRegister4Float VectorSetFloat1(float F)
Definition UnrealMathFPU.h:518
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 VectorMax(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:1713
FORCEINLINE VectorRegister4Float VectorBitwiseAnd(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:1165
FORCEINLINE VectorRegister4Float VectorLoadFloat1(const float *Ptr)
Definition UnrealMathFPU.h:468
VectorRegister4Float VectorLoadAligned(const float *Ptr)
Definition UnrealMathFPU.h:451
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 VectorRegister4Float VectorCompareLT(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:1025
FORCEINLINE float VectorGetComponentDynamic(const VectorRegister4Float &Vec, uint32 ComponentIndex)
Definition UnrealMathFPU.h:369
FORCEINLINE int32 VectorMaskBits(const VectorRegister4Float &Vec1)
Definition UnrealMathFPU.h:1075
FORCEINLINE VectorRegister4Float VectorNegateMultiplyAdd(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2, const VectorRegister4Float &Vec3)
Definition UnrealMathFPU.h:815
void VectorStoreAligned(const VectorRegister4Float &Vec, float *Ptr)
Definition UnrealMathFPU.h:534
#define VectorSwizzle(Vec, X, Y, Z, W)
Definition UnrealMathFPU.h:639
#define DECLARE_VECTOR_REGISTER(X, Y, Z, W)
Definition UnrealMathFPU.h:155
FORCEINLINE VectorRegister4Float VectorCompareLE(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:1050
FORCEINLINE VectorRegister4Float VectorCompareEQ(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:923
FORCEINLINE void VectorStoreFloat1(const VectorRegister4Float &Vec, float *Dst)
Definition UnrealMathFPU.h:610
#define VectorReplicate(Vec, ElementIndex)
Definition UnrealMathFPU.h:627
#define MAX_FLT
Definition UnrealMathUtility.h:78
FORCEINLINE VectorRegister4Float VectorZero(void)
Definition UnrealMathVectorCommon.h.inl:16
FORCEINLINE VectorRegister4Float VectorSet(float X, float Y, float Z, float W)
Definition UnrealMathVectorCommon.h.inl:867
FORCEINLINE VectorRegister4Float VectorOne(void)
Definition UnrealMathVectorCommon.h.inl:21
FORCEINLINE uint32 appCountTrailingZeros(uint32 Value)
Definition UnrealMathVectorCommon.h.inl:932
UE_FORCEINLINE_HINT T Dot3(const UE::Math::TVector4< T > &V1, const UE::Math::TVector4< T > &V2)
Definition Vector4.h:1018
@ Start
Definition GeoEnum.h:100
FBox GetBox(int32 BoundingVolumeIndex)
Definition kDOP.h:360
MS_ALIGN(16) FVector4 Min[3] GCC_ALIGN(16)
FVector4 Max[3]
Definition kDOP.h:333
void SetBox(int32 BoundingVolumeIndex, const FBox &Box)
Definition kDOP.h:341
FVector3SOA Positions[3]
Definition kDOP.h:65
uint32 Payload[4]
Definition kDOP.h:69
FVector4SOA Normals
Definition kDOP.h:67
VectorRegister Z
Definition kDOP.h:41
VectorRegister Y
Definition kDOP.h:39
VectorRegister X
Definition kDOP.h:37
VectorRegister W
Definition kDOP.h:56
VectorRegister Y
Definition kDOP.h:52
VectorRegister X
Definition kDOP.h:50
VectorRegister Z
Definition kDOP.h:54
FVector4 GetCentroid() const
Definition kDOP.h:292
FkDOPBuildCollisionTriangle(KDOP_IDX_TYPE InMaterialIndex, const FVector4 &vert0, const FVector4 &vert1, const FVector4 &vert2)
Definition kDOP.h:307
FVector4 GetLocalNormal() const
Definition kDOP.h:296
KDOP_IDX_TYPE MaterialIndex
Definition kDOP.h:289
FVector4 V2
Definition kDOP.h:286
FVector4 V1
Definition kDOP.h:282
FVector4 V0
Definition kDOP.h:278
FkHitResult()
Definition kDOP.h:24
int32 Item
Definition kDOP.h:21
float Time
Definition kDOP.h:19
FVector4 Normal
Definition kDOP.h:17
KDOP_IDX_TYPE Nodes[NodeHistoryLength]
Definition kDOP.h:81
KDOP_IDX_TYPE GetOldestNode() const
Definition kDOP.h:103
@ NodeHistoryLength
Definition kDOP.h:80
TTraversalHistory()
Definition kDOP.h:84
TTraversalHistory AddNode(KDOP_IDX_TYPE NewNodeIndex) const
Definition kDOP.h:93
const kDOPArray< FTriangleSOA > & SOATriangles
Definition kDOP.h:1011
const DataProviderType & CollDataProvider
Definition kDOP.h:999
TkDOPCollisionCheck(const DataProviderType &InCollDataProvider)
Definition kDOP.h:1020
TkDOPTree< DataProviderType, KDOP_IDX_TYPE > TreeType
Definition kDOP.h:998
TkDOPNode< DataProviderType, KDOP_IDX_TYPE > NodeType
Definition kDOP.h:995
const kDOPArray< NodeType > & Nodes
Definition kDOP.h:1007
const TreeType & kDOPTree
Definition kDOP.h:1003
COLL_DATA_PROVIDER DataProviderType
Definition kDOP.h:992
FVector4 LocalStart
Definition kDOP.h:1046
KDOP_IDX_TYPE HitNodeIndex
Definition kDOP.h:1054
FkHitResult * Result
Definition kDOP.h:1036
FVector4 LocalHitNormal
Definition kDOP.h:1051
FVector4 LocalDir
Definition kDOP.h:1048
const FVector4 & Start
Definition kDOP.h:1038
const FVector4 & End
Definition kDOP.h:1039
FVector3SOA StartSOA
Definition kDOP.h:1057
TkDOPLineCollisionCheck(const FVector4 &InStart, const FVector4 &InEnd, bool bInbFindClosestIntersection, const COLL_DATA_PROVIDER &InCollDataProvider, FkHitResult *InResult)
Definition kDOP.h:1079
FVector3SOA EndSOA
Definition kDOP.h:1059
FVector3SOA DirSOA
Definition kDOP.h:1061
FVector4 LocalOneOverDir
Definition kDOP.h:1049
FVector4 LocalEnd
Definition kDOP.h:1047
FORCEINLINE FVector4 GetHitNormal(void)
Definition kDOP.h:1118
const bool bFindClosestIntersection
Definition kDOP.h:1044
FFourBox BoundingVolumes
Definition kDOP.h:387
bool LineCheck(TkDOPLineCollisionCheck< COLL_DATA_PROVIDER, KDOP_IDX_TYPE > &Check, TTraversalHistory< KDOP_IDX_TYPE > History) const
Definition kDOP.h:739
uint8 Occupancy
Definition kDOP.h:391
void LineCheckBounds(TkDOPLineCollisionCheck< COLL_DATA_PROVIDER, KDOP_IDX_TYPE > &Check, FVector4 &HitTime, int32 NodeHit[4]) const
Definition kDOP.h:655
FBox SplitTriangleList(int32 Start, int32 NumTris, TArray< FkDOPBuildCollisionTriangle< KDOP_IDX_TYPE > > &BuildTriangles, kDOPArray< FTriangleSOA > &SOATriangles, kDOPArray< NodeType > &Nodes)
Definition kDOP.h:436
FORCEINLINE TkDOPNode()
Definition kDOP.h:419
COLL_DATA_PROVIDER DataProviderType
Definition kDOP.h:383
bool LineCheckPreCalculated(TkDOPLineCollisionCheck< COLL_DATA_PROVIDER, KDOP_IDX_TYPE > &Check, const FVector4 &NodeHitTime, TTraversalHistory< KDOP_IDX_TYPE > History, int32 *NodeHit) const
Definition kDOP.h:819
bool LineCheckTriangles(TkDOPLineCollisionCheck< COLL_DATA_PROVIDER, KDOP_IDX_TYPE > &Check, const TTraversalHistory< KDOP_IDX_TYPE > &History) const
Definition kDOP.h:889
KDOP_IDX_TYPE StartIndex
Definition kDOP.h:410
KDOP_IDX_TYPE NumTriangles
Definition kDOP.h:409
KDOP_IDX_TYPE RightNode
Definition kDOP.h:401
bool bIsLeaf
Definition kDOP.h:390
TkDOPNode< DataProviderType, KDOP_IDX_TYPE > NodeType
Definition kDOP.h:386
FORCEINLINE void LineCheckBounds(TkDOPLineCollisionCheck< COLL_DATA_PROVIDER, KDOP_IDX_TYPE > &Check, FVector4 &HitTime, int32 NodeHit[4]) const
Definition kDOP.h:659
struct TkDOPNode::@1148::@1152 t
struct TkDOPNode::@1148::@1151 n
KDOP_IDX_TYPE LeftNode
Definition kDOP.h:400
kDOPArray< NodeType > Nodes
Definition kDOP.h:931
TkDOPNode< DataProviderType, KDOP_IDX_TYPE > NodeType
Definition kDOP.h:932
bool LineCheck(TkDOPLineCollisionCheck< COLL_DATA_PROVIDER, KDOP_IDX_TYPE > &Check) const
Definition kDOP.h:975
COLL_DATA_PROVIDER DataProviderType
Definition kDOP.h:929
void Build(TArray< FkDOPBuildCollisionTriangle< KDOP_IDX_TYPE > > &BuildTriangles)
Definition kDOP.h:946
kDOPArray< FTriangleSOA > SOATriangles
Definition kDOP.h:934
TVector< T > Min
Definition Box.h:39
TVector4< T > TransformPosition(const TVector< T > &V) const
Definition Matrix.inl:184
double FReal
Definition Plane.h:37
UE_FORCEINLINE_HINT T PlaneDot(const TVector< T > &P) const
Definition Plane.h:474
double Y
Definition Vector4.h:46
T & Component(int32 Index)
Definition Vector4.h:782
T Z
Definition Vector4.h:49
double X
Definition Vector4.h:43
double FReal
Definition Vector4.h:36
Definition UnrealMathFPU.h:42