gwnavruntime/queries/blobs/querydynamicoutputblob.h Source File

querydynamicoutputblob.h
Go to the documentation of this file.
1 /*
2 * Copyright 2016 Autodesk, Inc. All rights reserved.
3 * Use of this software is subject to the terms of the Autodesk license agreement and any attachments or Appendices thereto provided at the time of installation or download,
4 * or which otherwise accompanies this software in either electronic or hard copy form, or which is signed by you and accepted by Autodesk.
5 */
6 
7 #pragma once
8 
14 
15 namespace Kaim
16 {
17 
18 class QueryDynamicOutputBlob
19 {
20  KY_DEFINE_NEW_DELETE_OPERATORS(Stat_Default_Mem)
21 public:
22  QueryDynamicOutputBlob() {}
23 
24 public:
25  BlobArray<NavFloorBoxBlob> m_navFloorBoxes;
26  BlobArray<NavTriangleBlob> m_navTriangles;
27  BlobArray<NavTagSubSegmentBlob> m_navTagSubSegments;
28  BlobArray<CostMultiplierSubSegment> m_costMultiplierSubSegments;
29  BlobArray<SpatializedPointBlob> m_spatializedPoints;
30 };
31 
32 inline void SwapEndianness(Endianness::Target e, QueryDynamicOutputBlob& self)
33 {
34  SwapEndianness(e, self.m_navFloorBoxes);
35  SwapEndianness(e, self.m_navTriangles);
36  SwapEndianness(e, self.m_navTagSubSegments);
37  SwapEndianness(e, self.m_costMultiplierSubSegments);
38  SwapEndianness(e, self.m_spatializedPoints);
39 }
40 
41 
42 class QueryDynamicOutputBlobBuilder : public BaseBlobBuilder<QueryDynamicOutputBlob>
43 {
44 public:
45  QueryDynamicOutputBlobBuilder(const QueryDynamicOutput* queryDynamicOutput) { m_queryDynamicOutput = queryDynamicOutput; }
46  virtual void DoBuild()
47  {
48  if (m_queryDynamicOutput == nullptr)
49  return;
50 
51  NavFloorBoxBlob* navFloorsBoxes = BLOB_ARRAY(m_blob->m_navFloorBoxes , m_queryDynamicOutput->GetNavFloorPtrCount());
52  NavTriangleBlob* navTrianglesBlobs = BLOB_ARRAY(m_blob->m_navTriangles , m_queryDynamicOutput->GetNavTrianglePtrCount());
53  NavTagSubSegmentBlob* navTagSubSegmentBlobs = BLOB_ARRAY(m_blob->m_navTagSubSegments, m_queryDynamicOutput->GetNavTagSubSegmentCount());
54  CostMultiplierSubSegment* costMultSubSegmentBlobs = BLOB_ARRAY(m_blob->m_costMultiplierSubSegments, m_queryDynamicOutput->GetCostMultiplierSubSegmentCount());
55  SpatializedPointBlob* spatializedPointBlobs = BLOB_ARRAY(m_blob->m_spatializedPoints , m_queryDynamicOutput->GetSpatializedPointCount());
56 
57  for(KyUInt32 i = 0; i < m_queryDynamicOutput->GetNavFloorPtrCount(); ++i)
58  {
59  BLOB_BUILD(navFloorsBoxes[i], NavFloorBoxBlobBuilder(m_queryDynamicOutput->GetNavFloorPtr(i)));
60  }
61  for(KyUInt32 i = 0; i < m_queryDynamicOutput->GetNavTrianglePtrCount(); ++i)
62  {
63  BLOB_BUILD(navTrianglesBlobs[i], NavTriangleBlobBuilder(m_queryDynamicOutput->GetNavTrianglePtr(i)));
64  }
65  for(KyUInt32 i = 0; i < m_queryDynamicOutput->GetNavTagSubSegmentCount(); ++i)
66  {
67  BLOB_BUILD(navTagSubSegmentBlobs[i], NavTagSubSegmentBlobBuilder(m_queryDynamicOutput->GetNavTagSubSegment(i)));
68  }
69  for(KyUInt32 i = 0; i < m_queryDynamicOutput->GetCostMultiplierSubSegmentCount(); ++i)
70  {
71  BLOB_SET(costMultSubSegmentBlobs[i], m_queryDynamicOutput->GetCostMultiplierSubSegment(i));
72  }
73  for(KyUInt32 i = 0; i < m_queryDynamicOutput->GetSpatializedPointCount(); ++i)
74  {
75  BLOB_BUILD(spatializedPointBlobs[i], SpatializedPointBlobBuilder(m_queryDynamicOutput->GetSpatializedPoint(i), VisualDebugLOD_Default));
76  }
77  }
78 
79 private:
80  const QueryDynamicOutput* m_queryDynamicOutput;
81 };
82 
83 }
84 
#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
QueryDynamicOutputBlob * 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
#define BLOB_ARRAY(blobArray, count)
Use this macro only in implementations of BaseBlobBuilder::DoBuild().
Definition: baseblobbuilder.h:139