8 #ifndef Navigation_DiskCastQuery_DisplayListBuilder_H
9 #define Navigation_DiskCastQuery_DisplayListBuilder_H
19 class DiskCastQueryDisplayListBuilder :
public IDisplayListBuilder
22 virtual void DoBuild(ScopedDisplayList* displayList,
char* blob,
KyUInt32 = 0)
24 const DiskCastQueryBlob* queryBlob = (DiskCastQueryBlob*) blob;
27 DiskCastQueryOutputBlob* queryOutputBlob = queryBlob->m_queryOutput.
Ptr();
28 if (queryOutputBlob != NULL)
33 VisualShapeColor shapeColor;
39 displayList->PushText(queryBlob->m_startPos3f + offsetVector,
VisualColor::Red,
"Not processed...");
42 displayList->PushStadium(queryBlob->m_startPos3f, queryBlob->m_startPos3f + queryBlob->m_normalizedDir2d * queryBlob->m_maxDist,
43 queryBlob->m_radius, subdivisionCount, shapeColor);
49 displayList->PushText(queryBlob->m_startPos3f + offsetVector, shapeColor.m_lineColor,
"Start outside!");
50 displayList->PushStadium(queryBlob->m_startPos3f, queryBlob->m_startPos3f + queryBlob->m_normalizedDir2d * queryBlob->m_maxDist,
51 queryBlob->m_radius, subdivisionCount, shapeColor);
58 Triangle3f triangle = queryOutputBlob->m_startTriangle.m_triangle;
60 triangle.A.z += triangleZOffset;
61 triangle.B.z += triangleZOffset;
62 triangle.C.z += triangleZOffset;
63 displayList->PushTriangle(triangle, shapeColor);
65 displayList->PushText(queryBlob->m_startPos3f + offsetVector, shapeColor.m_lineColor,
"Start NavTag forbidden!");
66 displayList->PushStadium(queryBlob->m_startPos3f, queryBlob->m_startPos3f + queryBlob->m_normalizedDir2d * queryBlob->m_maxDist,
67 queryBlob->m_radius, subdivisionCount, shapeColor);
74 Triangle3f triangle = queryOutputBlob->m_startTriangle.m_triangle;
76 triangle.A.z += triangleZOffset;
77 triangle.B.z += triangleZOffset;
78 triangle.C.z += triangleZOffset;
79 displayList->PushTriangle(triangle, shapeColor);
82 displayList->PushLine(queryOutputBlob->m_collisionPos3f, queryOutputBlob->m_collisionPos3f + offsetVector, shapeColor.m_lineColor);
83 displayList->PushText(queryOutputBlob->m_collisionPos3f + offsetVector, shapeColor.m_lineColor,
"Collision point");
84 displayList->PushStadium(queryBlob->m_startPos3f, queryBlob->m_startPos3f + queryBlob->m_normalizedDir2d * queryBlob->m_maxDist,
85 queryBlob->m_radius, subdivisionCount, shapeColor);
92 Triangle3f triangle = queryOutputBlob->m_startTriangle.m_triangle;
94 triangle.A.z += triangleZOffset;
95 triangle.B.z += triangleZOffset;
96 triangle.C.z += triangleZOffset;
97 displayList->PushTriangle(triangle, shapeColor);
100 displayList->PushLine(queryOutputBlob->m_collisionPos3f, queryOutputBlob->m_collisionPos3f + offsetVector, shapeColor.m_lineColor);
101 displayList->PushText(queryOutputBlob->m_collisionPos3f + offsetVector, shapeColor.m_lineColor,
"Collision point (arrival error)");
102 displayList->PushStadium(queryBlob->m_startPos3f, queryBlob->m_startPos3f + queryBlob->m_normalizedDir2d * queryBlob->m_maxDist,
103 queryBlob->m_radius, subdivisionCount, shapeColor);
110 Triangle3f triangle = queryOutputBlob->m_startTriangle.m_triangle;
112 triangle.A.z += triangleZOffset;
113 triangle.B.z += triangleZOffset;
114 triangle.C.z += triangleZOffset;
115 displayList->PushTriangle(triangle, shapeColor);
118 displayList->PushText(queryBlob->m_startPos3f + offsetVector, shapeColor.m_lineColor,
"Lack of working memory!");
119 displayList->PushStadium(queryBlob->m_startPos3f, queryBlob->m_startPos3f + queryBlob->m_normalizedDir2d * queryBlob->m_maxDist,
120 queryBlob->m_radius, subdivisionCount, shapeColor);
126 displayList->PushText(queryBlob->m_startPos3f + offsetVector, shapeColor.m_lineColor,
"Unknown error!");
127 displayList->PushStadium(queryBlob->m_startPos3f, queryBlob->m_startPos3f + queryBlob->m_normalizedDir2d * queryBlob->m_maxDist,
128 queryBlob->m_radius, subdivisionCount, shapeColor);
135 Triangle3f triangle = queryOutputBlob->m_startTriangle.m_triangle;
137 triangle.A.z += triangleZOffset;
138 triangle.B.z += triangleZOffset;
139 triangle.C.z += triangleZOffset;
140 displayList->PushTriangle(triangle, shapeColor);
142 triangle = queryOutputBlob->m_arrivalTriangle.m_triangle;
143 triangle.A.z += triangleZOffset;
144 triangle.B.z += triangleZOffset;
145 triangle.C.z += triangleZOffset;
146 displayList->PushTriangle(triangle, shapeColor);
148 displayList->PushStadium(queryBlob->m_startPos3f, queryOutputBlob->m_arrivalPos3f, queryBlob->m_radius, subdivisionCount, shapeColor);
155 Triangle3f triangle = queryOutputBlob->m_startTriangle.m_triangle;
157 triangle.A.z += triangleZOffset;
158 triangle.B.z += triangleZOffset;
159 triangle.C.z += triangleZOffset;
160 displayList->PushTriangle(triangle, shapeColor);
162 triangle = queryOutputBlob->m_arrivalTriangle.m_triangle;
163 triangle.A.z += triangleZOffset;
164 triangle.B.z += triangleZOffset;
165 triangle.C.z += triangleZOffset;
166 displayList->PushTriangle(triangle, shapeColor);
169 displayList->PushLine(queryOutputBlob->m_collisionPos3f, queryOutputBlob->m_collisionPos3f + offsetVector, shapeColor.m_lineColor);
170 displayList->PushText(queryOutputBlob->m_collisionPos3f + offsetVector, shapeColor.m_lineColor,
"Collision point");
171 displayList->PushStadium(queryBlob->m_startPos3f, queryOutputBlob->m_arrivalPos3f, queryBlob->m_radius, subdivisionCount, shapeColor);
176 QueryDynamicOutputBlob* queryDynamicOutputBlob = queryOutputBlob->m_queryDynamicOutputBlobRef.Ptr();
177 if (queryDynamicOutputBlob != NULL)
179 QueryDynamicOutputDisplayListBuilder dynamicOutputDLBuilder;
180 dynamicOutputDLBuilder.Build(displayList, (
char*)queryDynamicOutputBlob, 0);
Indicates that a NavMesh triangle could not be found for the starting point.
Definition: basediskcastquery.h:30
Indicates that moving back the collision point resulted in an arrival position that is outside of the...
Definition: basediskcastquery.h:33
Definition: SF_RefCount.h:377
static const VisualColor Lime
Represents the color with RGBA values ( 0, 255, 0, 255).
Definition: visualcolor.h:172
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
Indicates that the starting point is too close to a NavMesh border. Either the disk does not fit in t...
Definition: basediskcastquery.h:32
Indicates that the NavTag at the starting point was forbidden.
Definition: basediskcastquery.h:31
Indicates that an unknown error occurred during the query processing.
Definition: basediskcastquery.h:35
static Vec3f UnitZ()
Returns the normalized orientation of the Z axis.
Definition: vec3f.h:218
Indicates that insufficient working memory caused the query to stop.
Definition: basediskcastquery.h:34
Indicates that the disk was able to travel its maximum distance without collision.
Definition: basediskcastquery.h:37
Definition: gamekitcrowddispersion.h:20
Indicates that the query has not yet been launched.
Definition: basediskcastquery.h:28
Indicates that a final arrival position was calculated successfully.
Definition: basediskcastquery.h:38
unsigned int KyUInt32
Type used internally to represent an unsigned 32-bit integer.
Definition: types.h:36
Indicates that the query has not yet been initialized.
Definition: basediskcastquery.h:27
DiskCastQueryResult
Enumerates the possible results of a DiskCastQuery.
Definition: basediskcastquery.h:25
float KyFloat32
Type used internally to represent a 32-bit floating-point number.
Definition: types.h:43