26 NAVTAG_IS_EXCLUSIVE_BIT = 0,
27 NAVTAG_IS_ON_NAVGRAPH_BIT = 1,
28 NAVTAG_IS_FROM_GENERATION = 2,
29 NAVTAG_IS_GENERATION_DEFAULT = 3,
36 static Color GetDefaultColor() {
return Color::Orange; }
37 static Color GetExclusiveColor() {
return Color::Red; }
39 DynamicNavTag() { Clear(); }
44 m_blindDataArray.Clear();
45 SetColor(GetDefaultColor());
50 void InitFromBlob(
const NavTag& navTag);
52 bool operator<(
const DynamicNavTag& other)
const;
53 bool operator==(
const DynamicNavTag& other)
const;
54 bool operator!=(
const DynamicNavTag& other)
const {
return !operator==(other); }
56 bool operator<(
const NavTag& other)
const;
57 bool operator==(
const NavTag& other)
const {
return IsEqualToNavTag(other); }
58 bool operator!=(
const NavTag& other)
const {
return !operator==(other); }
61 bool IsEqualToNavTag(
const NavTag& other)
const;
63 KyUInt32 GetWordCount()
const {
return m_blindDataArray.GetCount(); }
64 const KyUInt32* GetWords()
const {
return m_blindDataArray.GetDataPtr(); }
65 KyUInt32 GetWord(
KyUInt32 wordIdx)
const {
return m_blindDataArray[wordIdx]; }
67 bool IsEmpty()
const {
return IsExclusive() ==
false && m_blindDataArray.IsEmpty(); }
68 bool IsExclusive()
const {
return IsBitSetInMask<NAVTAG_IS_EXCLUSIVE_BIT>(m_flags); }
69 bool IsWalkable()
const {
return IsExclusive() ==
false; }
70 bool IsOnNavGraph()
const {
return IsBitSetInMask<NAVTAG_IS_ON_NAVGRAPH_BIT>(m_flags); }
71 bool IsOnNavMesh()
const {
return IsOnNavGraph() ==
false; }
72 bool IsFromGeneration()
const {
return IsBitSetInMask<NAVTAG_IS_FROM_GENERATION>(m_flags); }
73 bool IsFromRuntime()
const {
return IsFromGeneration() ==
false; }
74 bool IsGenerationDefault()
const {
return IsBitSetInMask<NAVTAG_IS_GENERATION_DEFAULT>(m_flags); }
76 Color GetColor()
const {
return Color(m_colorR, m_colorG, m_colorB); }
80 SetBitInMask<NAVTAG_IS_EXCLUSIVE_BIT>(m_flags);
81 m_blindDataArray.Clear();
82 SetColor(GetExclusiveColor());
87 UnSetBitInMask<NAVTAG_IS_EXCLUSIVE_BIT>(m_flags);
88 if (GetColor() == GetExclusiveColor())
89 SetColor(GetDefaultColor());
92 void SetColor(Color color) { SetColor(color.r, color.g, color.b); }
101 KY_DEPRECATED(Color GetVisualColor()
const) {
return GetColor(); }
102 KY_DEPRECATED(
static Color GetDefaultVisualColor()) {
return GetDefaultColor(); }
103 KY_DEPRECATED(
static Color GetExclusiveVisualColor()) {
return GetExclusiveColor(); }
106 void SetOnNavGraph() { SetBitInMask<NAVTAG_IS_ON_NAVGRAPH_BIT>(m_flags); }
107 void SetOnNavMesh() { UnSetBitInMask<NAVTAG_IS_ON_NAVGRAPH_BIT>(m_flags); }
108 void SetFromGeneration() { SetBitInMask<NAVTAG_IS_FROM_GENERATION>(m_flags); }
109 void SetAsGenerationDefault() { SetBitInMask<NAVTAG_IS_GENERATION_DEFAULT>(m_flags); }
112 KyArrayPOD<KyUInt32> m_blindDataArray;
122 KY_ROOT_BLOB_CLASS(NavData, NavTag, 1)
125 static Color GetDefaultColor() {
return DynamicNavTag::GetDefaultColor(); }
126 static Color GetExclusiveColor() {
return DynamicNavTag::GetExclusiveColor(); }
130 bool operator==(
const NavTag& other)
const;
131 bool operator!=(
const NavTag& other)
const {
return !operator==(other); }
134 bool operator<(
const NavTag& other)
const;
136 bool operator<(
const DynamicNavTag& other)
const;
137 bool operator==(
const DynamicNavTag& other)
const {
return other.operator==(*this); }
138 bool operator!=(
const DynamicNavTag& other)
const {
return !operator==(other); }
140 KyUInt32 GetWordCount()
const {
return m_blindData.GetCount(); }
141 const KyUInt32* GetWords()
const {
return m_blindData.GetValues(); }
143 KyUInt32 GetByteSize()
const {
return KyUInt32((
char*)(m_blindData.GetValues() + m_blindData.GetCount()) - (
char*)this); }
145 bool IsDefault()
const {
return m_blindData.GetCount() == 0; }
146 bool IsExclusive()
const {
return IsBitSetInMask<NAVTAG_IS_EXCLUSIVE_BIT>(m_flags); }
147 bool IsWalkable()
const {
return IsExclusive() ==
false; }
148 bool IsOnNavGraph()
const {
return IsBitSetInMask<NAVTAG_IS_ON_NAVGRAPH_BIT>(m_flags); }
149 bool IsOnNavMesh()
const {
return IsOnNavGraph() ==
false; }
150 bool IsFromGeneration()
const {
return IsBitSetInMask<NAVTAG_IS_FROM_GENERATION>(m_flags); }
151 bool IsFromRuntime()
const {
return IsFromGeneration() ==
false; }
152 bool IsGenerationDefault()
const {
return IsBitSetInMask<NAVTAG_IS_GENERATION_DEFAULT>(m_flags); }
154 Color GetColor()
const {
return Color(m_colorR, m_colorG, m_colorB); }
157 KY_DEPRECATED(Color GetVisualColor()
const) {
return GetColor(); }
158 KY_DEPRECATED(
static Color GetDefaultVisualColor()) {
return GetDefaultColor(); }
159 KY_DEPRECATED(
static Color GetExclusivetVisualColor()) {
return GetExclusiveColor(); }
163 BlobArray<KyUInt32> m_blindData;
173 SwapEndianness(e,
self.m_blindData);
174 SwapEndianness(e,
self.m_flags);
175 SwapEndianness(e,
self.m_colorR);
176 SwapEndianness(e,
self.m_colorG);
177 SwapEndianness(e,
self.m_colorB);
180 class NavTagBlobBuilder :
public BaseBlobBuilder<NavTag>
183 NavTagBlobBuilder(
const DynamicNavTag& navTag) : m_navTag(&navTag) {}
187 const DynamicNavTag* m_navTag;
190 class NavTagCopier :
public BaseBlobBuilder<NavTag>
193 NavTagCopier(
const NavTag& navTag) : m_navTag(&navTag) {}
196 const NavTag* m_navTag;
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
#define KY_CLASS_WITHOUT_COPY(ClassName)
Define to forbid copy constructor and copy assignment.
Definition: types.h:196
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:132
Target
Enumerates the possible endianness types relative to the current platform.
Definition: endianness.h:27
#define KY_DEPRECATED(expr)
The compiler issues a warning when a deprecated function or typedef is used.
Definition: types.h:93
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
std::uint8_t KyUInt8
uint8_t
Definition: types.h:27
#define KyUInt32MAXVAL
KyUInt32 max value
Definition: types.h:68