8 #ifndef Navigation_AStarQueryBlob_H
9 #define Navigation_AStarQueryBlob_H
21 class AStarQueryOutputBlob
25 AStarQueryOutputBlob() : m_result(0) {}
30 TimeSlicedQueryInfoBlob m_timeSlicedQueryInfo;
31 NavTriangleBlob m_startTriangle;
32 NavTriangleBlob m_destTriangle;
34 PathBlob m_abstractPathBlob;
38 SwapEndianness(e,
self.m_result);
39 SwapEndianness(e,
self.m_timeSlicedQueryInfo);
40 SwapEndianness(e,
self.m_startTriangle);
41 SwapEndianness(e,
self.m_destTriangle);
42 SwapEndianness(e,
self.m_abstractPathBlob);
46 class AStarQueryOutputBlobBuilder :
public BaseBlobBuilder<AStarQueryOutputBlob>
49 AStarQueryOutputBlobBuilder(BaseAStarQuery* query) { m_query = query; }
50 virtual void DoBuild()
53 BLOB_BUILD(
m_blob->m_timeSlicedQueryInfo, TimeSlicedQueryBlobBuilder(m_query));
54 BLOB_BUILD(
m_blob->m_startTriangle, NavTriangleBlobBuilder(m_query->GetStartTrianglePtr()));
55 BLOB_BUILD(
m_blob->m_destTriangle, NavTriangleBlobBuilder(m_query->GetDestTrianglePtr()));
60 BLOB_BUILD(
m_blob->m_abstractPathBlob, PathBlobBuilder(m_query->GetAbstractPath()));
65 BaseAStarQuery* m_query;
71 KY_ROOT_BLOB_CLASS(Query, AStarQueryBlob, 3)
73 AStarQueryBlob() : m_queryInfoId(
KyUInt32MAXVAL), m_databaseIdx(KyUInt32MAXVAL) {}
84 KyUInt8 m_abstractGraphTraversalMode;
85 KyUInt8 m_enableAdvancedVisualDebug;
89 PositionSpatializationRange m_positionSpatializationRange;
90 BlobRef<AStarQueryOutputBlob> m_queryOutput;
95 SwapEndianness(e,
self.m_queryInfoId);
96 SwapEndianness(e,
self.m_databaseIdx);
97 SwapEndianness(e,
self.m_fromOutsideNavMeshDistance);
98 SwapEndianness(e,
self.m_toOutsideNavMeshDistance);
99 SwapEndianness(e,
self.m_propagationBoxExtent);
100 SwapEndianness(e,
self.m_tryCanGoMode);
101 SwapEndianness(e,
self.m_channelMode);
102 SwapEndianness(e,
self.m_abstractGraphTraversalMode);
103 SwapEndianness(e,
self.m_enableAdvancedVisualDebug);
105 SwapEndianness(e,
self.m_startPos3f);
106 SwapEndianness(e,
self.m_destPos3f);
107 SwapEndianness(e,
self.m_positionSpatializationRange);
109 SwapEndianness(e,
self.m_queryOutput);
114 class AStarQueryBlobBuilder :
public BaseBlobBuilder<AStarQueryBlob>
117 AStarQueryBlobBuilder(BaseAStarQuery* query) { m_query = query; }
118 virtual void DoBuild()
122 if (m_query->m_database !=
KY_NULL)
124 BLOB_SET(
m_blob->m_databaseIdx , m_query->m_database->GetDatabaseIndex());
127 BLOB_SET(
m_blob->m_positionSpatializationRange , m_query->GetPositionSpatializationRange());
128 BLOB_SET(
m_blob->m_fromOutsideNavMeshDistance , m_query->GetFromOutsideNavMeshDistance());
129 BLOB_SET(
m_blob->m_toOutsideNavMeshDistance , m_query->GetToOutsideNavMeshDistance());
130 BLOB_SET(
m_blob->m_propagationBoxExtent , m_query->GetPropagationBoxExtent());
134 BLOB_SET(
m_blob->m_enableAdvancedVisualDebug , m_query->m_enableAdvancedVisualDebug ? 1 : 0);
136 switch (m_query->GetResult())
149 BaseAStarQuery* m_query;
153 #endif // Kaim_AstarQueryInputBlob_H
#define BLOB_SET(blob, value)
Use this macro only in implementations of BaseBlobBuilder::DoBuild().
Definition: baseblobbuilder.h:136
#define BLOB_BUILD(blob, builder)
Use this macro only in implementations of BaseBlobBuilder::DoBuild().
Definition: baseblobbuilder.h:189
Indicates the query has not yet been launched.
Definition: baseastarquery.h:32
#define KY_NULL
Null value.
Definition: types.h:247
Target
Enumerates the possible endianness types relative to the current platform.
Definition: endianness.h:35
Indicates the query has not yet been initialized.
Definition: baseastarquery.h:31
unsigned char KyUInt8
Type used internally to represent an unsigned 8-bit integer.
Definition: types.h:41
AStarQueryOutputBlob * m_blob
The blob maintained by this builder. Only modify using the macros listed under DoBuild().
Definition: baseblobbuilder.h:117
Definition: gamekitcrowddispersion.h:20
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:137
unsigned int KyUInt32
Type used internally to represent an unsigned 32-bit integer.
Definition: types.h:36
Indicates that a path has been found between the start and destination.
Definition: baseastarquery.h:59
#define KyUInt32MAXVAL
The maximum value that can be stored in the KyUInt32 variable type.
Definition: types.h:226
float KyFloat32
Type used internally to represent a 32-bit floating-point number.
Definition: types.h:43
#define BUILD_REFERENCED_BLOB(blobRef, builder)
Use this macro only in implementations of BaseBlobBuilder::DoBuild().
Definition: baseblobbuilder.h:197
AStarQueryResult
Enumerates the possible results of an AStarQuery.
Definition: baseastarquery.h:29