26 class NavFloorSweepline
31 typedef SharedPoolList<ScanDataElement>::Iterator ScanDataIterator;
32 typedef SharedPoolList<SweeplineProperty> PropertyList;
33 typedef Pool<PropertyList>::Key PropertyListKey;
36 NavFloorSweepline(KyArray<InputEdgePiece>& input, SweepLineOutput& result);
40 void SetDebugDisplayList(
KyFloat32 rasterPrecision, const Vec2i& cellOffset, DisplayList* displayList)
42 m_rasterPrecision = rasterPrecision;
43 m_cellOriginOffset = Vec3i(cellOffset.x, cellOffset.y, 0);
44 m_displayList = displayList;
47 void MergePropertyMaps(PropertyList& mp1,
const PropertyList& mp2);
48 void UpdatePropertyList(PropertyList& propertyList, SweeplineProperty& prop_data);
49 KyUInt32 ComputeNavTagIndexFromPropertyList(
const PropertyList& propertySet);
50 bool AreListsEquals(
const PropertyList& list1,
const PropertyList& list2);
51 void TransferContent(PropertyList& list1, PropertyList& list2,
bool clearList2 =
true);
54 void EraseEndEvent(SharedPoolList<Vec2i>::Iterator epqi);
55 void RemoveRetiredEdges();
57 void InsertSortedInScandata(
const ScanDataElement& elem);
58 void InsertSortedIfUniqueInEndPointQueue(
const Vec2i& elem);
59 ScanDataIterator LowerBoundInScandata(
const EdgePoints& refElem);
61 void HandleInputEvents(
KyUInt32& currentInputIdx);
62 void InsertAllTheEdgesOfInsertionSetInScanDataListAndEndPointQueue();
63 void WriteOutEdge(
const InputEdgePiece& he,
const PropertyList& pm_left,
const PropertyList& pm_right);
65 void VisualDebugWriteOutEdges(
const InputEdgePiece &he,
const PropertyList &pm_left,
const PropertyList &pm_right);
67 void FilterOutlineEdge(
const InputEdgePiece& edge,
const PropertyList& left,
const PropertyList& right);
68 bool IsEdgeFullyInsideHole(
const PropertyList& leftSet,
const PropertyList& rightSet);
69 bool IsEdgeInsideFloor(
const PropertyList& propertySet);
70 bool IsHalfEdgeInHole(
const PropertyList& propertySet);
71 void DebugRender_Scan();
75 KyArray<InputEdgePiece>* m_input;
76 SweepLineOutput* m_result;
78 Pool<PropertyList> m_propertyListPool;
79 KyArray<PropertyListKey> m_propertyListKeys;
80 PropertyList::NodePool m_propertyListNodePool;
82 SharedPoolList<ScanDataElement> m_scanData;
83 SharedPoolList<ScanDataElement>::NodePool m_scanDataElementPool;
88 SharedPoolList<Vec2i> m_endpointQueue;
89 SharedPoolList<Vec2i>::NodePool m_endPointPool;
91 SharedPoolList<ScanDataElement> m_insertionSet;
93 KyArray<ScanDataElement> m_insertion_elements;
95 SharedPoolList<EdgePoints> m_removalSet;
96 SharedPoolList<EdgePoints>::NodePool m_removalSetPool;
100 Vec3i m_cellOriginOffset;
101 DisplayList* m_displayList;
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:132
Navigation return code class.
Definition: types.h:108
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
std::int32_t KyInt32
int32_t
Definition: types.h:24
float KyFloat32
float
Definition: types.h:32