18 class NearestBorderHalfEdgeFromPosQueryOutputBlob
22 NearestBorderHalfEdgeFromPosQueryOutputBlob() : m_result(0) {}
28 NavHalfEdgeBlob m_nearestHalfEdgeOnBorder;
29 NavHalfEdgeBlob m_nextHalfEdgeOnBorder;
30 NavHalfEdgeBlob m_prevHalfEdgeOnBorder;
31 Vec3f m_nearestPosOnHalfEdge;
34 inline void SwapEndianness(
Endianness::Target e, NearestBorderHalfEdgeFromPosQueryOutputBlob&
self)
36 SwapEndianness(e,
self.m_result);
37 SwapEndianness(e,
self.m_nearestHalfEdgeOnBorder);
38 SwapEndianness(e,
self.m_nextHalfEdgeOnBorder);
39 SwapEndianness(e,
self.m_prevHalfEdgeOnBorder);
40 SwapEndianness(e,
self.m_nearestPosOnHalfEdge);
41 SwapEndianness(e,
self.m_squareDistFromHalfEdge);
44 class NearestBorderHalfEdgeFromPosQueryOutputBlobBuilder :
public BaseBlobBuilder<NearestBorderHalfEdgeFromPosQueryOutputBlob>
47 NearestBorderHalfEdgeFromPosQueryOutputBlobBuilder(BaseNearestBorderHalfEdgeFromPosQuery* query) { m_query = query; }
48 virtual void DoBuild()
51 BLOB_BUILD(
m_blob->m_nearestHalfEdgeOnBorder, NavHalfEdgeBlobBuilder(m_query->GetNearestHalfEdgePtrOnBorder()));
52 BLOB_BUILD(
m_blob->m_nextHalfEdgeOnBorder, NavHalfEdgeBlobBuilder(m_query->GetNextHalfEdgePtrAlongBorder()));
53 BLOB_BUILD(
m_blob->m_prevHalfEdgeOnBorder, NavHalfEdgeBlobBuilder(m_query->GetPrevHalfEdgePtrAlongBorder()));
54 BLOB_SET(
m_blob->m_nearestPosOnHalfEdge, m_query->GetNearestPosOnHalfEdge());
55 BLOB_SET(
m_blob->m_squareDistFromHalfEdge, m_query->GetSquareDistFromNearestBorder());
59 BaseNearestBorderHalfEdgeFromPosQuery* m_query;
62 class NearestBorderHalfEdgeFromPosQueryBlob
65 KY_ROOT_BLOB_CLASS(Query, NearestBorderHalfEdgeFromPosQueryBlob, 0)
67 NearestBorderHalfEdgeFromPosQueryBlob() : m_queryInfoId(
KyUInt32MAXVAL), m_databaseIdx(KyUInt32MAXVAL) {}
75 PositionSpatializationRange m_positionSpatializationRange;
77 BlobRef<NearestBorderHalfEdgeFromPosQueryOutputBlob> m_queryOutput;
79 inline void SwapEndianness(
Endianness::Target e, NearestBorderHalfEdgeFromPosQueryBlob&
self)
81 SwapEndianness(e,
self.m_queryInfoId);
82 SwapEndianness(e,
self.m_databaseIdx);
83 SwapEndianness(e,
self.m_inputPos3f);
84 SwapEndianness(e,
self.m_horizontalTolerance);
85 SwapEndianness(e,
self.m_positionSpatializationRange);
87 SwapEndianness(e,
self.m_queryOutput);
90 class NearestBorderHalfEdgeFromPosQueryBlobBuilder :
public BaseBlobBuilder<NearestBorderHalfEdgeFromPosQueryBlob>
93 NearestBorderHalfEdgeFromPosQueryBlobBuilder(BaseNearestBorderHalfEdgeFromPosQuery* query) { m_query = query; }
94 virtual void DoBuild()
98 if (m_query->m_database !=
nullptr)
100 BLOB_SET(
m_blob->m_databaseIdx, m_query->m_database->GetDatabaseIndex());
102 BLOB_SET(
m_blob->m_horizontalTolerance, m_query->GetHorizontalTolerance());
103 BLOB_SET(
m_blob->m_positionSpatializationRange, m_query->GetPositionSpatializationRange());
105 switch (m_query->GetResult())
115 BaseNearestBorderHalfEdgeFromPosQuery* m_query;
#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
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:132
Target
Enumerates the possible endianness types relative to the current platform.
Definition: endianness.h:27
NearestBorderHalfEdgeFromPosQueryOutputBlob * 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
NearestBorderHalfEdgeFromPosQueryResult
Enumerates the possible results of a NearestBorderHalfEdgeFromPosQuery.
Definition: basenearestborderhalfedgefromposquery.h:20
Indicates the query has not yet been initialized.
Definition: basenearestborderhalfedgefromposquery.h:22
Indicates the query has not yet been launched.
Definition: basenearestborderhalfedgefromposquery.h:23
#define KyUInt32MAXVAL
KyUInt32 max value
Definition: types.h:68
float KyFloat32
float
Definition: types.h:32
#define BUILD_REFERENCED_BLOB(blobRef, builder)
Use this macro only in implementations of BaseBlobBuilder::DoBuild().
Definition: baseblobbuilder.h:182