7 #ifndef KAIM_CONTOUR_LINE_EXTRACTOR_H
8 #define KAIM_CONTOUR_LINE_EXTRACTOR_H
24 class WorkingMemArray;
25 class WorkingMemBitField;
28 enum ContourLineEdgeType
30 CONTOUR_LINE_TRIANGLE_DIAGONAL,
31 CONTOUR_LINE_FLOOR_OBSTACLE,
32 CONTOUR_LINE_FLOOR_LINK,
33 CONTOUR_LINE_TAGVOLUME,
41 m_type(CONTOUR_LINE_TRIANGLE_DIAGONAL), m_swap(false) {}
43 ContourLineEdge(
const Vec2i& start,
const Vec2i& end,
KyFloat32 altStart,
KyFloat32 altEnd,
NavHalfEdgeIdx idx, ContourLineEdgeType type = CONTOUR_LINE_TRIANGLE_DIAGONAL) :
44 m_edgePiece(start, end), m_altStart(altStart), m_altEnd(altEnd), m_navHalfEdgeIdx(idx),
45 m_type(type), m_swap(false) {}
47 EdgePoints m_edgePiece;
51 ContourLineEdgeType m_type;
59 class ContourLineExtractor
77 static bool IsPointInMiddleOfEdge(
const Vec2i& p,
const Vec2i& a,
const Vec2i& b);
78 static bool IsPointInMiddleOfEdge_NotAlgined(
const Vec2i& p,
const Vec2i& a,
const Vec2i& b);
79 static bool IsPointStrictlyInMiddleOfEdge_NotAlgined(
const Vec2i& p,
const Vec2i& a,
const Vec2i& b);
84 WorkingMemArray<Vec2i>& halfEdgeIntersectionWithAltMin, WorkingMemArray<Vec2i>& halfEdgeIntersectionWithAltMax, WorkingMemBitField& egdeIntersect);
100 const WorkingMemBitField& m_triangleVsTagVolumeBoxIntersection;
101 const WorkingMemArray<Vec3f>& m_staticFloatVertices;
102 PixelBox m_enlargeTagVolumePixelBox;
108 WorkingMemArray<Vec2i>* m_halfEdgeIntersectionWithAltMin;
109 WorkingMemArray<Vec2i>* m_halfEdgeIntersectionWithAltMax;
110 WorkingMemBitField* m_halfEdgeIntersect;
115 #endif //KAIM_CONTOUR_LINE_EXTRACTOR_H
#define KyFloat32MAXVAL
The maximum value that can be stored in the KyFloat32 variable type.
Definition: types.h:227
This class represents a two-dimensional axis-aligned bounding box whose dimensions are stored using 3...
Definition: box2i.h:119
KyInt32 KyResult
Defines a type that can be returned by methods or functions in the Gameware Navigation SDK to indicat...
Definition: types.h:254
This class is a runtime wrapper of a NavFloorBlob, it gathers all the runtime information associated ...
Definition: navfloor.h:40
The NavFloorBlob contains a connected and not overlapping part of triangle mesh static data within a ...
Definition: navfloorblob.h:42
KyUInt32 NavHalfEdgeIdx
An index that uniquely identifies a single edge of a triangle within the set of edges owned by a NavF...
Definition: navmeshtypes.h:87
#define KY_CLASS_WITHOUT_COPY(ClassName)
Define to forbid copy constructor and copy assignment.
Definition: types.h:387
This class is a runtime container for all NavData that represents the world from the point of view of...
Definition: database.h:64
This class defines a two-dimensional vector whose coordinates are stored using 32-bit integers...
Definition: vec2i.h:26
Definition: gamekitcrowddispersion.h:20
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:137
KyUInt32 NavVertexIdx
An index that uniquely identifies a single vertex of a triangle within the set of vertices owned by a...
Definition: navmeshtypes.h:75
static const NavHalfEdgeIdx NavHalfEdgeIdx_Invalid
Represents an invalid NavHalfEdgeIdx.
Definition: navmeshtypes.h:88
float KyFloat32
Type used internally to represent a 32-bit floating-point number.
Definition: types.h:43
This class defines a three-dimensional vector whose coordinates are stored using floating-point numbe...
Definition: vec3f.h:23