8 #ifndef Navigation_DiskExpansionQuery_DisplayListBuilder_H
9 #define Navigation_DiskExpansionQuery_DisplayListBuilder_H
19 class DiskExpansionQueryDisplayListBuilder :
public IDisplayListBuilder
22 virtual void DoBuild(ScopedDisplayList* displayList,
char* blob,
KyUInt32 = 0)
24 const DiskExpansionQueryBlob* queryBlob = (DiskExpansionQueryBlob*) blob;
28 DiskExpansionQueryOutputBlob* queryOutputBlob = queryBlob->m_queryOutput.
Ptr();
29 if (queryOutputBlob != NULL)
33 VisualShapeColor shapeColor;
40 displayList->PushDisk(queryBlob->m_centerPos3f, queryBlob->m_radiusMax, subdivisionCount, shapeColor);
46 displayList->PushText(queryBlob->m_centerPos3f + offsetVector, shapeColor.m_lineColor,
"Center outside!");
47 displayList->PushDisk(queryBlob->m_centerPos3f, queryBlob->m_radiusMax, subdivisionCount, shapeColor);
54 Triangle3f triangle = queryOutputBlob->m_centerTriangle.m_triangle;
56 triangle.A.z += triangleZOffset;
57 triangle.B.z += triangleZOffset;
58 triangle.C.z += triangleZOffset;
59 displayList->PushTriangle(triangle, shapeColor);
61 displayList->PushDisk(queryBlob->m_centerPos3f, queryBlob->m_radiusMax, subdivisionCount, shapeColor);
62 displayList->PushText(queryBlob->m_centerPos3f + offsetVector, shapeColor.m_lineColor,
"Center NavTag forbidden!");
68 Triangle3f triangle = queryOutputBlob->m_centerTriangle.m_triangle;
70 triangle.A.z += triangleZOffset;
71 triangle.B.z += triangleZOffset;
72 triangle.C.z += triangleZOffset;
73 displayList->PushTriangle(triangle, shapeColor);
76 displayList->PushDisk(queryBlob->m_centerPos3f, queryBlob->m_radiusMax, subdivisionCount, shapeColor);
77 displayList->PushText(queryBlob->m_centerPos3f + offsetVector, shapeColor.m_lineColor,
"Cannot expand!");
84 Triangle3f triangle = queryOutputBlob->m_centerTriangle.m_triangle;
86 triangle.A.z += triangleZOffset;
87 triangle.B.z += triangleZOffset;
88 triangle.C.z += triangleZOffset;
89 displayList->PushTriangle(triangle, shapeColor);
92 displayList->PushDisk(queryBlob->m_centerPos3f, queryBlob->m_radiusMax, subdivisionCount, shapeColor);
93 displayList->PushText(queryBlob->m_centerPos3f + offsetVector, shapeColor.m_lineColor,
"Lack of working memory!");
100 displayList->PushText(queryBlob->m_centerPos3f + offsetVector, shapeColor.m_lineColor,
"Unknown error!");
101 displayList->PushDisk(queryBlob->m_centerPos3f, queryBlob->m_radiusMax, subdivisionCount, shapeColor);
107 Triangle3f triangle = queryOutputBlob->m_centerTriangle.m_triangle;
109 triangle.A.z += triangleZOffset;
110 triangle.B.z += triangleZOffset;
111 triangle.C.z += triangleZOffset;
112 displayList->PushTriangle(triangle, shapeColor);
113 displayList->PushDisk(queryBlob->m_centerPos3f, queryOutputBlob->m_resultRadius, subdivisionCount, shapeColor);
119 Triangle3f triangle = queryOutputBlob->m_centerTriangle.m_triangle;
121 triangle.A.z += triangleZOffset;
122 triangle.B.z += triangleZOffset;
123 triangle.C.z += triangleZOffset;
124 displayList->PushTriangle(triangle, shapeColor);
127 displayList->PushDisk(queryBlob->m_centerPos3f, queryOutputBlob->m_resultRadius, subdivisionCount, shapeColor);
128 displayList->PushLine(queryOutputBlob->m_collisionPos3f, queryOutputBlob->m_collisionPos3f + offsetVector, shapeColor.m_lineColor);
129 displayList->PushText(queryOutputBlob->m_collisionPos3f + offsetVector, shapeColor.m_lineColor,
"Collision point");
134 QueryDynamicOutputBlob* queryDynamicOutputBlob = queryOutputBlob->m_queryDynamicOutputBlobRef.Ptr();
135 if (queryDynamicOutputBlob != NULL)
137 QueryDynamicOutputDisplayListBuilder dynamicOutputDLBuilder;
138 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:34
Indicates the query has not yet been initialized.
Definition: basediskexpansionquery.h:24
Indicates that an unknown error occurred during the query processing.
Definition: basediskexpansionquery.h:31
Definition: SF_RefCount.h:377
static const VisualColor Lime
Represents the color with RGBA values ( 0, 255, 0, 255).
Definition: visualcolor.h:172
Indicates that the disk fits inside the navigable areas of the NavMesh even at maximum size...
Definition: basediskexpansionquery.h:33
static const VisualColor Orange
Represents the color with RGBA values (255, 165, 0, 255).
Definition: visualcolor.h:195
static const VisualColor Red
Represents the color with RGBA values (255, 0, 0, 255).
Definition: visualcolor.h:209
DiskExpansionQueryResult
Enumerates the possible results of a DiskExpansionQuery.
Definition: basediskexpansionquery.h:22
static Vec3f UnitZ()
Returns the normalized orientation of the Z axis.
Definition: vec3f.h:218
Indicates that the NavTag at the center point is forbidden.
Definition: basediskexpansionquery.h:28
Indicates the query has not yet been launched.
Definition: basediskexpansionquery.h:25
Definition: gamekitcrowddispersion.h:20
Indicates that the center point lies outside the navigable area of the NavMesh.
Definition: basediskexpansionquery.h:27
Indicates that insufficient working memory caused the query to stop.
Definition: basediskexpansionquery.h:30
unsigned int KyUInt32
Type used internally to represent an unsigned 32-bit integer.
Definition: types.h:36
Indicates that the center point lies within the NavMesh, but the disk cannot be expanded.
Definition: basediskexpansionquery.h:29
float KyFloat32
Type used internally to represent a 32-bit floating-point number.
Definition: types.h:43