8 #ifndef Navigation_DiskCollisionQueryBlob_H
9 #define Navigation_DiskCollisionQueryBlob_H
18 class DiskCollisionQueryOutputBlob
22 DiskCollisionQueryOutputBlob() : m_result(0) {}
27 NavTriangleBlob m_centerTriangle;
28 BlobRef<QueryDynamicOutputBlob> m_queryDynamicOutputBlobRef;
32 SwapEndianness(e,
self.m_result );
33 SwapEndianness(e,
self.m_centerTriangle );
34 SwapEndianness(e,
self.m_queryDynamicOutputBlobRef);
38 class DiskCollisionQueryOutputBlobBuilder :
public BaseBlobBuilder<DiskCollisionQueryOutputBlob>
41 DiskCollisionQueryOutputBlobBuilder(BaseDiskCollisionQuery* query) { m_query = query; }
42 virtual void DoBuild()
46 BLOB_BUILD(
m_blob->m_centerTriangle, NavTriangleBlobBuilder(m_query->GetCenterTrianglePtr()));
48 QueryDynamicOutput* queryDynamicOutput = m_query->GetQueryDynamicOutput();
49 if (queryDynamicOutput !=
KY_NULL && queryDynamicOutput->IsEmpty() ==
false)
56 BaseDiskCollisionQuery* m_query;
59 class DiskCollisionQueryBlob
62 KY_ROOT_BLOB_CLASS(Query, DiskCollisionQueryBlob, 0)
64 DiskCollisionQueryBlob() : m_queryInfoId(
KyUInt32MAXVAL), m_databaseIdx(KyUInt32MAXVAL) {}
74 PositionSpatializationRange m_positionSpatializationRange;
77 BlobRef<DiskCollisionQueryOutputBlob> m_queryOutput;
81 SwapEndianness(e,
self.m_queryInfoId);
82 SwapEndianness(e,
self.m_databaseIdx);
83 SwapEndianness(e,
self.m_centerPos3f);
84 SwapEndianness(e,
self.m_radius);
85 SwapEndianness(e,
self.m_positionSpatializationRange);
86 SwapEndianness(e,
self.m_dynamicOutputMode);
88 SwapEndianness(e,
self.m_queryOutput);
93 class DiskCollisionQueryBlobBuilder :
public BaseBlobBuilder<DiskCollisionQueryBlob>
96 DiskCollisionQueryBlobBuilder(BaseDiskCollisionQuery* query) { m_query = query; }
97 virtual void DoBuild()
101 if (m_query->m_database !=
KY_NULL)
103 BLOB_SET(
m_blob->m_databaseIdx , m_query->m_database->GetDatabaseIndex());
106 BLOB_SET(
m_blob->m_positionSpatializationRange, m_query->GetPositionSpatializationRange());
109 switch (m_query->GetResult())
122 BaseDiskCollisionQuery* m_query;
126 #endif // Kaim_DiskCollisionQueryInputBlob_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
DiskCollisionQueryResult
Enumerates the possible results of a DiskCollisionQuery.
Definition: basediskcollisionquery.h:21
Target
Enumerates the possible endianness types relative to the current platform.
Definition: endianness.h:35
DiskCollisionQueryOutputBlob * 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 the query has not yet been launched.
Definition: basediskcollisionquery.h:24
#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
Indicates that the query has not yet been initialized.
Definition: basediskcollisionquery.h:23