10 #include "kypathdata/navmesh/navmeshtypes.h"
11 #include "kypathdata/generic/memory.h"
12 #include "kypathdata/math/vec3f.h"
13 #include "kypathdata/navmesh/closestpoint.h"
26 KY_DEFINE_NEW_DELETE_OPERATORS
30 m_integerPrecision(activeNavCellGrid.m_integerPrecision),
31 myStartingRadian(startingRadian), myEndingRadian(endingRadian),
32 m_center3f(query.m_centerPos3f), m_radius(query.m_radius) {}
34 KY_FORCE_INLINE
bool DoesIntersectEdge(
const Kaim::CoordPos64& startEdgeCoordPos,
const Kaim::CoordPos64& endEdgeCoordPos)
36 const Kaim::Vec3f startEdgePos(startEdgeCoordPos.x * m_integerPrecision, startEdgeCoordPos.y * m_integerPrecision, 0.f);
37 const Kaim::Vec3f endEdgePos(endEdgeCoordPos.x * m_integerPrecision, endEdgeCoordPos.y * m_integerPrecision, 0.f);
39 return SegmentVsPie2d(startEdgePos, endEdgePos, m_center3f, m_radius, myStartingRadian, myEndingRadian);
42 KY_FORCE_INLINE
void ComputeCollisionPosOnEdge(
const Kaim::CoordPos64& startEdgeCoordPos,
const Kaim::CoordPos64& endEdgeCoordPos, Kaim::Vec3f& collisionPos, KyFloat32& squareDistToCollisionPos)
44 const Kaim::Vec3f startEdgePos(startEdgeCoordPos.x * m_integerPrecision, startEdgeCoordPos.y * m_integerPrecision, 0.f);
45 const Kaim::Vec3f endEdgePos(endEdgeCoordPos.x * m_integerPrecision, endEdgeCoordPos.y * m_integerPrecision, 0.f);
47 Kaim::ClosestPoint::OnSegmentVsPoint2d(startEdgePos, endEdgePos, m_center3f, collisionPos, squareDistToCollisionPos);
50 KY_FORCE_INLINE
void ComputeTriangleCost(
const Kaim::CoordPos64& v0CoordPos,
const Kaim::CoordPos64& v1CoordPos,
const Kaim::CoordPos64& v2CoordPos, KyFloat32& cost)
52 const Kaim::Vec3f v0(v0CoordPos.x * m_integerPrecision, v0CoordPos.y * m_integerPrecision, 0.f);
53 const Kaim::Vec3f v1(v1CoordPos.x * m_integerPrecision, v1CoordPos.y * m_integerPrecision, 0.f);
54 const Kaim::Vec3f v2(v2CoordPos.x * m_integerPrecision, v2CoordPos.y * m_integerPrecision, 0.f);
57 Kaim::ClosestPoint::OnTriangleVsPoint2d(v0, v1, v2, m_center3f, unused, cost);