gwnavruntime/queries/blobs/spatializedpointsinaabbfromposquerydisplaylistbuilder.h Source File

spatializedpointsinaabbfromposquerydisplaylistbuilder.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 
12 
13 namespace Kaim
14 {
15 
16 class SpatializedPointCollectorInAABBQueryDisplayListBuilder : public IDisplayListBuilder
17 {
18 private:
19  virtual void DoBuild(DisplayList* displayList, char* blob)
20  {
21  const SpatializedPointCollectorInAABBQueryBlob* query = (SpatializedPointCollectorInAABBQueryBlob*) blob;
22  SpatializedPointCollectorInAABBQueryOutputBlob* output = query->m_queryOutput.Ptr();
23  if (output == nullptr)
24  return;
25 
26  Box3f aabb(query->m_startPos3f, query->m_startPos3f);
27  aabb.m_min -= query->m_extentBox.m_min;
28  aabb.m_max += query->m_extentBox.m_max;
29 
30  switch((SpatializedPointCollectorInAABBQueryResult)output->m_result)
31  {
33  break;
35  {
36  displayList->PushBox(aabb, ShapeColor::LineOnly(Color::Orange));
37  }
38  break;
40  {
41  displayList->PushBox(aabb, ShapeColor::LineOnly(Color::Red));
42  }
43  break;
45  {
46  displayList->PushBox(aabb, ShapeColor::LineOnly(Color::Red));
47 
48  displayList->PushTriangle(output->m_startTriangle.m_triangle, ShapeColor::LineOnly(Color::Red));
49  displayList->PushText(query->m_startPos3f.OffsetZ(1.0f), Color::Red, "Lack of working memory!");
50  }
51  break;
53  {
54  Color color = Color::Green;
55 
56  displayList->PushBox(aabb, ShapeColor::LineOnly(color));
57  displayList->PushTriangle(output->m_startTriangle.m_triangle, ShapeColor::LineOnly(color));
58 
59  SpatializedPointBlob* points = output->m_queryDynamicOutputBlob.m_spatializedPoints.GetValues();
60  for (KyUInt32 i = 0; i < output->m_queryDynamicOutputBlob.m_spatializedPoints.GetCount(); ++i)
61  {
62  displayList->PushPoint(points[i].m_position, color);
63  displayList->PushText(points[i].m_position.OffsetZ(1.0f), color,
64  SpatializedPoint::GetObjectTypeDescrition((SpatializedPointObjectType)points[i].m_type));
65  }
66  }
67  break;
68  }
69  }
70 };
71 
72 }
73 
Indicates that insufficient working memory caused the query to stop.
Definition: basespatializedpointcollectorinaabbquery.h:27
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
Definition: SF_RefCount.h:359
SpatializedPointCollectorInAABBQueryResult
Enumerates the possible results of a SpatializedPointCollectorInAABBQuery.
Definition: basespatializedpointcollectorinaabbquery.h:21
Indicates that a NavMesh triangle could not be found for the starting point.
Definition: basespatializedpointcollectorinaabbquery.h:26
SpatializedPointObjectType
Enumerates the possible object types the SpatializedPoint refers to.
Definition: spatializedpoint.h:32
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
Indicates that the query was completed successfully.
Definition: basespatializedpointcollectorinaabbquery.h:29
Indicates that the query has not yet been launched.
Definition: basespatializedpointcollectorinaabbquery.h:24
Indicates that the query has not yet been initialized.
Definition: basespatializedpointcollectorinaabbquery.h:23