8 #ifndef Navigation_CollisionRayCastQueryBlob_H
9 #define Navigation_CollisionRayCastQueryBlob_H
18 class CollisionRayCastQueryOutputBlob
22 CollisionRayCastQueryOutputBlob() : m_result(0) {}
24 CollisionRayCastResult GetResult()
const {
return (CollisionRayCastResult)m_result; }
28 inline void SwapEndianness(
Endianness::Target e, CollisionRayCastQueryOutputBlob&
self)
30 SwapEndianness(e,
self.m_result );
34 class CollisionRayCastQueryOutputBlobBuilder :
public BaseBlobBuilder<CollisionRayCastQueryOutputBlob>
37 CollisionRayCastQueryOutputBlobBuilder(CollisionRayCastQuery* query) : m_query(query) {}
38 virtual void DoBuild()
44 CollisionRayCastQuery* m_query;
47 class CollisionRayCastQueryBlob
50 KY_ROOT_BLOB_CLASS(Query, CollisionRayCastQueryBlob, 0)
52 CollisionRayCastQueryBlob() : m_queryInfoId(
KyUInt32MAXVAL), m_databaseIdx(KyUInt32MAXVAL) {}
61 BlobRef<CollisionRayCastQueryOutputBlob> m_queryOutput;
65 SwapEndianness(e,
self.m_queryInfoId);
66 SwapEndianness(e,
self.m_databaseIdx);
67 SwapEndianness(e,
self.m_startPos3f);
68 SwapEndianness(e,
self.m_endPos3f);
70 SwapEndianness(e,
self.m_queryOutput);
75 class CollisionRayCastQueryBlobBuilder :
public BaseBlobBuilder<CollisionRayCastQueryBlob>
78 CollisionRayCastQueryBlobBuilder(CollisionRayCastQuery* query) : m_query(query) {}
79 virtual void DoBuild()
83 if (m_query->m_database !=
KY_NULL)
85 BLOB_SET(
m_blob->m_databaseIdx , m_query->m_database->GetDatabaseIndex());
89 switch (m_query->GetResult())
102 CollisionRayCastQuery* m_query;
106 #endif // Navigation_CollisionRayCastQueryBlob_H
#define BLOB_SET(blob, value)
Use this macro only in implementations of BaseBlobBuilder::DoBuild().
Definition: baseblobbuilder.h:136
#define KY_NULL
Null value.
Definition: types.h:247
Target
Enumerates the possible endianness types relative to the current platform.
Definition: endianness.h:35
CollisionRayCastQueryOutputBlob * 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
#define KyUInt32MAXVAL
The maximum value that can be stored in the KyUInt32 variable type.
Definition: types.h:226
#define BUILD_REFERENCED_BLOB(blobRef, builder)
Use this macro only in implementations of BaseBlobBuilder::DoBuild().
Definition: baseblobbuilder.h:197