17 class DisplayListManager;
18 class BiTangentSorter_IncreasingAngleFromReferenceDirection;
20 enum StringPullerResult
22 StringPuller_NotInitialized,
23 StringPuller_NotComputed,
25 StringPuller_Done_Success,
27 StringPuller_Done_InvalidInput,
28 StringPuller_Done_CurrentPivotOppositeBorderNotFound,
29 StringPuller_Done_BubbleToCornerFunnelFailure,
30 StringPuller_Done_NextPivotNotFound,
31 StringPuller_Done_NextPivotOppositeBorderNotFound,
45 KY_INLINE
void Compute(StringPulledBubbleList& stringPulledBubbleList);
48 void Advance(StringPulledBubbleList& stringPulledBubbleList,
KyUInt32 maxPivotPerAdvance = 1);
52 KyResult RunFromCurrentPivot(StringPulledBubbleList& stringPulledBubbleList);
56 KyResult StringPullBetweenPivots(StringPulledBubbleList& stringPulledBubbleList);
58 KyResult ComputeCurrentPivotEnterOrthoOppositeBorderIndex();
59 KyResult ComputeNextPivotEnterOrthoOppositeBorderIndex();
61 KyResult ComputeCornerEnterOrthoOppositeBorderIndex(
KyUInt32 cornerIndex, FunnelSide cornerSide,
const Vec2f& enterDirection,
62 KyUInt32& oppositeBorderStartIdx,
KyUInt32& oppositeBorderEndIdx,
const Color& baseColor,
const char* displayListName);
65 KyResult CollectIntersectingBubblesInPivotTurn();
70 KyUInt32 GetNextTangentBubbleIdx(FunnelSide funnelSide,
const Vec2f& refDir);
72 void InitVisualDebugRunFromCurrentPivot()
const;
73 void VisualDebugGetNextTangentBubbleIdx(
KyUInt32 bubbleCount,
const Bubble& curPivotBubble,
const Vec2f& refDir, BiTangentSorter_IncreasingAngleFromReferenceDirection& increasingAngleSorter)
const;
74 void VisualDebugStringPullBetweenPivots()
const;
75 void VisualDebugComputeCornerEnterOrtho_1(
const Color& displayColor,
const char* displayListName,
KyUInt32 cornerIndex)
const;
76 void VisualDebugComputeCornerEnterOrtho_2(
const Color& displayColor,
const char* displayListName,
KyUInt32 cornerIndex,
const Vec2f& curPivotEnterOrthoDir,
const Vec2f& enterDirection)
const;
77 void VisualDebugComputeCornerEnterOrtho_3(
const char* displayListName,
KyUInt32 oppositeBorderStartIdx,
KyUInt32 oppositeBorderEndIdx,
Color displayColor)
const;
80 void DisplayOppositeBorderError(
KyUInt32 cornerIdx,
const Vec2f& direction,
const char* text);
92 BubbleFunnelBorder m_funnelClosedBorder;
97 FunnelSide m_currentPivotSide;
98 Vec2f m_currentPivotEnterDirection;
99 KyUInt32 m_currentPivotOrthoOppositeBorderStartIdx;
100 KyUInt32 m_currentPivotOrthoOppositeBorderEndIdx;
103 FunnelSide m_nextPivotSide;
104 Vec2f m_nextPivotEnterDirection;
105 KyUInt32 m_nextPivotOrthoOppositeBorderStartIdx;
106 KyUInt32 m_nextPivotOrthoOppositeBorderEndIdx;
111 KyFloat32 GetSqLength2d()
const {
return SquareDistance2d(m_startPos, m_endPos); }
121 StringPullerResult m_result;
125 mutable char m_loopGroupName[64];
129 bool m_visualDebugOneGroupPerLoop;
134 KY_INLINE
void StringPuller::Compute(StringPulledBubbleList& stringPulledBubbleList) { Advance(stringPulledBubbleList,
KyUInt32MAXVAL); }
Game side: Manages all DisplayListData, send them to the NavigationLab.
Definition: displaylist.h:375
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
This class encapsulate an array of Bubbles.
Definition: bubblearray.h:22
RotationDirection
Defines the 4 possible cases of possibly constrained rotation in the horizontal plane for a given ele...
Definition: rotation.h:15
This class represents a circle with potential rotation limitation.
Definition: bubble.h:31
2d vector using KyFloat32.
Definition: vec2f.h:18
Navigation return code class.
Definition: types.h:108
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
RGBA color.
Definition: color.h:16
Computes a StringPulledBubbleList from the provided array of bubbles.
Definition: stringpuller.h:36
Gathers all runtime flags used to debug internal algorithms (mostly PathFinder).
Definition: fulldebug.h:14
#define KyUInt32MAXVAL
KyUInt32 max value
Definition: types.h:68
float KyFloat32
float
Definition: types.h:32
3d vector using 32bits floating points.
Definition: vec3f.h:16