gwnavruntime/collision/heightfieldtile.h Source File
Go to the documentation of this file.
7 #ifndef Navigation_HeightFieldTile_H
8 #define Navigation_HeightFieldTile_H
18 struct HeightFieldTile
28 KY_INLINE
KyUInt32 GetSide(
const Vec2f& a,
const Vec2f& b,
const Vec3f& c)
const
30 return (b.x - a.x)*(c.y - a.y) - (b.y - a.y)*(c.x - a.x) <= 0.f ? RightOfPoint : LeftOfPoint;
33 KY_INLINE Triangle3f GetFirstTriangle()
const
36 tri.Set(m_vertices[0], m_vertices[2], m_vertices[3]);
40 KY_INLINE Triangle3f GetSecondTriangle()
const
43 tri.Set(m_vertices[0], m_vertices[1], m_vertices[2]);
49 CardinalDir GetFirstExitDirection(
const Vec2f& a,
const Vec2f& b)
const;
64 KY_INLINE
CardinalDir GetExitDirectionFromEntryDirection(
const Vec2f& a,
const Vec2f& b)
const
67 const KyUInt32 rightVertexSide = GetSide(a, b, m_vertices[facingDir]);
68 const KyUInt32 leftVertexSide = GetSide(a, b, m_vertices[ClampVertexIndex(facingDir + 1)]);
69 const KyUInt32 exitDirOffset = (rightVertexSide + leftVertexSide * 2 - (rightVertexSide & leftVertexSide)) + 1;
71 return ClampVertexIndex(m_entrantDirection + exitDirOffset);
75 KY_INLINE
KyUInt32 ClampVertexIndex(
const KyUInt32 index)
const {
return index & 3 ; }
84 #endif //Navigation_HeightField_H
CardinalDir GetOppositeCardinalDir(const CardinalDir dir)
Returns the CardinalDir that lies in the opposite direction from the specified CardinalDir.
Definition: cardinaldir.h:35
Vec2i CellPos
A type that represents the position of a cell within a 2D grid.
Definition: navmeshtypes.h:33
KyUInt32 CardinalDir
Defines a type that refers to one of the cardinal points on the compass:
Definition: cardinaldir.h:23
static const CardinalDir CardinalDir_INVALID
Identifies an invalid cardinal direction.
Definition: cardinaldir.h:29
Definition: gamekitcrowddispersion.h:20
unsigned int KyUInt32
Type used internally to represent an unsigned 32-bit integer.
Definition: types.h:36