17 class DiskExpansionQueryDisplayListBuilder :
public IDisplayListBuilder
20 virtual void DoBuild(DisplayList* displayList,
char* blob)
22 const DiskExpansionQueryBlob* queryBlob = (DiskExpansionQueryBlob*) blob;
25 DiskExpansionQueryOutputBlob* queryOutputBlob = queryBlob->m_queryOutput.
Ptr();
26 if (queryOutputBlob ==
nullptr)
36 displayList->PushDisk(queryBlob->m_centerPos3f, queryBlob->m_radiusMax, Color::Orange);
41 displayList->PushText(queryBlob->m_centerPos3f + offsetVector, Color::Red,
"Center outside!");
42 displayList->PushDisk(queryBlob->m_centerPos3f, queryBlob->m_radiusMax, Color::Red);
47 Triangle3f triangle = queryOutputBlob->m_centerTriangle.m_triangle;
49 triangle.A.z += triangleZOffset;
50 triangle.B.z += triangleZOffset;
51 triangle.C.z += triangleZOffset;
52 displayList->PushTriangle(triangle, Color::Red);
54 displayList->PushDisk(queryBlob->m_centerPos3f, queryBlob->m_radiusMax, Color::Red);
55 displayList->PushText(queryBlob->m_centerPos3f + offsetVector, Color::Red,
"Center NavTag forbidden!");
60 Triangle3f triangle = queryOutputBlob->m_centerTriangle.m_triangle;
62 triangle.A.z += triangleZOffset;
63 triangle.B.z += triangleZOffset;
64 triangle.C.z += triangleZOffset;
65 displayList->PushTriangle(triangle, Color::Green);
67 displayList->PushDisk(queryBlob->m_centerPos3f, queryBlob->m_radiusMax, Color::Red);
68 displayList->PushText(queryBlob->m_centerPos3f + offsetVector, Color::Red,
"Cannot expand!");
74 Triangle3f triangle = queryOutputBlob->m_centerTriangle.m_triangle;
76 triangle.A.z += triangleZOffset;
77 triangle.B.z += triangleZOffset;
78 triangle.C.z += triangleZOffset;
79 displayList->PushTriangle(triangle, Color::Green);
82 displayList->PushDisk(queryBlob->m_centerPos3f, queryBlob->m_radiusMax, Color::Red);
83 displayList->PushText(queryBlob->m_centerPos3f + offsetVector, Color::Red,
"Lack of working memory!");
90 displayList->PushText(queryBlob->m_centerPos3f + offsetVector, Color::Red,
"Unknown error!");
91 displayList->PushDisk(queryBlob->m_centerPos3f, queryBlob->m_radiusMax, Color::Red);
96 Triangle3f triangle = queryOutputBlob->m_centerTriangle.m_triangle;
97 triangle.A.z += triangleZOffset;
98 triangle.B.z += triangleZOffset;
99 triangle.C.z += triangleZOffset;
100 displayList->PushTriangle(triangle, Color::Green);
101 displayList->PushDisk(queryBlob->m_centerPos3f, queryOutputBlob->m_resultRadius, Color::Green);
106 Triangle3f triangle = queryOutputBlob->m_centerTriangle.m_triangle;
108 triangle.A.z += triangleZOffset;
109 triangle.B.z += triangleZOffset;
110 triangle.C.z += triangleZOffset;
111 displayList->PushTriangle(triangle, Color::Green);
113 displayList->PushDisk(queryBlob->m_centerPos3f, queryOutputBlob->m_resultRadius, Color::Orange);
114 displayList->PushLine(queryOutputBlob->m_collisionPos3f, queryOutputBlob->m_collisionPos3f + offsetVector, Color::Orange);
115 displayList->PushText(queryOutputBlob->m_collisionPos3f + offsetVector, Color::Orange,
"Collision point");
120 QueryDynamicOutputBlob* queryDynamicOutputBlob = queryOutputBlob->m_queryDynamicOutputBlobRef.Ptr();
121 if (queryDynamicOutputBlob != NULL)
123 QueryDynamicOutputDisplayListBuilder dynamicOutputDLBuilder;
124 dynamicOutputDLBuilder.Build(displayList, (
char*)queryDynamicOutputBlob, 0);
Indicates a collision was detected when expanding the disk before the maximum size of the disk was re...
Definition: basediskexpansionquery.h:31
Indicates the query has not yet been initialized.
Definition: basediskexpansionquery.h:21
Indicates that an unknown error occurred during the query processing.
Definition: basediskexpansionquery.h:28
Definition: SF_RefCount.h:359
Indicates that the disk fits inside the navigable areas of the NavMesh even at maximum size...
Definition: basediskexpansionquery.h:30
DiskExpansionQueryResult
Enumerates the possible results of a DiskExpansionQuery.
Definition: basediskexpansionquery.h:19
static Vec3f UnitZ()
Returns {0.0f, 0.0f, 1.0f}.
Definition: vec3f.h:106
Indicates that the NavTag at the center point is forbidden.
Definition: basediskexpansionquery.h:25
Indicates the query has not yet been launched.
Definition: basediskexpansionquery.h:22
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
Indicates that the center point lies outside the navigable area of the NavMesh.
Definition: basediskexpansionquery.h:24
Indicates that insufficient working memory caused the query to stop.
Definition: basediskexpansionquery.h:27
Indicates that the center point lies within the NavMesh, but the disk cannot be expanded.
Definition: basediskexpansionquery.h:26
float KyFloat32
float
Definition: types.h:32