8 #ifndef Navigation_SegmentCastQuery_DisplayListBuilder_H
9 #define Navigation_SegmentCastQuery_DisplayListBuilder_H
19 class SegmentCastQueryDisplayListBuilder :
public IDisplayListBuilder
22 virtual void DoBuild(ScopedDisplayList* displayList,
char* blob,
KyUInt32 = 0)
24 const SegmentCastQueryBlob* queryBlob = (SegmentCastQueryBlob*) blob;
27 SegmentCastQueryOutputBlob* queryOutputBlob = queryBlob->m_queryOutput.
Ptr();
28 if (queryOutputBlob != NULL)
32 VisualShapeColor shapeColor;
38 displayList->PushText(queryBlob->m_startPos3f + offsetVector,
VisualColor::Red,
"Not processed...");
41 displayList->PushQuad(queryBlob->m_startPos3f, queryBlob->m_startPos3f + queryBlob->m_normalizedDir2d * queryBlob->m_maxDist,
42 queryBlob->m_radius, shapeColor);
48 displayList->PushText(queryBlob->m_startPos3f + offsetVector, shapeColor.m_lineColor,
"Start outside!");
49 displayList->PushQuad(queryBlob->m_startPos3f, queryBlob->m_startPos3f + queryBlob->m_normalizedDir2d * queryBlob->m_maxDist,
50 queryBlob->m_radius, shapeColor);
56 displayList->PushText(queryBlob->m_startPos3f + offsetVector, shapeColor.m_lineColor,
"Start NavTag forbidden!");
58 Triangle3f triangle = queryOutputBlob->m_startTriangle.m_triangle;
59 triangle.A.z += triangleZOffset;
60 triangle.B.z += triangleZOffset;
61 triangle.C.z += triangleZOffset;
62 displayList->PushTriangle(triangle, shapeColor);
63 displayList->PushQuad(queryBlob->m_startPos3f, queryBlob->m_startPos3f + queryBlob->m_normalizedDir2d * queryBlob->m_maxDist,
64 queryBlob->m_radius, shapeColor);
71 Triangle3f triangle = queryOutputBlob->m_startTriangle.m_triangle;
72 triangle.A.z += triangleZOffset;
73 triangle.B.z += triangleZOffset;
74 triangle.C.z += triangleZOffset;
75 displayList->PushTriangle(triangle, shapeColor);
78 displayList->PushQuad(queryBlob->m_startPos3f, queryBlob->m_startPos3f + queryBlob->m_normalizedDir2d * queryBlob->m_maxDist,
79 queryBlob->m_radius, shapeColor);
86 Triangle3f triangle = queryOutputBlob->m_startTriangle.m_triangle;
87 triangle.A.z += triangleZOffset;
88 triangle.B.z += triangleZOffset;
89 triangle.C.z += triangleZOffset;
90 displayList->PushTriangle(triangle, shapeColor);
93 displayList->PushLine(queryOutputBlob->m_collisionPos3f, queryOutputBlob->m_collisionPos3f + offsetVector, shapeColor.m_lineColor);
94 displayList->PushText(queryOutputBlob->m_collisionPos3f + offsetVector, shapeColor.m_lineColor,
"Collision point (arrival error)");
95 displayList->PushQuad(queryBlob->m_startPos3f, queryBlob->m_startPos3f + queryBlob->m_normalizedDir2d * queryBlob->m_maxDist,
96 queryBlob->m_radius, shapeColor);
103 Triangle3f triangle = queryOutputBlob->m_startTriangle.m_triangle;
104 triangle.A.z += triangleZOffset;
105 triangle.B.z += triangleZOffset;
106 triangle.C.z += triangleZOffset;
107 displayList->PushTriangle(triangle, shapeColor);
110 displayList->PushText(queryBlob->m_startPos3f + offsetVector, shapeColor.m_lineColor,
"Lack of working memory!");
111 displayList->PushQuad(queryBlob->m_startPos3f, queryBlob->m_startPos3f + queryBlob->m_normalizedDir2d * queryBlob->m_maxDist,
112 queryBlob->m_radius, shapeColor);
118 displayList->PushText(queryBlob->m_startPos3f + offsetVector, shapeColor.m_lineColor,
"Unknown error!");
119 displayList->PushQuad(queryBlob->m_startPos3f, queryBlob->m_startPos3f + queryBlob->m_normalizedDir2d * queryBlob->m_maxDist,
120 queryBlob->m_radius, shapeColor);
126 Triangle3f triangle = queryOutputBlob->m_startTriangle.m_triangle;
127 triangle.A.z += triangleZOffset;
128 triangle.B.z += triangleZOffset;
129 triangle.C.z += triangleZOffset;
130 displayList->PushTriangle(triangle, shapeColor);
131 triangle = queryOutputBlob->m_arrivalTriangle.m_triangle;
132 triangle.A.z += triangleZOffset;
133 triangle.B.z += triangleZOffset;
134 triangle.C.z += triangleZOffset;
135 displayList->PushTriangle(triangle, shapeColor);
136 displayList->PushQuad(queryBlob->m_startPos3f, queryOutputBlob->m_arrivalPos3f, queryBlob->m_radius, shapeColor);
142 Triangle3f triangle = queryOutputBlob->m_startTriangle.m_triangle;
143 triangle.A.z += triangleZOffset;
144 triangle.B.z += triangleZOffset;
145 triangle.C.z += triangleZOffset;
146 displayList->PushTriangle(triangle, shapeColor);
147 triangle = queryOutputBlob->m_arrivalTriangle.m_triangle;
148 triangle.A.z += triangleZOffset;
149 triangle.B.z += triangleZOffset;
150 triangle.C.z += triangleZOffset;
151 displayList->PushTriangle(triangle, shapeColor);
154 displayList->PushLine(queryOutputBlob->m_collisionPos3f, queryOutputBlob->m_collisionPos3f + offsetVector, shapeColor.m_lineColor);
155 displayList->PushText(queryOutputBlob->m_collisionPos3f + offsetVector, shapeColor.m_lineColor,
"Collision point");
156 displayList->PushQuad(queryBlob->m_startPos3f, queryOutputBlob->m_arrivalPos3f, queryBlob->m_radius, shapeColor);
161 QueryDynamicOutputBlob* queryDynamicOutputBlob = queryOutputBlob->m_queryDynamicOutputBlobRef.Ptr();
162 if (queryDynamicOutputBlob != NULL)
164 QueryDynamicOutputDisplayListBuilder dynamicOutputDLBuilder;
165 dynamicOutputDLBuilder.Build(displayList, (
char*)queryDynamicOutputBlob, 0);
Indicates that insufficient working memory caused the query to stop.
Definition: basesegmentcastquery.h:32
Indicates that an error occured during the query computation.
Definition: basesegmentcastquery.h:33
Indicates that the NavTag at the starting point was forbidden.
Definition: basesegmentcastquery.h:29
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 query has not yet been initialized.
Definition: basesegmentcastquery.h:25
static const VisualColor Orange
Represents the color with RGBA values (255, 165, 0, 255).
Definition: visualcolor.h:195
Indicates that the query has not yet been launched.
Definition: basesegmentcastquery.h:26
static const VisualColor Red
Represents the color with RGBA values (255, 0, 0, 255).
Definition: visualcolor.h:209
SegmentCastQueryResult
Enumerates the possible results of a SegmentCastQuery.
Definition: basesegmentcastquery.h:23
static Vec3f UnitZ()
Returns the normalized orientation of the Z axis.
Definition: vec3f.h:218
Indicates that moving back the collision point resulted in an arrival position that is outside of the...
Definition: basesegmentcastquery.h:31
Indicates that a NavMesh triangle could not be found for the starting point.
Definition: basesegmentcastquery.h:28
Definition: gamekitcrowddispersion.h:20
Indicates that the segment was able to travel its maximum distance without collision.
Definition: basesegmentcastquery.h:35
Indicates that the starting point is very close to a NavMesh border. Either the segment does not fit ...
Definition: basesegmentcastquery.h:30
unsigned int KyUInt32
Type used internally to represent an unsigned 32-bit integer.
Definition: types.h:36
Indicates that a final arrival position was calculated successfully.
Definition: basesegmentcastquery.h:36
float KyFloat32
Type used internally to represent a 32-bit floating-point number.
Definition: types.h:43