30 m_isExclusive =
false;
31 m_color = GetDefaultColor();
34 static KY_INLINE
Color GetDefaultColor() {
return Color(0, 0, 139); }
35 static KY_INLINE
Color GetExclusiveColor() {
return Kaim::NavTag::GetExclusiveColor(); }
37 KY_INLINE
bool IsExclusive()
const {
return m_isExclusive; }
38 KY_INLINE
bool HasSmartObject()
const {
return GetSmartObjectID() !=
KyUInt32MAXVAL; }
39 KY_INLINE
bool HasLayer()
const {
return GetLayerID() !=
KyUInt32MAXVAL; }
41 KY_INLINE
KyUInt32 GetLayerID()
const {
return m_layerID; }
42 KY_INLINE
KyUInt32 GetSmartObjectID()
const {
return m_smartObjectID; }
43 KY_INLINE
KyUInt32 GetGameObjectUniqueID()
const {
return m_gameObjectUniqueID; }
44 KY_INLINE
KyUInt32 GetUserDataID()
const {
return m_userDataID; }
45 KY_INLINE
Kaim::Color GetColor()
const {
return m_color; }
47 KY_INLINE
void SetAsExclusive();
48 KY_INLINE
void SetAsWalkable();
49 KY_INLINE
void SetLayerID(
KyUInt32 layerID) { m_layerID = layerID; }
50 KY_INLINE
void SetSmartObjectID(
KyUInt32 smartObjectID) { m_smartObjectID = smartObjectID; }
51 KY_INLINE
void SetGameObjectUniqueID(
KyUInt32 gameObjectUniqueID) { m_gameObjectUniqueID = gameObjectUniqueID; }
52 KY_INLINE
void SetUserDataID(
KyUInt32 userDataID) { m_userDataID = userDataID; }
53 KY_INLINE
void SetColor(
const Kaim::Color& color) { m_color = color; }
58 static KY_INLINE
bool IsExclusive(
const Kaim::NavTag& navTag) {
return navTag.IsExclusive(); }
59 static KY_INLINE
bool HasSmartObject(
const Kaim::NavTag& navTag) {
return GetSmartObjectID(navTag) !=
KyUInt32MAXVAL; }
60 static KY_INLINE
bool HasLayer(
const Kaim::NavTag& navTag) {
return GetLayerID(navTag) !=
KyUInt32MAXVAL; }
61 static KY_INLINE
KyUInt32 GetLayerID(
const Kaim::NavTag& navTag) {
return navTag.m_blindData.GetCount() >= 1 ? navTag.m_blindData.GetValues()[0] :
KyUInt32MAXVAL; }
62 static KY_INLINE
KyUInt32 GetSmartObjectID(
const Kaim::NavTag& navTag) {
return navTag.m_blindData.GetCount() >= 2 ? navTag.m_blindData.GetValues()[1] :
KyUInt32MAXVAL; }
63 static KY_INLINE
KyUInt32 GetGameObjectUniqueID(
const Kaim::NavTag& navTag) {
return navTag.m_blindData.GetCount() >= 3 ? navTag.m_blindData.GetValues()[2] :
KyUInt32MAXVAL; }
64 static KY_INLINE
KyUInt32 GetUserDataID(
const Kaim::NavTag& navTag) {
return navTag.m_blindData.GetCount() >= 4 ? navTag.m_blindData.GetValues()[3] :
KyUInt32MAXVAL; }
65 static KY_INLINE
Kaim::Color GetColor(
const Kaim::NavTag& navTag) {
return navTag.GetColor(); }
66 KY_INLINE
bool CompareAsGameKitNavTag(
const Kaim::NavTag& navTag)
const
68 return IsExclusive() == IsExclusive(navTag) &&
69 GetLayerID() == GetLayerID(navTag) &&
70 GetSmartObjectID() == GetSmartObjectID(navTag) &&
71 GetGameObjectUniqueID() == GetGameObjectUniqueID(navTag) &&
72 GetUserDataID() == GetUserDataID(navTag);
76 static KY_INLINE
bool IsExclusive(
const Kaim::DynamicNavTag& navTag) {
return navTag.IsExclusive(); }
77 static KY_INLINE
bool HasSmartObject(
const Kaim::DynamicNavTag& navTag) {
return GetSmartObjectID(navTag) !=
KyUInt32MAXVAL; }
78 static KY_INLINE
bool HasLayer(
const Kaim::DynamicNavTag& navTag) {
return GetLayerID(navTag) !=
KyUInt32MAXVAL; }
79 static KY_INLINE
KyUInt32 GetLayerID(
const Kaim::DynamicNavTag& navTag) {
return navTag.m_blindDataArray.GetCount() >= 1 ? navTag.m_blindDataArray[0] :
KyUInt32MAXVAL; }
80 static KY_INLINE
KyUInt32 GetSmartObjectID(
const Kaim::DynamicNavTag& navTag) {
return navTag.m_blindDataArray.GetCount() >= 2 ? navTag.m_blindDataArray[1] :
KyUInt32MAXVAL; }
81 static KY_INLINE
KyUInt32 GetGameObjectUniqueID(
const Kaim::DynamicNavTag& navTag) {
return navTag.m_blindDataArray.GetCount() >= 3 ? navTag.m_blindDataArray[2] :
KyUInt32MAXVAL; }
82 static KY_INLINE
KyUInt32 GetUserDataID(
const Kaim::DynamicNavTag& navTag) {
return navTag.m_blindDataArray.GetCount() >= 4 ? navTag.m_blindDataArray[3] :
KyUInt32MAXVAL; }
83 static KY_INLINE
Kaim::Color GetColor(
const Kaim::DynamicNavTag& navTag) {
return navTag.GetColor(); }
84 KY_INLINE
bool CompareAsGameKitNavTag(
const Kaim::DynamicNavTag& navTag)
const
86 return IsExclusive() == IsExclusive(navTag) &&
87 GetLayerID() == GetLayerID(navTag) &&
88 GetSmartObjectID() == GetSmartObjectID(navTag) &&
89 GetGameObjectUniqueID() == GetGameObjectUniqueID(navTag) &&
90 GetUserDataID() == GetUserDataID(navTag);
94 static KY_INLINE
void SetLayerID(Kaim::DynamicNavTag& navTag,
KyUInt32 layerID) { InitAsGameKitNavTag(navTag); navTag.m_blindDataArray[0] = layerID; }
95 static KY_INLINE
void SetSmartObjectID(Kaim::DynamicNavTag& navTag,
KyUInt32 smartObjectID) { InitAsGameKitNavTag(navTag); navTag.m_blindDataArray[1] = smartObjectID; }
96 static KY_INLINE
void SetGameObjectUniqueID(Kaim::DynamicNavTag& navTag,
KyUInt32 gameObjectUniqueID) { InitAsGameKitNavTag(navTag); navTag.m_blindDataArray[2] = gameObjectUniqueID; }
97 static KY_INLINE
void SetUserDataID(Kaim::DynamicNavTag& navTag,
KyUInt32 userDataID) { InitAsGameKitNavTag(navTag); navTag.m_blindDataArray[3] = userDataID; }
100 static KY_INLINE
void InitAsGameKitNavTag(Kaim::DynamicNavTag& navTag)
102 const KyUInt32 oldCount = navTag.m_blindDataArray.GetCount();
105 navTag.m_blindDataArray.Resize(4);
106 for (
KyUInt32 i = oldCount; i < 4; ++i)
115 void InitFrom(
const NavTag& navTag);
116 void GetAsDynamicNavTag(DynamicNavTag& navTag)
const;
127 KY_INLINE
void GameKitNavTag::SetAsExclusive()
129 m_isExclusive =
true;
130 m_color = GetExclusiveColor();
133 KY_INLINE
void GameKitNavTag::SetAsWalkable()
135 m_isExclusive =
false;
136 if (GetColor() == GetExclusiveColor())
137 m_color = GetDefaultColor();
void InitFrom(const NavTag &navTag)
Always prefer static functions to interpret NavTag or DynamicNavTag as GameKitNavTag instead of conve...
Definition: gamekitnavtag.cpp:18
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
Define an interpretation of NavTag specific to GameKit.
Definition: gamekitnavtag.h:21
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
RGBA color.
Definition: color.h:16
std::uint8_t KyUInt8
uint8_t
Definition: types.h:27
#define KyUInt32MAXVAL
KyUInt32 max value
Definition: types.h:68