7 #ifndef Navigation_NavFloorSweepline_H
8 #define Navigation_NavFloorSweepline_H
18 class ScopedDisplayList;
27 class NavFloorSweepline
32 typedef SharedPoolList<ScanDataElement>::Iterator ScanDataIterator;
33 typedef SharedPoolList<SweeplineProperty> PropertyList;
34 typedef Pool<PropertyList>::Key PropertyListKey;
37 NavFloorSweepline(KyArray<InputEdgePiece>& input, SweepLineOutput& result);
41 void SetDebugDisplayList(
KyFloat32 rasterPrecision, const Vec2i& cellOffset, ScopedDisplayList* displayList)
43 m_rasterPrecision = rasterPrecision;
44 m_cellOriginOffset = Vec3i(cellOffset.x, cellOffset.y, 0);
45 m_displayList = displayList;
48 void MergePropertyMaps(PropertyList& mp1,
const PropertyList& mp2);
49 void UpdatePropertyList(PropertyList& propertyList, SweeplineProperty& prop_data);
50 KyUInt32 ComputeNavTagIndexFromPropertyList(
const PropertyList& propertySet);
51 bool AreListsEquals(
const PropertyList& list1,
const PropertyList& list2);
52 void TransferContent(PropertyList& list1, PropertyList& list2,
bool clearList2 =
true);
55 void EraseEndEvent(SharedPoolList<Vec2i>::Iterator epqi);
56 void RemoveRetiredEdges();
58 void InsertSortedInScandata(
const ScanDataElement& elem);
59 void InsertSortedIfUniqueInEndPointQueue(
const Vec2i& elem);
60 ScanDataIterator LowerBoundInScandata(
const EdgePoints& refElem);
62 void HandleInputEvents(
KyUInt32& currentInputIdx);
63 void InsertAllTheEdgesOfInsertionSetInScanDataListAndEndPointQueue();
64 void WriteOutEdge(
const InputEdgePiece& he,
const PropertyList& pm_left,
const PropertyList& pm_right);
66 void VisualDebugWriteOutEdges(
const InputEdgePiece &he,
const PropertyList &pm_left,
const PropertyList &pm_right);
68 void FilterOutlineEdge(
const InputEdgePiece& edge,
const PropertyList& left,
const PropertyList& right);
69 bool IsEdgeFullyInsideHole(
const PropertyList& leftSet,
const PropertyList& rightSet);
70 bool IsEdgeInsideFloor(
const PropertyList& propertySet);
71 bool IsHalfEdgeInHole(
const PropertyList& propertySet);
72 void DebugRender_Scan();
76 KyArray<InputEdgePiece>* m_input;
77 SweepLineOutput* m_result;
79 Pool<PropertyList> m_propertyListPool;
80 KyArray<PropertyListKey> m_propertyListKeys;
81 PropertyList::NodePool m_propertyListNodePool;
83 SharedPoolList<ScanDataElement> m_scanData;
84 SharedPoolList<ScanDataElement>::NodePool m_scanDataElementPool;
89 SharedPoolList<Vec2i> m_endpointQueue;
90 SharedPoolList<Vec2i>::NodePool m_endPointPool;
92 SharedPoolList<ScanDataElement> m_insertionSet;
94 KyArray<ScanDataElement> m_insertion_elements;
96 SharedPoolList<EdgePoints> m_removalSet;
97 SharedPoolList<EdgePoints>::NodePool m_removalSetPool;
101 Vec3i m_cellOriginOffset;
102 ScopedDisplayList* m_displayList;
107 #endif // Navigation_NavFloorSweepline_H
KyInt32 KyResult
Defines a type that can be returned by methods or functions in the Gameware Navigation SDK to indicat...
Definition: types.h:254
int KyInt32
Type used internally to represent a 32-bit integer.
Definition: types.h:35
Definition: gamekitcrowddispersion.h:20
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:137
unsigned int KyUInt32
Type used internally to represent an unsigned 32-bit integer.
Definition: types.h:36
float KyFloat32
Type used internally to represent a 32-bit floating-point number.
Definition: types.h:43