18 class RayCastQueryOutputBlob
22 RayCastQueryOutputBlob() : m_result(0) {}
27 NavTriangleBlob m_startTriangle;
28 NavTriangleBlob m_arrivalTriangle;
30 Vec3f m_collisionPos3f;
31 NavHalfEdgeBlob m_collisionHalfEdge;
32 BlobRef<QueryDynamicOutputBlob> m_queryDynamicOutputBlobRef;
36 SwapEndianness(e,
self.m_result );
37 SwapEndianness(e,
self.m_startTriangle );
38 SwapEndianness(e,
self.m_arrivalTriangle );
39 SwapEndianness(e,
self.m_arrivalPos3f );
40 SwapEndianness(e,
self.m_collisionPos3f );
41 SwapEndianness(e,
self.m_collisionHalfEdge );
42 SwapEndianness(e,
self.m_queryDynamicOutputBlobRef);
46 class RayCastQueryOutputBlobBuilder :
public BaseBlobBuilder<RayCastQueryOutputBlob>
49 RayCastQueryOutputBlobBuilder(BaseRayCastQuery* query) { m_query = query; }
50 virtual void DoBuild()
54 BLOB_BUILD(
m_blob->m_startTriangle , NavTriangleBlobBuilder(m_query->GetStartTrianglePtr()));
55 BLOB_BUILD(
m_blob->m_arrivalTriangle , NavTriangleBlobBuilder(m_query->GetArrivalTrianglePtr()));
58 BLOB_BUILD(
m_blob->m_collisionHalfEdge, NavHalfEdgeBlobBuilder(m_query->GetCollisionNavHalfEdgePtr()));
60 QueryDynamicOutput* queryDynamicOutput = m_query->GetQueryDynamicOutput();
61 if (queryDynamicOutput !=
nullptr && queryDynamicOutput->IsEmpty() ==
false)
68 BaseRayCastQuery* m_query;
71 class RayCastQueryBlob
74 KY_ROOT_BLOB_CLASS(Query, RayCastQueryBlob, 0)
76 RayCastQueryBlob() : m_queryInfoId(
KyUInt32MAXVAL), m_databaseIdx(KyUInt32MAXVAL) {}
86 PositionSpatializationRange m_positionSpatializationRange;
89 BlobRef<RayCastQueryOutputBlob> m_queryOutput;
93 SwapEndianness(e,
self.m_queryInfoId);
94 SwapEndianness(e,
self.m_databaseIdx);
95 SwapEndianness(e,
self.m_startPos3f);
96 SwapEndianness(e,
self.m_maxMove2D);
97 SwapEndianness(e,
self.m_positionSpatializationRange);
98 SwapEndianness(e,
self.m_dynamicOutputMode);
100 SwapEndianness(e,
self.m_queryOutput);
105 class RayCastQueryBlobBuilder :
public BaseBlobBuilder<RayCastQueryBlob>
108 RayCastQueryBlobBuilder(BaseRayCastQuery* query) { m_query = query; }
109 virtual void DoBuild()
113 if (m_query->m_database !=
nullptr)
115 BLOB_SET(
m_blob->m_databaseIdx , m_query->m_database->GetDatabaseIndex());
118 BLOB_SET(
m_blob->m_positionSpatializationRange, m_query->GetPositionSpatializationRange());
121 switch (m_query->GetResult())
134 BaseRayCastQuery* m_query;
Indicates that the query has not yet been initialized.
Definition: baseraycastquery.h:26
#define BLOB_SET(blob, value)
Use this macro only in implementations of BaseBlobBuilder::DoBuild().
Definition: baseblobbuilder.h:130
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
#define BLOB_BUILD(blob, builder)
Use this macro only in implementations of BaseBlobBuilder::DoBuild().
Definition: baseblobbuilder.h:175
DynamicOutputMode
Enumerates possible ways of storing collected data by a query in a QueryDynamicOutput object...
Definition: querydynamicoutput.h:21
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:132
RayCastQueryResult
Enumerates the possible results of a RayCastQuery.
Definition: baseraycastquery.h:24
Target
Enumerates the possible endianness types relative to the current platform.
Definition: endianness.h:27
RayCastQueryOutputBlob * m_blob
The blob maintained by this builder. Only modify using the macros listed under DoBuild().
Definition: baseblobbuilder.h:113
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
Indicates that the query has not yet been launched.
Definition: baseraycastquery.h:27
#define KyUInt32MAXVAL
KyUInt32 max value
Definition: types.h:68
#define BUILD_REFERENCED_BLOB(blobRef, builder)
Use this macro only in implementations of BaseBlobBuilder::DoBuild().
Definition: baseblobbuilder.h:182