29 #ifndef NVBLASTINTERNALCOMMON_H 30 #define NVBLASTINTERNALCOMMON_H 36 #include <PxBounds3.h> 53 EdgeWithParent(uint32_t s, uint32_t e, uint32_t p) : s(s), e(e), parent(p) {}
107 float maxv = std::max(std::abs(normal.x), std::max(std::abs(normal.y), std::abs(normal.z)));
109 if (maxv == std::abs(normal.x))
115 if (maxv == std::abs(normal.y))
134 return physx::PxVec2(point.y, point.z);
138 return physx::PxVec2(point.x, point.z);
140 return physx::PxVec2(point.x, point.y);
157 return physx::PxVec2(point.z, point.y);
160 return physx::PxVec2(point.y, point.z);
166 return physx::PxVec2(point.z, point.x);
168 return physx::PxVec2(point.x, point.z);
172 return physx::PxVec2(point.y, point.x);
174 return physx::PxVec2(point.x, point.y);
179 #define MAXIMUM_EXTENT 1000 * 1000 * 1000 180 #define BBOX_TEST_EPS 1e-5f 187 if (std::max(aBox.minimum.x, bBox.minimum.x) > std::min(aBox.maximum.x, bBox.maximum.x) +
BBOX_TEST_EPS)
189 if (std::max(aBox.minimum.y, bBox.minimum.y) > std::min(aBox.maximum.y, bBox.maximum.y) +
BBOX_TEST_EPS)
191 if (std::max(aBox.minimum.z, bBox.minimum.z) > std::min(aBox.maximum.z, bBox.maximum.z) +
BBOX_TEST_EPS)
202 physx::PxVec3& result)
204 float div = (b - a).
dot(pl.n);
205 if (physx::PxAbs(div) < 0.0001f)
217 float t = (-a.dot(pl.n) - pl.d) / div;
218 if (t < 0.0f || t > 1.0f)
222 result = (b - a) * t + a;
227 #define POS_COMPARISON_OFFSET 1e-5f 228 #define NORM_COMPARISON_OFFSET 1e-3f 275 return operator()(a.
p, b.
p);
288 NvcVec3 centroid = { 0.0f, 0.0f, 0.0f };
291 centroid = centroid + hull.
points[i];
313 (a.
x * b.
y * c.
z - a.
x * b.
z * c.
y - a.
y * b.
x * c.
z + a.
y * b.
z * c.
x + a.
z * b.
x * c.
y - a.
z * b.
y * c.
x);
317 return (1.0f / 6.0f) * std::abs(volume);
bool operator()(const Vertex &a, const Vertex &b) const
Definition: NvBlastExtAuthoringInternalCommon.h:273
ProjectionDirections
Definition: NvBlastExtAuthoringInternalCommon.h:93
uint32_t e
Definition: NvBlastExtAuthoringTypes.h:61
uint32_t s
Definition: NvBlastExtAuthoringInternalCommon.h:50
uint16_t indexBase
Definition: NvBlastExtAuthoringTypes.h:127
Definition: NvBlastExtAuthoringInternalCommon.h:95
Definition: NvBlastExtAuthoringInternalCommon.h:96
#define NORM_COMPARISON_OFFSET
Definition: NvBlastExtAuthoringInternalCommon.h:228
NV_INLINE float normal(const float a[3], float r[3])
Definition: NvBlastMath.h:93
Definition: NvBlastExtAuthoringInternalCommon.h:48
float z
Definition: NvCTypes.h:51
Definition: NvBlastExtAuthoringInternalCommon.h:60
uint16_t vertexCount
Definition: NvBlastExtAuthoringTypes.h:125
NvcVec3 n
Definition: NvBlastExtAuthoringTypes.h:72
uint32_t * indices
Definition: NvBlastExtAuthoringTypes.h:139
#define BBOX_TEST_EPS
Definition: NvBlastExtAuthoringInternalCommon.h:180
bool operator<(const Edge &a, const Edge &b)
Definition: NvBlastExtAuthoringInternalCommon.h:82
NV_INLINE float calculateCollisionHullVolume(const CollisionHull &hull)
Definition: NvBlastExtAuthoringInternalCommon.h:280
uint32_t e
Definition: NvBlastExtAuthoringInternalCommon.h:50
HullPolygon * polygonData
Definition: NvBlastExtAuthoringTypes.h:140
Definition: NvBlastExtAuthoringTypes.h:120
float x
Definition: NvCTypes.h:51
Definition: NvBlastExtAuthoringInternalCommon.h:99
Definition: NvBlastExtAuthoringTypes.h:133
NV_INLINE void div(float a[3], float divisor)
Definition: NvBlastMath.h:43
float x
Definition: NvCTypes.h:45
bool operator()(const Vertex &a, const Vertex &b) const
Definition: NvBlastExtAuthoringInternalCommon.h:234
Definition: NvBlastExtAuthoringInternalCommon.h:97
#define NV_INLINE
Definition: NvPreprocessor.h:350
Definition: NvBlastExtAuthoringInternalCommon.h:232
NvcVec3 * points
Definition: NvBlastExtAuthoringTypes.h:138
uint32_t pointsCount
Definition: NvBlastExtAuthoringTypes.h:135
NvcVec2 uv[1]
Definition: NvBlastExtAuthoringTypes.h:73
Definition: NvBlastExtAuthoringInternalCommon.h:261
NV_FORCE_INLINE physx::PxVec2 getProjectedPointWithWinding(const physx::PxVec3 &point, ProjectionDirections dir)
Definition: NvBlastExtAuthoringInternalCommon.h:151
uint32_t parent
Definition: NvBlastExtAuthoringInternalCommon.h:51
bool operator()(const NvcVec3 &a, const NvcVec3 &b) const
Definition: NvBlastExtAuthoringInternalCommon.h:263
uint32_t polygonDataCount
Definition: NvBlastExtAuthoringTypes.h:137
NV_INLINE float dot(const float a[3], const float b[3])
Definition: NvBlastMath.h:73
EdgeWithParent(uint32_t s, uint32_t e, uint32_t p)
Definition: NvBlastExtAuthoringInternalCommon.h:53
NV_FORCE_INLINE ProjectionDirections getProjectionDirection(const physx::PxVec3 &normal)
Definition: NvBlastExtAuthoringInternalCommon.h:105
NV_INLINE bool weakBoundingBoxIntersection(const physx::PxBounds3 &aBox, const physx::PxBounds3 &bBox)
Definition: NvBlastExtAuthoringInternalCommon.h:185
#define POS_COMPARISON_OFFSET
Definition: NvBlastExtAuthoringInternalCommon.h:227
Definition: NvBlastExtAuthoringTypes.h:57
NV_INLINE bool getPlaneSegmentIntersection(const physx::PxPlane &pl, const physx::PxVec3 &a, const physx::PxVec3 &b, physx::PxVec3 &result)
Definition: NvBlastExtAuthoringInternalCommon.h:201
Definition: NvBlastExtAuthoringTypes.h:67
NvcVec3 p
Definition: NvBlastExtAuthoringTypes.h:71
NV_FORCE_INLINE physx::PxVec2 getProjectedPoint(const physx::PxVec3 &point, ProjectionDirections dir)
Definition: NvBlastExtAuthoringInternalCommon.h:130
bool operator()(const EdgeWithParent &a, const EdgeWithParent &b) const
Definition: NvBlastExtAuthoringInternalCommon.h:62
float y
Definition: NvCTypes.h:45
Definition: NvBlastArray.h:37
Definition: NvCTypes.h:49
#define NV_FORCE_INLINE
Definition: NvPreprocessor.h:365
uint32_t s
Definition: NvBlastExtAuthoringTypes.h:60
float y
Definition: NvCTypes.h:51
EdgeWithParent()
Definition: NvBlastExtAuthoringInternalCommon.h:52