17 class DisplayListManager;
25 GateDefinition(
GateType type,
const Vec3f& pathPos,
const Vec2f& gateLeftDir);
26 GateDefinition(
GateType type,
const Vec3f& pathPos,
const Vec3f& turnInnerPos,
const Vec2f& gateLeftDir);
28 GateType GetGateType()
const {
return m_gateType; }
29 const Vec3f& GetPathPos()
const {
return m_pathPos; }
30 const Vec3f& GetTurnInnerPos()
const {
return m_turnInnerPos; }
31 const Vec2f& GetGateLeftDir()
const {
return m_gateLeftDir; }
40 template <
class OSTREAM>
41 inline OSTREAM& operator<<(OSTREAM& os,
const GateDefinition& g)
43 os <<
"[p=" << g.GetPathPos() <<
", t=" << g.GetTurnInnerPos() <<
", lDir=" << g.GetGateLeftDir();
44 switch (g.GetGateType())
47 case StartGate : os <<
", type=StartGate ]";
break;
48 case EndGate : os <<
", type=EndGate ]";
break;
52 case LeftTurnEnd : os <<
", type=LeftTurnEnd ]";
break;
56 case RightTurnEnd : os <<
", type=RightTurnEnd ]";
break;
60 default: os <<
", !!! wrong gate type (" << g.GetGateType() <<
") !!!]";
break;
66 class GateDefinitionPersistentDisplayListIds
69 GateDefinitionPersistentDisplayListIds()
70 : m_displayListManager(nullptr)
78 ~GateDefinitionPersistentDisplayListIds() {}
80 void Initialize(DisplayListManager* displayListManager);
84 DisplayListManager* m_displayListManager;
89 KyUInt32 m_displayListId_TurnInnerPos;
93 class GateDefinitionDisplayConfig
96 GateDefinitionDisplayConfig() { SetDefaults(); }
100 Color m_pathPosColor;
101 Color m_turnInnerPosColor;
102 Color m_leftDirColor;
103 Color m_pathEdgeColor;
104 Color m_pathToTurnInnerPosColor_Left;
105 Color m_pathToTurnInnerPosColor_Right;
107 Color m_gateTypeColor[GATE_TYPE_COUNT];
113 GateDefinitionPersistentDisplayListIds m_persistentDisplayListIds;
116 class GateDefinitionArray :
public RefCountBase<GateDefinitionArray, MemStat_Channel>
119 GateDefinitionArray() : m_displayListManager(nullptr) {}
121 void Clear() { m_gateDefinitions.Clear(); }
123 void PushBack(
const GateDefinition& gateDefinition);
125 bool IsEmpty()
const {
return m_gateDefinitions.IsEmpty(); }
126 KyUInt32 GetGateDefinitionCount()
const {
return m_gateDefinitions.GetCount(); }
127 const GateDefinition& GetGateDefinition(
KyUInt32 idx)
const {
return m_gateDefinitions[idx]; }
129 void SendVisualDebug(
const GateDefinitionDisplayConfig& displayConfig,
const char* groupName,
KyUInt32 visualDebugId =
KyUInt32MAXVAL)
const;
132 KyArray<GateDefinition> m_gateDefinitions;
135 FullDebug m_fullDebug;
136 DisplayListManager* m_displayListManager;
Indicates the Gate is the start of a sampled turn to the left (CCW). The next Gate must have either L...
Definition: channel.h:28
Indicates the Gate is a right turn end.
Definition: channel.h:35
GateType
Enumerates the different kind of Gates.
Definition: channel.h:20
Indicates the Gate is a left turn end.
Definition: channel.h:30
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
Indicates the Gate is a sampled left turn intermediary Gate.
Definition: channel.h:29
Indicates the Gate is the start of a sampled turn to the right (CW). The next Gate must have either R...
Definition: channel.h:33
Indicates the Gate is not defined.
Definition: channel.h:22
Indicates the Gate is a small turn to the left (CCW).
Definition: channel.h:27
Indicates the Gate is a Channel start Gate.
Definition: channel.h:24
Indicates the Gate is a Channel width adjustment Gate. There is no direction modification there...
Definition: channel.h:37
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
Indicates the Gate is a small turn to the right (clockwise).
Definition: channel.h:32
Indicates the Gate is a Channel end Gate.
Definition: channel.h:25
Indicates the Gate is a Channel altitude clamping adjustment Gate. There is no direction modification...
Definition: channel.h:38
Indicates the Gate is a sampled right turn intermediary Gate.
Definition: channel.h:34
#define KyUInt32MAXVAL
KyUInt32 max value
Definition: types.h:68
float KyFloat32
float
Definition: types.h:32