8 #ifndef Navigation_DiskCastQueryBlob_H
9 #define Navigation_DiskCastQueryBlob_H
19 class DiskCastQueryOutputBlob
23 DiskCastQueryOutputBlob() : m_result(0) {}
28 NavTriangleBlob m_startTriangle;
29 NavTriangleBlob m_arrivalTriangle;
31 Vec3f m_collisionPos3f;
32 NavHalfEdgeBlob m_collisionHalfEdge;
33 BlobRef<QueryDynamicOutputBlob> m_queryDynamicOutputBlobRef;
37 SwapEndianness(e,
self.m_result );
38 SwapEndianness(e,
self.m_startTriangle );
39 SwapEndianness(e,
self.m_arrivalTriangle );
40 SwapEndianness(e,
self.m_arrivalPos3f );
41 SwapEndianness(e,
self.m_collisionPos3f );
42 SwapEndianness(e,
self.m_collisionHalfEdge );
43 SwapEndianness(e,
self.m_queryDynamicOutputBlobRef);
47 class DiskCastQueryOutputBlobBuilder :
public BaseBlobBuilder<DiskCastQueryOutputBlob>
50 DiskCastQueryOutputBlobBuilder(BaseDiskCastQuery* query) { m_query = query; }
51 virtual void DoBuild()
55 BLOB_BUILD(
m_blob->m_startTriangle , NavTriangleBlobBuilder(m_query->GetStartTrianglePtr()));
56 BLOB_BUILD(
m_blob->m_arrivalTriangle , NavTriangleBlobBuilder(m_query->GetArrivalTrianglePtr()));
59 BLOB_BUILD(
m_blob->m_collisionHalfEdge, NavHalfEdgeBlobBuilder(m_query->GetCollisionNavHalfEdgePtr()));
61 QueryDynamicOutput* queryDynamicOutput = m_query->GetQueryDynamicOutput();
62 if (queryDynamicOutput !=
KY_NULL && queryDynamicOutput->IsEmpty() ==
false)
69 BaseDiskCastQuery* m_query;
72 class DiskCastQueryBlob
75 KY_ROOT_BLOB_CLASS(Query, DiskCastQueryBlob, 0)
77 DiskCastQueryBlob() : m_queryInfoId(
KyUInt32MAXVAL), m_databaseIdx(KyUInt32MAXVAL) {}
87 Vec2f m_normalizedDir2d;
89 PositionSpatializationRange m_positionSpatializationRange;
93 BlobRef<DiskCastQueryOutputBlob> m_queryOutput;
97 SwapEndianness(e,
self.m_queryInfoId);
98 SwapEndianness(e,
self.m_databaseIdx);
99 SwapEndianness(e,
self.m_startPos3f);
100 SwapEndianness(e,
self.m_radius);
101 SwapEndianness(e,
self.m_normalizedDir2d);
102 SwapEndianness(e,
self.m_maxDist);
103 SwapEndianness(e,
self.m_positionSpatializationRange);
104 SwapEndianness(e,
self.m_safetyDist);
105 SwapEndianness(e,
self.m_dynamicOutputMode);
107 SwapEndianness(e,
self.m_queryOutput);
112 class DiskCastQueryBlobBuilder :
public BaseBlobBuilder<DiskCastQueryBlob>
115 DiskCastQueryBlobBuilder(BaseDiskCastQuery* query) { m_query = query; }
116 virtual void DoBuild()
120 if (m_query->m_database !=
KY_NULL)
122 BLOB_SET(
m_blob->m_databaseIdx , m_query->m_database->GetDatabaseIndex());
125 BLOB_SET(
m_blob->m_normalizedDir2d , m_query->GetNormalizedDir2d());
127 BLOB_SET(
m_blob->m_positionSpatializationRange, m_query->GetPositionSpatializationRange());
131 switch (m_query->GetResult())
144 BaseDiskCastQuery* m_query;
148 #endif // Kaim_DiskCastQueryInputBlob_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
#define KY_NULL
Null value.
Definition: types.h:247
DynamicOutputMode
Enumerates possible ways of storing crossed data from a query in a QueryDynamicOutput object...
Definition: querydynamicoutput.h:26
Target
Enumerates the possible endianness types relative to the current platform.
Definition: endianness.h:35
DiskCastQueryOutputBlob * 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
Indicates that the query has not yet been launched.
Definition: basediskcastquery.h:28
unsigned int KyUInt32
Type used internally to represent an unsigned 32-bit integer.
Definition: types.h:36
Indicates that the query has not yet been initialized.
Definition: basediskcastquery.h:27
#define KyUInt32MAXVAL
The maximum value that can be stored in the KyUInt32 variable type.
Definition: types.h:226
DiskCastQueryResult
Enumerates the possible results of a DiskCastQuery.
Definition: basediskcastquery.h:25
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