UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
TriangleOverlap.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Chaos/Core.h"
5
6namespace Chaos
7{
8 template<class T, int d>
9 class TBox;
10
11 template<typename TConcrete, bool bInstanced>
12 class TImplicitObjectScaled;
13
14
17
19 {
20 public:
21 FBoxSimd();
24
26
27 private:
29 bool ComputeEdge(const VectorRegister4Float& PlaneNormal, const VectorRegister4Float& PlaneVertex, const VectorRegister4Float& Edge, const VectorRegister4Float& Centroid) const;
30 bool ComputeBoxPlane(const VectorRegister4Float& DistCenter, const VectorRegister4Float& AxisHalfExtent) const;
31
32 VectorRegister4Float Position;
36 VectorRegister4Float XHalfExtent;
37 VectorRegister4Float YHalfExtent;
38 VectorRegister4Float ZHalfExtent;
39 VectorRegister4Float XAxisHalfExtent;
40 VectorRegister4Float YAxisHalfExtent;
41 VectorRegister4Float ZAxisHalfExtent;
42 static constexpr int32 EdgeNum = 3;
43 VectorRegister4Float Edges[EdgeNum];
44 };
45
47 {
48 public:
49 FAABBSimd();
55
56 private:
57 void Initialize(const FVec3& Translation, const FVec3f& HalfExtentsf);
58 bool ComputeEdgeOverlap(const VectorRegister4Float& TriangleEdge, const VectorRegister4Float& TriangleVertex, const VectorRegister4Float& Centroid) const;
59
60 VectorRegister4Float Position;
61 VectorRegister4Float HalfExtents;
62 const static VectorRegister4Float SignBit;
63 const static VectorRegister4Float SignX;
64 const static VectorRegister4Float SignY;
65 const static VectorRegister4Float SignZ;
66 static constexpr int32 EdgeNum = 3;
67 constexpr static VectorRegister4Float Edges[EdgeNum] = {
68 MakeVectorRegisterFloatConstant(1.f, 0.f, 0.f, 0.f),
69 MakeVectorRegisterFloatConstant(0.f, 1.f, 0.f, 0.f),
70 MakeVectorRegisterFloatConstant(0.f, 0.f, 1.f, 0.f)
71 };
72 };
73}
74
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
FORCEINLINE constexpr VectorRegister4Float MakeVectorRegisterFloatConstant(float X, float Y, float Z, float W)
Definition UnrealMathFPU.h:297
Definition TriangleOverlap.h:47
FAABBSimd()
Definition TriangleOverlap.cpp:515
FAABBSimd(const FVec3 &Translation, const TImplicitObjectScaled< TBox< FReal, 3 >, true > &QueryGeom)
FAABBSimd(const TImplicitObjectScaled< TBox< FReal, 3 >, true > &QueryGeom)
bool OverlapTriangle(const VectorRegister4Float &A, const VectorRegister4Float &B, const VectorRegister4Float &C) const
Definition TriangleOverlap.cpp:576
Definition TriangleOverlap.h:19
FBoxSimd(const FRigidTransform3 &QueryTM, const TImplicitObjectScaled< TBox< FReal, 3 >, true > &QueryGeom)
FBoxSimd()
Definition TriangleOverlap.cpp:307
bool OverlapTriangle(const VectorRegister4Float &A, const VectorRegister4Float &B, const VectorRegister4Float &C) const
Definition TriangleOverlap.cpp:420
Definition Box.h:23
Definition ImplicitObjectScaled.h:447
Definition Vector.h:407
Definition SkeletalMeshComponent.h:307
@ X
Definition SimulationModuleBase.h:152
bool ComputeSphereTriangleOverlapSimd(const VectorRegister4Float &A, const VectorRegister4Float &B, const VectorRegister4Float &C, const VectorRegister4Float &X, FRealSingle Radius)
Definition TriangleOverlap.cpp:231
float FRealSingle
Definition Real.h:14
bool ComputeCapsuleTriangleOverlapSimd(const VectorRegister4Float &A, const VectorRegister4Float &B, const VectorRegister4Float &C, const VectorRegister4Float &X1, const VectorRegister4Float &X2, FRealSingle Radius)
Definition TriangleOverlap.cpp:9
Definition UnrealMathFPU.h:20