73template<
typename KDOP_IDX_TYPE>
88 Nodes[NodeIndex] = 0xFFFFFFFF;
158 const float DotW =
Dot3(SideDirection, Intersection);
272template<
typename KDOP_IDX_TYPE>
293 return (
V0 +
V1 +
V2) / 3.f;
316template <
typename COLL_DATA_PROVIDER,
typename KDOP_IDX_TYPE>
struct TkDOPNode;
317template <
typename COLL_DATA_PROVIDER,
typename KDOP_IDX_TYPE>
struct TkDOPTree;
368 #define kDOPArray TArray
370 #define kDOPArray TChunkedArray
377template <
typename COLL_DATA_PROVIDER,
typename KDOP_IDX_TYPE>
549 n.LeftNode = Nodes.AddZeroed(2);
550 n.RightNode =
n.LeftNode + 1;
571 FkDOPBuildCollisionTriangle<KDOP_IDX_TYPE> EmptyTriangle(0,
FVector4(0,0,0,0),
FVector4(0,0,0,0),
FVector4(0,0,0,0));
573 t.StartIndex = SOATriangles.Num();
575 SOATriangles.AddZeroed(
t.NumTriangles );
620 for (
int32 TriangleIndex=Start; TriangleIndex<Start +
NumTris; TriangleIndex++)
679 NodeHit[
BoxIndex] = (MaxTime >= 0 && MaxTime >= MinTime && MinTime <
Check.Result->Time) ? 0xFFFFFFFF : 0;
761 && (!bHit ||
Check.bFindClosestIntersection))
773 && (!bHit ||
Check.bFindClosestIntersection))
836 && (!bHit ||
Check.bFindClosestIntersection))
848 && (!bHit ||
Check.bFindClosestIntersection))
907 if( !
Check.bFindClosestIntersection )
921template<
typename COLL_DATA_PROVIDER,
typename KDOP_IDX_TYPE>
@ 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
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:122
#define NUM_PLANES
Definition kDOP.h:11
#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 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
FORCEINLINE void VectorStoreFloat1(const VectorRegister4Float &Vec, float *Dst)
Definition UnrealMathFPU.h:610
#define VectorReplicate(Vec, ElementIndex)
Definition UnrealMathFPU.h:627
#define UE_MAX_FLT
Definition UnrealMathUtility.h:147
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
#define VectorMask_LT(Vec1, Vec2)
Definition VectorRegister.h:123
#define VectorMask_LE(Vec1, Vec2)
Definition VectorRegister.h:124
#define VectorMask_GE(Vec1, Vec2)
Definition VectorRegister.h:126
#define VectorMask_EQ(Vec1, Vec2)
Definition VectorRegister.h:127
@ Start
Definition GeoEnum.h:100
FBox GetBox(int32 BoundingVolumeIndex)
Definition kDOP.h:358
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:291
FkDOPBuildCollisionTriangle(KDOP_IDX_TYPE InMaterialIndex, const FVector4 &vert0, const FVector4 &vert1, const FVector4 &vert2)
Definition kDOP.h:306
FVector4 GetLocalNormal() const
Definition kDOP.h:295
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:23
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:102
@ NodeHistoryLength
Definition kDOP.h:80
TTraversalHistory()
Definition kDOP.h:83
TTraversalHistory AddNode(KDOP_IDX_TYPE NewNodeIndex) const
Definition kDOP.h:92
const kDOPArray< FTriangleSOA > & SOATriangles
Definition kDOP.h:1011
const DataProviderType & CollDataProvider
Definition kDOP.h:999
TkDOPCollisionCheck(const DataProviderType &InCollDataProvider)
Definition kDOP.h:1016
TkDOPTree< DataProviderType, KDOP_IDX_TYPE > TreeType
Definition kDOP.h:994
TkDOPNode< DataProviderType, KDOP_IDX_TYPE > NodeType
Definition kDOP.h:991
const kDOPArray< NodeType > & Nodes
Definition kDOP.h:1007
const TreeType & kDOPTree
Definition kDOP.h:1003
COLL_DATA_PROVIDER DataProviderType
Definition kDOP.h:988
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:1075
FVector3SOA EndSOA
Definition kDOP.h:1059
FVector3SOA DirSOA
Definition kDOP.h:1061
FVector4 LocalOneOverDir
Definition kDOP.h:1049
FVector4 LocalEnd
Definition kDOP.h:1047
FVector4 GetHitNormal(void)
Definition kDOP.h:1114
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:735
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:434
TkDOPNode()
Definition kDOP.h:417
COLL_DATA_PROVIDER DataProviderType
Definition kDOP.h:381
bool LineCheckPreCalculated(TkDOPLineCollisionCheck< COLL_DATA_PROVIDER, KDOP_IDX_TYPE > &Check, const FVector4 &NodeHitTime, TTraversalHistory< KDOP_IDX_TYPE > History, int32 *NodeHit) const
Definition kDOP.h:815
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:384
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:928
bool LineCheck(TkDOPLineCollisionCheck< COLL_DATA_PROVIDER, KDOP_IDX_TYPE > &Check) const
Definition kDOP.h:971
COLL_DATA_PROVIDER DataProviderType
Definition kDOP.h:925
void Build(TArray< FkDOPBuildCollisionTriangle< KDOP_IDX_TYPE > > &BuildTriangles)
Definition kDOP.h:942
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
UE_FORCEINLINE_HINT T PlaneDot(const TVector< T > &P) const
Definition Plane.h:474
T Y
Definition Vector4.h:46
T & Component(int32 Index)
Definition Vector4.h:782
T Z
Definition Vector4.h:49
T X
Definition Vector4.h:43
Definition UnrealMathFPU.h:42