24 class ChannelArrayComputer
29 ChannelArrayComputer() { Clear(); }
30 ~ChannelArrayComputer() { Clear(); }
32 void SetChannelComputerConfig(
const ChannelComputerConfig& channelConfig) { m_channelConfig = channelConfig; }
34 void* GetTraverseLogicUserData()
const {
return m_traverseLogicUserData; }
35 void SetTraverseLogicUserData(
void* traverseLogicUserData) { m_traverseLogicUserData = traverseLogicUserData; }
37 void Init(Path* rawPath, PathClamperFlagMask pathClamperFlagMask);
40 template<
class TLogic>
void Advance(WorkingMemory* workingMemory);
42 bool IsFinished()
const {
return m_result >= ChannelArrayResult_Error_NoRawPath; }
45 template<
class TLogic>
KyResult FullCompute(WorkingMemory* workingMemory, Path* rawPath, PathClamperFlagMask pathClamperFlagMask, Ptr<Path>& pathWithChannels);
48 template <
class TLogic>
KyResult ComputePreChannelPolyline(WorkingMemory* workingMemory, Channel* channel);
49 template <
class TLogic>
KyResult ComputePostChannelPolyline(WorkingMemory* workingMemory, Channel* channel);
50 template <
class TLogic>
KyResult ComputePreOrPostPolylineSection(Database* database, WorkingMemory* workingMemory,
const Vec3f& gatePathPos,
const Vec3f& gateStartPos,
const Vec3f& gateEndPos,
51 KyArray<Vec2f>& polyline);
53 template<
class TLogic>
KyResult CreateAggregatedPath(WorkingMemory* workingMemory);
54 template<
class TLogic>
KyResult CreateChannelPath(Database* database, WorkingMemory* workingMemory,
const Channel& channel, Ptr<Path>& channelPath);
56 void UpdateChannelSectionFromPath(
const Path* channelPath,
KyUInt32 channelIdx, Ptr<Channel>& channel);
58 KyResult FillAggregatedPathWithChannelPath(
const Path* ChannelPath,
KyUInt32& currentAggregatedPathEdgeIndex,
KyInt32 clearanceDistanceInt,
KyInt32 cellSizeInCoord);
61 void EnlargeCellBoxFromPolyline(
const KyArray<Vec2f>& polyline,
CellBox& cellBox);
63 KyResult SplitChannelOnCollapsedSections(
const Channel* originalChannel,
KyUInt32 originalChannelStartPathNodeIdx, ChannelArray* finalChannelArray);
69 void FindEndNodeIdxOfNavMeshSection();
70 void FindEndNodeIdxOfNonNavMeshSection();
72 void SetPathNodeToPathWithChannels(
const Path* path,
KyUInt32 pathNodeIndex,
KyUInt32 aggregatedPathNodeIndex);
73 void SetPathEdgeToPathWithChannels(
const Path* path,
KyUInt32 pathEdgeIndex,
KyUInt32 aggregatedPathEdgeIndex);
75 DisplayListManager* GetDisplayListManager();
78 ChannelComputerConfig m_channelConfig;
79 void* m_traverseLogicUserData;
80 PathClamperFlagMask m_pathClamperFlagMask;
82 KyArray<KyUInt32> m_navGraphSectionBoundaryIndices;
83 KyUInt32 m_currentSectionStartNodeIdx;
87 Ptr<ChannelArray> m_channelArray;
88 Ptr<Path> m_pathWithChannels;
92 Ptr<Channel> m_channelUnderConstruction;
94 DiagonalStrip m_diagonalStrip;
95 BubbleArray m_bubbleArray;
96 StringPulledBubbleList m_stringPulledBubbleList;
98 DiagonalStripComputer m_diagonalStripComputer;
99 StringPuller m_stringPuller;
100 GateArrayComputer m_gateArrayComputer;
102 FullDebug m_fullDebug;
103 ChannelArrayComputerStats m_stats;
106 DiagonalStripDisplayListIds m_diagonalStripDisplayListIds;
Box2i CellBox
A type that represents a bounding box around cells in a 2D grid.
Definition: navmeshtypes.h:31
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
ChannelArrayComputerResult
ChannelArrayComputerResult.
Definition: channelarraycomputerresult.h:13