10 if (ent.GetAnimation().GetBoneMatrix(bone, boneMat))
13 ent.GetTransform(mat);
15 vector pBase = boneMat[3];
16 vector p0 = boneMat[0] * scale + boneMat[3];
17 vector p1 = boneMat[1] * scale + boneMat[3];
18 vector p2 = boneMat[2] * scale + boneMat[3];
19 pBase = pBase.Multiply4(mat);
20 p0 = p0.Multiply4(mat);
21 p1 = p1.Multiply4(mat);
22 p2 = p2.Multiply4(mat);
23 Shape.Create(ShapeType.LINE, ARGB(255, 255, 0, 0), ShapeFlags.ONCE|ShapeFlags.NOZBUFFER, pBase, p0);
24 Shape.Create(ShapeType.LINE, ARGB(255, 0, 255, 0), ShapeFlags.ONCE|ShapeFlags.NOZBUFFER, pBase, p1);
25 Shape.Create(ShapeType.LINE, ARGB(255, 0, 0, 255), ShapeFlags.ONCE|ShapeFlags.NOZBUFFER, pBase, p2);
30 Shape
CreateCone(vector pos, vector aroundDir,
float coneAngX,
float coneAngY,
float coneLength,
int color,
int subdivisions, ShapeFlags flags)
34 if (subdivisions > 50)
40 vector fw = rt * aroundDir;
50 float sectionDeg = 360 / subdivisions;
55 for (
int i = 0; i < subdivisions; i++)
57 float xValue = Math.Sin(sectionDeg * i * Math.DEG2RAD);
59 float yValue = Math.Cos(sectionDeg * i * Math.DEG2RAD);
62 float lineAng = Math.AbsFloat(xValue * coneAngX);
63 lineAng += Math.AbsFloat(yValue * coneAngY);
65 vector pt = Vector(0, 0, coneLength);
67 Math3D.AnglesToMatrix(Vector(sectionDeg * i, 90 - lineAng, 0), rotMat);
68 pt = pt.Multiply3(rotMat);
69 pt = pt.Multiply3(mat);
70 pts[curPts] = pt + pos;
74 pts[curPts] = pt + pos;
79 return Shape.CreateLines(color, flags, pts, curPts);
83 Shape
CreateCircle(vector pos, vector aroundDir,
float radius,
int color,
int subdivisions, ShapeFlags flags)
87 if (subdivisions > 50)
93 vector fw = rt * aroundDir;
103 float sectionDeg = 360 / subdivisions;
107 for (
int i = 0; i < subdivisions; i++)
109 vector pt = vector.FromYaw(sectionDeg * i) * radius;
110 pt = pt.Multiply3(mat);
113 pts[subdivisions - 1] = pts[0];
115 return Shape.CreateLines(color, flags, pts, subdivisions);
119 Shape
CreateCircleArc(vector pos, vector aroundDir, vector forwardDir,
float angMin,
float angMax,
float radius,
int color,
int subdivisions, ShapeFlags flags)
121 if (subdivisions < 2)
124 if (subdivisions > 50)
129 float angTmp = angMin;
134 if (angMin > 360 || angMax > 360)
135 return CreateCircle(pos, aroundDir, radius, color, subdivisions, flags);
137 vector rt = aroundDir * forwardDir;
145 float sectionDeg = Math.AbsFloat(angMax - angMin) / subdivisions;
150 for (
int i = 0; i < subdivisions; i++)
152 vector pt = vector.FromYaw(sectionDeg * i + angMin) * radius;
153 pt = pt.Multiply3(mat);
157 return Shape.CreateLines(color, flags, pts, subdivisions);
165 Shape
CreateCircleSlice(vector pos, vector aroundDir, vector forwardDir,
float angMin,
float angMax,
float radius,
int color,
int subdivisions, ShapeFlags flags)
167 if (subdivisions < 2)
169 if (subdivisions > 50)
172 return CreateCircle(pos, aroundDir, radius, color, subdivisions, flags);
176 vector rt = aroundDir * forwardDir;
184 float sectionDeg = Math.AbsFloat(angMax - angMin) / (subdivisions - 1);
187 for (
int i = 0; i < subdivisions; i++)
190 vector pt = vector.FromYaw(sectionDeg * i + angMin) * radius;
191 pt = pt.Multiply3(mat);
192 pts[ptIndex] = pt + pos;
196 pts[subdivisions - 1] = pos;
198 return Shape.CreateLines(color, flags, pts, subdivisions);
202 void CreateArrowLinkLines(vector from, vector to, vector faceDir,
float size,
int numArrows,
int color, ShapeFlags flags)
207 vector fw = to - from;
209 vector rt = faceDir * fw;
223 float distInc = vector.Distance(from, to) / numArrows;
224 for (
int i = 0; i < numArrows; i++)
227 vector pos = fw * (distInc * i) + from;
228 pts[0] = Vector(-1, 0, 0).Multiply3(scaledMat) * size + pos;
229 pts[1] = Vector(0, 0, 0.5).Multiply3(scaledMat) * size + pos;
230 pts[2] = Vector(1, 0, 0).Multiply3(scaledMat) * size + pos;
231 shp = Shape.CreateLines(color, flags, pts, 3);
236 void CreateSimpleText(
string text, vector mat[4],
float size,
int color, ShapeFlags flags, array<ref Shape> output =
null,
float scaleWidth = 1,
bool doBackground =
false,
int backgroundColor = 0x80000000)
239 scaledMat[0] = mat[0] * size * scaleWidth;
240 scaledMat[1] = mat[1] * size;
241 scaledMat[2] = mat[2];
242 scaledMat[3] = mat[3];
246 int numLetters = text.Length();
247 float offsetStartLeft = numLetters * -0.5;
253 ShapeFlags bgFlags = ShapeFlags.TRANSP | ShapeFlags.NOOUTLINE | ShapeFlags.NOZWRITE;
254 if (flags & ShapeFlags.ONCE)
255 bgFlags |= ShapeFlags.ONCE;
256 if (flags & ShapeFlags.NOZBUFFER)
257 bgFlags |= ShapeFlags.NOZBUFFER;
259 shp = Shape.Create(ShapeType.BBOX, backgroundColor, bgFlags, Vector(offsetStartLeft - 0.25, -0.25, 0.01), Vector(-offsetStartLeft + 0.25, 1.25, 0.01));
260 shp.SetMatrix(scaledMat);
265 for (
int i = 0; i < numLetters; i++)
267 float start = i + offsetStartLeft + 0.1;
268 string letter = text.Get(i);
269 string letterUpper = letter;
270 letterUpper.ToUpper();
273 if (letterUpper == letter)
283 pts[0][0] = start; pts[0][1] = 0;
284 pts[1][0] = start + 0.3; pts[1][1] = caseScale * 0.9;
285 pts[2][0] = start + 0.6; pts[2][1] = 0;
286 pts[3][0] = start + 0.47; pts[3][1] = caseScale * 0.37;
287 pts[4][0] = start + 0.13; pts[4][1] = caseScale * 0.37;
288 shp = Shape.CreateLines(color, flags, pts, 5);
289 shp.SetMatrix(scaledMat);
296 pts[0][0] = start + 0.1; pts[0][1] = 0;
297 pts[1][0] = start + 0.1; pts[1][1] = caseScale * 0.9;
298 pts[2][0] = start + 0.5; pts[2][1] = caseScale * 0.9;
299 pts[3][0] = start + 0.6; pts[3][1] = caseScale * 0.8;
300 pts[4][0] = start + 0.6; pts[4][1] = caseScale * 0.6;
301 pts[5][0] = start + 0.5; pts[5][1] = caseScale * 0.5;
302 pts[6][0] = start + 0.1; pts[6][1] = caseScale * 0.5;
304 pts[8][0] = start + 0.6; pts[8][1] = caseScale * 0.4;
305 pts[9][0] = start + 0.6; pts[9][1] = caseScale * 0.1;
306 pts[10][0] = start + 0.5; pts[10][1] = 0;
307 pts[11][0] = start + 0.1; pts[11][1] = 0;
308 shp = Shape.CreateLines(color, flags, pts, 12);
309 shp.SetMatrix(scaledMat);
317 pts[0][0] = start + 0.6; pts[0][1] = caseScale * 0.2;
318 pts[1][0] = start + 0.4; pts[1][1] = 0;
319 pts[2][0] = start + 0.2; pts[2][1] = 0;
320 pts[3][0] = start; pts[3][1] = caseScale * 0.2;
321 pts[4][0] = start; pts[4][1] = caseScale * 0.7;
322 pts[5][0] = start + 0.2; pts[5][1] = caseScale * 0.9;
323 pts[6][0] = start + 0.4; pts[6][1] = caseScale * 0.9;
324 pts[7][0] = start + 0.6; pts[7][1] = caseScale * 0.7;
325 shp = Shape.CreateLines(color, flags, pts, 8);
326 shp.SetMatrix(scaledMat);
334 pts[0][0] = start; pts[0][1] = caseScale * 0.9;
335 pts[1][0] = start + 0.4; pts[1][1] = caseScale * 0.9;
336 pts[2][0] = start + 0.6; pts[2][1] = caseScale * 0.7;
337 pts[3][0] = start + 0.6; pts[3][1] = caseScale * 0.2;
338 pts[4][0] = start + 0.4; pts[4][1] = 0;
339 pts[5][0] = start; pts[5][1] = 0;
340 pts[6][0] = start; pts[6][1] = caseScale * 0.9;
341 shp = Shape.CreateLines(color, flags, pts, 7);
342 shp.SetMatrix(scaledMat);
350 pts[0][0] = start + 0.5; pts[0][1] = 0;
351 pts[1][0] = start; pts[1][1] = 0;
352 pts[2][0] = start; pts[2][1] = caseScale * 0.4;
353 pts[3][0] = start + 0.4; pts[3][1] = caseScale * 0.4;
355 pts[5][0] = start; pts[5][1] = caseScale * 0.9;
356 pts[6][0] = start + 0.5; pts[6][1] = caseScale * 0.9;
357 shp = Shape.CreateLines(color, flags, pts, 7);
358 shp.SetMatrix(scaledMat);
365 pts[0] = Vector(start, 0, 0);
366 pts[1] = Vector(start, caseScale * 0.4, 0);
367 pts[2] = Vector(start + 0.4, caseScale * 0.4, 0);
369 pts[4] = Vector(start, caseScale * 0.9, 0);
370 pts[5] = Vector(start + 0.5, caseScale * 0.9, 0);
371 shp = Shape.CreateLines(color, flags, pts, 6);
372 shp.SetMatrix(scaledMat);
379 pts[0] = Vector(start + 0.4, caseScale * 0.4, 0);
380 pts[1] = Vector(start + 0.6, caseScale * 0.4, 0);
381 pts[2] = Vector(start + 0.6, caseScale * 0.2, 0);
382 pts[3] = Vector(start + 0.4, 0, 0);
383 pts[4] = Vector(start + 0.2, 0, 0);
384 pts[5] = Vector(start, caseScale * 0.2, 0);
385 pts[6] = Vector(start, caseScale * 0.7, 0);
386 pts[7] = Vector(start + 0.2, caseScale * 0.9, 0);
387 pts[8] = Vector(start + 0.4, caseScale * 0.9, 0);
388 pts[9] = Vector(start + 0.6, caseScale * 0.7, 0);
389 shp = Shape.CreateLines(color, flags, pts, 10);
390 shp.SetMatrix(scaledMat);
398 pts[0] = Vector(start, 0, 0);
399 pts[1] = Vector(start, caseScale * 0.9, 0);
400 pts[2] = Vector(start, caseScale * 0.4, 0);
401 pts[3] = Vector(start + 0.6, caseScale * 0.4, 0);
402 pts[4] = Vector(start + 0.6, caseScale * 0.9, 0);
403 pts[5] = Vector(start + 0.6, 0, 0);
405 shp = Shape.CreateLines(color, flags, pts, 6);
406 shp.SetMatrix(scaledMat);
413 pts[0][0] = start + 0.1; pts[0][1] = caseScale * 0.9;
414 pts[1][0] = start + 0.5; pts[1][1] = caseScale * 0.9;
415 pts[2][0] = start + 0.3; pts[2][1] = caseScale * 0.9;
416 pts[3][0] = start + 0.3; pts[3][1] = 0;
417 pts[4][0] = start + 0.5; pts[4][1] = 0;
418 pts[5][0] = start + 0.1; pts[5][1] = 0;
419 shp = Shape.CreateLines(color, flags, pts, 6);
420 shp.SetMatrix(scaledMat);
427 pts[0] = Vector(start, caseScale * 0.9, 0);
428 pts[1] = Vector(start + 0.6, caseScale * 0.9, 0);
429 pts[2] = Vector(start + 0.3, caseScale * 0.9, 0);
430 pts[3] = Vector(start + 0.3, caseScale * 0.1, 0);
431 pts[4] = Vector(start + 0.2, 0, 0);
432 pts[5] = Vector(start + 0.1, 0, 0);
433 pts[6] = Vector(start, caseScale * 0.1, 0);
434 pts[7] = Vector(start, caseScale * 0.3, 0);
436 shp = Shape.CreateLines(color, flags, pts, 8);
437 shp.SetMatrix(scaledMat);
444 pts[0] = Vector(start, 0, 0);
445 pts[1] = Vector(start, caseScale * 0.9, 0);
446 pts[2] = Vector(start, caseScale * 0.5, 0);
447 pts[3] = Vector(start + 0.2, caseScale * 0.5, 0);
448 pts[4] = Vector(start + 0.6, 0, 0);
450 pts[6] = Vector(start + 0.6, caseScale * 0.9, 0);
451 shp = Shape.CreateLines(color, flags, pts, 7);
452 shp.SetMatrix(scaledMat);
459 pts[0] = Vector(start, caseScale * 0.9, 0);
460 pts[1] = Vector(start, 0, 0);
461 pts[2] = Vector(start + 0.6, 0, 0);
462 shp = Shape.CreateLines(color, flags, pts, 3);
463 shp.SetMatrix(scaledMat);
471 pts[0] = Vector(start, 0, 0);
472 pts[1] = Vector(start, caseScale * 0.9, 0);
473 pts[2] = Vector(start + 0.3, caseScale * 0.5, 0);
474 pts[3] = Vector(start + 0.6, caseScale * 0.9, 0);
475 pts[4] = Vector(start + 0.6, 0, 0);
476 shp = Shape.CreateLines(color, flags, pts, 5);
477 shp.SetMatrix(scaledMat);
485 pts[0] = Vector(start, 0, 0);
486 pts[1] = Vector(start, caseScale * 0.9, 0);
487 pts[2] = Vector(start + 0.6, 0, 0);
488 pts[3] = Vector(start + 0.6, caseScale * 0.9, 0);
489 shp = Shape.CreateLines(color, flags, pts, 4);
490 shp.SetMatrix(scaledMat);
498 pts[0][0] = start + 0.6; pts[0][1] = caseScale * 0.2;
499 pts[1][0] = start + 0.4; pts[1][1] = 0;
500 pts[2][0] = start + 0.2; pts[2][1] = 0;
501 pts[3][0] = start; pts[3][1] = caseScale * 0.2;
502 pts[4][0] = start; pts[4][1] = caseScale * 0.7;
503 pts[5][0] = start + 0.2; pts[5][1] = caseScale * 0.9;
504 pts[6][0] = start + 0.4; pts[6][1] = caseScale * 0.9;
505 pts[7][0] = start + 0.6; pts[7][1] = caseScale * 0.7;
507 shp = Shape.CreateLines(color, flags, pts, 9);
508 shp.SetMatrix(scaledMat);
516 pts[0] = Vector(start, 0, 0);
517 pts[1] = Vector(start, caseScale * 0.5, 0);
518 pts[2] = Vector(start, caseScale * 0.9, 0);
519 pts[3] = Vector(start + 0.4, caseScale * 0.9, 0);
520 pts[4] = Vector(start + 0.5, caseScale * 0.8, 0);
521 pts[5] = Vector(start + 0.5, caseScale * 0.6, 0);
522 pts[6] = Vector(start + 0.4, caseScale * 0.5, 0);
523 pts[7] = Vector(start, caseScale * 0.5, 0);
524 shp = Shape.CreateLines(color, flags, pts, 8);
525 shp.SetMatrix(scaledMat);
533 pts[0] = Vector(start + 0.6, caseScale * 0.2, 0);
534 pts[1] = Vector(start + 0.4, 0, 0);
535 pts[2] = Vector(start + 0.2, 0, 0);
536 pts[3] = Vector(start, caseScale * 0.2, 0);
537 pts[4] = Vector(start, caseScale * 0.7, 0);
538 pts[5] = Vector(start + 0.2, caseScale * 0.9, 0);
539 pts[6] = Vector(start + 0.4, caseScale * 0.9, 0);
540 pts[7] = Vector(start + 0.6, caseScale * 0.7, 0);
542 shp = Shape.CreateLines(color, flags, pts, 9);
543 shp.SetMatrix(scaledMat);
547 pts[0] = Vector(start + 0.4, caseScale * 0.2, 0);
548 pts[1] = Vector(start + 0.6, 0, 0);
549 shp = Shape.CreateLines(color, flags, pts, 2);
550 shp.SetMatrix(scaledMat);
558 pts[0] = Vector(start, 0, 0);
559 pts[1] = Vector(start, caseScale * 0.5, 0);
560 pts[2] = Vector(start, caseScale * 0.9, 0);
561 pts[3] = Vector(start + 0.4, caseScale * 0.9, 0);
562 pts[4] = Vector(start + 0.5, caseScale * 0.8, 0);
563 pts[5] = Vector(start + 0.5, caseScale * 0.6, 0);
564 pts[6] = Vector(start + 0.4, caseScale * 0.5, 0);
565 pts[7] = Vector(start + 0.2, caseScale * 0.5, 0);
567 shp = Shape.CreateLines(color, flags, pts, 9);
568 shp.SetMatrix(scaledMat);
572 pts[0] = Vector(start + 0.2, caseScale * 0.5, 0);
573 pts[1] = Vector(start + 0.5, 0, 0);
574 shp = Shape.CreateLines(color, flags, pts, 2);
575 shp.SetMatrix(scaledMat);
583 pts[0] = Vector(start + 0.5, caseScale * 0.8, 0);
584 pts[1] = Vector(start + 0.4, caseScale * 0.9, 0);
585 pts[2] = Vector(start + 0.1, caseScale * 0.9, 0);
586 pts[3] = Vector(start, caseScale * 0.8, 0);
587 pts[4] = Vector(start, caseScale * 0.6, 0);
588 pts[5] = Vector(start + 0.1, caseScale * 0.5, 0);
589 pts[6] = Vector(start + 0.4, caseScale * 0.4, 0);
590 pts[7] = Vector(start + 0.5, caseScale * 0.3, 0);
591 pts[8] = Vector(start + 0.5, caseScale * 0.1, 0);
592 pts[9] = Vector(start + 0.4, 0, 0);
593 pts[10] = Vector(start + 0.1, 0, 0);
594 pts[11] = Vector(start, caseScale * 0.1, 0);
595 shp = Shape.CreateLines(color, flags, pts, 12);
596 shp.SetMatrix(scaledMat);
604 pts[0] = Vector(start, caseScale * 0.9, 0);
605 pts[1] = Vector(start + 0.6, caseScale * 0.9, 0);
606 pts[2] = Vector(start + 0.3, caseScale * 0.9, 0);
607 pts[3] = Vector(start + 0.3, 0, 0);
608 shp = Shape.CreateLines(color, flags, pts, 4);
609 shp.SetMatrix(scaledMat);
616 pts[0] = Vector(start, caseScale * 0.9, 0);
617 pts[1] = Vector(start, caseScale * 0.2, 0);
618 pts[2] = Vector(start + 0.2, 0, 0);
619 pts[3] = Vector(start + 0.4, 0, 0);
620 pts[4] = Vector(start + 0.6, caseScale * 0.2, 0);
621 pts[5] = Vector(start + 0.6, caseScale * 0.9, 0);
622 shp = Shape.CreateLines(color, flags, pts, 6);
623 shp.SetMatrix(scaledMat);
631 pts[0] = Vector(start, caseScale * 0.9, 0);
632 pts[1] = Vector(start + 0.3, 0, 0);
633 pts[2] = Vector(start + 0.6, caseScale * 0.9, 0);
634 shp = Shape.CreateLines(color, flags, pts, 3);
635 shp.SetMatrix(scaledMat);
643 pts[0] = Vector(start, caseScale * 0.9, 0);
644 pts[1] = Vector(start + 0.1, 0, 0);
645 pts[2] = Vector(start + 0.3, caseScale * 0.4, 0);
646 pts[3] = Vector(start + 0.5, 0, 0);
647 pts[4] = Vector(start + 0.6, caseScale * 0.9, 0);
648 shp = Shape.CreateLines(color, flags, pts, 5);
649 shp.SetMatrix(scaledMat);
657 pts[0] = Vector(start, caseScale * 0.9, 0);
658 pts[1] = Vector(start + 0.3, caseScale * 0.45, 0);
659 pts[2] = Vector(start + 0.6, caseScale * 0.9, 0);
661 pts[4] = Vector(start, 0, 0);
663 pts[6] = Vector(start + 0.6, 0, 0);
664 shp = Shape.CreateLines(color, flags, pts, 7);
665 shp.SetMatrix(scaledMat);
672 pts[0] = Vector(start, caseScale * 0.9, 0);
673 pts[1] = Vector(start + 0.3, caseScale * 0.5, 0);
674 pts[2] = Vector(start + 0.6, caseScale * 0.9, 0);
676 pts[4] = Vector(start + 0.3, 0, 0);
677 shp = Shape.CreateLines(color, flags, pts, 5);
678 shp.SetMatrix(scaledMat);
685 pts[0] = Vector(start, caseScale * 0.9, 0);
686 pts[1] = Vector(start + 0.6, caseScale * 0.9, 0);
687 pts[2] = Vector(start, 0, 0);
688 pts[3] = Vector(start + 0.6, 0, 0);
689 shp = Shape.CreateLines(color, flags, pts, 4);
690 shp.SetMatrix(scaledMat);
700 pts[0][0] = start + 0.5; pts[0][1] = 0.7;
701 pts[1][0] = start + 0.4; pts[1][1] = 0.9;
702 pts[2][0] = start + 0.2; pts[2][1] = 0.9;
703 pts[3][0] = start + 0.1; pts[3][1] = 0.7;
704 pts[4][0] = start + 0.1; pts[4][1] = 0.2;
705 pts[5][0] = start + 0.2; pts[5][1] = 0;
706 pts[6][0] = start + 0.4; pts[6][1] = 0;
707 pts[7][0] = start + 0.5; pts[7][1] = 0.2;
708 pts[8][0] = start + 0.5; pts[8][1] = 0.7;
710 shp = Shape.CreateLines(color, flags, pts, 10);
711 shp.SetMatrix(scaledMat);
719 pts[0] = Vector(start + 0.1, 0.7, 0);
720 pts[1] = Vector(start + 0.3, 0.9, 0);
721 pts[2] = Vector(start + 0.3, 0, 0);
722 pts[3] = Vector(start + 0.1, 0, 0);
723 pts[4] = Vector(start + 0.5, 0, 0);
724 shp = Shape.CreateLines(color, flags, pts, 5);
725 shp.SetMatrix(scaledMat);
732 pts[0] = Vector(start + 0.1, 0.7, 0);
733 pts[1] = Vector(start + 0.2, 0.9, 0);
734 pts[2] = Vector(start + 0.4, 0.9, 0);
735 pts[3] = Vector(start + 0.5, 0.7, 0);
736 pts[4] = Vector(start + 0.1, 0, 0);
737 pts[5] = Vector(start + 0.5, 0, 0);
738 shp = Shape.CreateLines(color, flags, pts, 6);
739 shp.SetMatrix(scaledMat);
747 pts[0] = Vector(start + 0.1, 0.7, 0);
748 pts[1] = Vector(start + 0.2, 0.9, 0);
749 pts[2] = Vector(start + 0.4, 0.9, 0);
750 pts[3] = Vector(start + 0.5, 0.7, 0);
751 pts[4] = Vector(start + 0.4, 0.45, 0);
752 pts[5] = Vector(start + 0.3, 0.45, 0);
753 shp = Shape.CreateLines(color, flags, pts, 6);
754 shp.SetMatrix(scaledMat);
758 pts[0] = Vector(start + 0.4, 0.45, 0);
759 pts[1] = Vector(start + 0.5, 0.2, 0);
760 pts[2] = Vector(start + 0.4, 0, 0);
761 pts[3] = Vector(start + 0.2, 0, 0);
762 pts[4] = Vector(start + 0.1, 0.2, 0);
763 shp = Shape.CreateLines(color, flags, pts, 5);
764 shp.SetMatrix(scaledMat);
772 pts[0] = Vector(start + 0.4, 0, 0);
773 pts[1] = Vector(start + 0.4, 0.4, 0);
774 pts[2] = Vector(start + 0.4, 0.9, 0);
775 pts[3] = Vector(start + 0.1, 0.4, 0);
776 pts[4] = Vector(start + 0.4, 0.4, 0);
777 pts[5] = Vector(start + 0.5, 0.4, 0);
778 shp = Shape.CreateLines(color, flags, pts, 6);
779 shp.SetMatrix(scaledMat);
787 pts[0] = Vector(start + 0.5, 0.9, 0);
788 pts[1] = Vector(start + 0.1, 0.9, 0);
789 pts[2] = Vector(start + 0.1, 0.5, 0);
790 pts[3] = Vector(start + 0.4, 0.5, 0);
791 pts[4] = Vector(start + 0.5, 0.3, 0);
792 pts[5] = Vector(start + 0.5, 0.2, 0);
793 pts[6] = Vector(start + 0.4, 0, 0);
794 pts[7] = Vector(start + 0.2, 0, 0);
795 pts[8] = Vector(start + 0.1, 0.2, 0);
796 shp = Shape.CreateLines(color, flags, pts, 9);
797 shp.SetMatrix(scaledMat);
805 pts[0] = Vector(start + 0.4, 0.9, 0);
806 pts[1] = Vector(start + 0.2, 0.9, 0);
807 pts[2] = Vector(start + 0.1, 0.7, 0);
808 pts[3] = Vector(start + 0.1, 0.3, 0);
809 pts[4] = Vector(start + 0.1, 0.2, 0);
810 pts[5] = Vector(start + 0.2, 0, 0);
811 pts[6] = Vector(start + 0.4, 0, 0);
812 pts[7] = Vector(start + 0.5, 0.2, 0);
813 pts[8] = Vector(start + 0.5, 0.3, 0);
814 pts[9] = Vector(start + 0.4, 0.5, 0);
815 pts[10] = Vector(start + 0.2, 0.5, 0);
817 shp = Shape.CreateLines(color, flags, pts, 12);
818 shp.SetMatrix(scaledMat);
826 pts[0] = Vector(start + 0.1, 0.9, 0);
827 pts[1] = Vector(start + 0.5, 0.9, 0);
828 pts[2] = Vector(start + 0.3, 0, 0);
829 shp = Shape.CreateLines(color, flags, pts, 3);
830 shp.SetMatrix(scaledMat);
838 pts[0] = Vector(start + 0.4, 0.9, 0);
839 pts[1] = Vector(start + 0.2, 0.9, 0);
840 pts[2] = Vector(start + 0.1, 0.7, 0);
841 pts[3] = Vector(start + 0.2, 0.5, 0);
842 pts[4] = Vector(start + 0.4, 0.5, 0);
843 pts[5] = Vector(start + 0.5, 0.7, 0);
845 shp = Shape.CreateLines(color, flags, pts, 7);
846 shp.SetMatrix(scaledMat);
850 pts[0] = Vector(start + 0.2, 0.5, 0);
851 pts[1] = Vector(start + 0.1, 0.3, 0);
852 pts[2] = Vector(start + 0.1, 0.2, 0);
853 pts[3] = Vector(start + 0.2, 0, 0);
854 pts[4] = Vector(start + 0.4, 0, 0);
855 pts[5] = Vector(start + 0.5, 0.2, 0);
856 pts[6] = Vector(start + 0.5, 0.3, 0);
857 pts[7] = Vector(start + 0.4, 0.5, 0);
858 shp = Shape.CreateLines(color, flags, pts, 8);
859 shp.SetMatrix(scaledMat);
867 pts[0] = Vector(start + 0.5, 0.6, 0);
868 pts[1] = Vector(start + 0.4, 0.4, 0);
869 pts[2] = Vector(start + 0.2, 0.4, 0);
870 pts[3] = Vector(start + 0.1, 0.6, 0);
871 pts[4] = Vector(start + 0.1, 0.7, 0);
872 pts[5] = Vector(start + 0.2, 0.9, 0);
873 pts[6] = Vector(start + 0.4, 0.9, 0);
874 pts[7] = Vector(start + 0.5, 0.7, 0);
875 pts[8] = Vector(start + 0.5, 0.6, 0);
876 pts[9] = Vector(start + 0.5, 0.4, 0);
877 pts[10] = Vector(start + 0.5, 0.2, 0);
878 pts[11] = Vector(start + 0.4, 0, 0);
879 pts[12] = Vector(start + 0.2, 0, 0);
880 pts[13] = Vector(start + 0.1, 0.2, 0);
881 shp = Shape.CreateLines(color, flags, pts, 14);
882 shp.SetMatrix(scaledMat);
892 pts[0] = Vector(start, 0.1, 0);
893 pts[1] = Vector(start + 0.6, 0.1, 0);
894 shp = Shape.CreateLines(color, flags, pts, 2);
895 shp.SetMatrix(scaledMat);
903 pts[0] = Vector(start + 0.1, 0.45, 0);
904 pts[1] = Vector(start + 0.5, 0.45, 0);
905 shp = Shape.CreateLines(color, flags, pts, 2);
906 shp.SetMatrix(scaledMat);
914 pts[0] = Vector(start + 0.1, 0.45, 0);
915 pts[1] = Vector(start + 0.5, 0.45, 0);
916 pts[2] = Vector(start + 0.3, 0.45, 0);
917 pts[3] = Vector(start + 0.3, 0.25, 0);
918 pts[4] = Vector(start + 0.3, 0.65, 0);
919 shp = Shape.CreateLines(color, flags, pts, 5);
920 shp.SetMatrix(scaledMat);
927 pts[0] = Vector(start + 0.3, 0, 0);
928 pts[1] = Vector(start + 0.3, 0.05, 0);
929 pts[2] = Vector(start + 0.25, 0.05, 0);
930 pts[3] = Vector(start + 0.25, 0, 0);
932 shp = Shape.CreateLines(color, flags, pts, 5);
933 shp.SetMatrix(scaledMat);
941 pts[0] = Vector(start + 0.3, 0.1, 0);
942 pts[1] = Vector(start + 0.3, 0.15, 0);
943 pts[2] = Vector(start + 0.25, 0.15, 0);
944 pts[3] = Vector(start + 0.25, 0.1, 0);
946 shp = Shape.CreateLines(color, flags, pts, 5);
947 shp.SetMatrix(scaledMat);
951 pts[0] = Vector(start + 0.3, 0.6, 0);
952 pts[1] = Vector(start + 0.3, 0.65, 0);
953 pts[2] = Vector(start + 0.25, 0.65, 0);
954 pts[3] = Vector(start + 0.25, 0.6, 0);
956 shp = Shape.CreateLines(color, flags, pts, 5);
957 shp.SetMatrix(scaledMat);
965 pts[0] = Vector(start + 0.3, 0.3, 0);
966 pts[1] = Vector(start + 0.3, 0.9, 0);
967 pts[2] = Vector(start + 0.25, 0.9, 0);
968 pts[3] = Vector(start + 0.25, 0.3, 0);
970 shp = Shape.CreateLines(color, flags, pts, 5);
971 shp.SetMatrix(scaledMat);
975 pts[0] = Vector(start + 0.3, 0, 0);
976 pts[1] = Vector(start + 0.3, 0.05, 0);
977 pts[2] = Vector(start + 0.25, 0.05, 0);
978 pts[3] = Vector(start + 0.25, 0, 0);
980 shp = Shape.CreateLines(color, flags, pts, 5);
981 shp.SetMatrix(scaledMat);
989 pts[0] = Vector(start + 0.3, 0, 0);
990 pts[1] = Vector(start + 0.2, 0, 0);
991 pts[2] = Vector(start + 0.1, -0.2, 0);
992 pts[3] = Vector(start + 0.2, -0.2, 0);
994 shp = Shape.CreateLines(color, flags, pts, 5);
995 shp.SetMatrix(scaledMat);
1003 pts[0] = Vector(start + 0.4, 0.9, 0);
1004 pts[1] = Vector(start + 0.25, 0.9, 0);
1005 pts[2] = Vector(start + 0.3, 0.6, 0);
1006 pts[3] = Vector(start + 0.35, 0.6, 0);
1008 shp = Shape.CreateLines(color, flags, pts, 5);
1009 shp.SetMatrix(scaledMat);
1017 pts[0] = Vector(start + 0.54, 0.9, 0);
1018 pts[1] = Vector(start + 0.25, 0, 0);
1019 shp = Shape.CreateLines(color, flags, pts, 2);
1020 shp.SetMatrix(scaledMat);
1028 pts[0] = Vector(start + 0.55, 0.9, 0);
1029 pts[1] = Vector(start + 0.25, 0, 0);
1030 shp = Shape.CreateLines(color, flags, pts, 2);
1031 shp.SetMatrix(scaledMat);
1035 pts[0] = Vector(start + 0.2, 0.5, 0);
1036 pts[1] = Vector(start + 0.05, 0.7, 0);
1037 pts[2] = Vector(start + 0.2, 0.9, 0);
1038 pts[3] = Vector(start + 0.35, 0.7, 0);
1040 shp = Shape.CreateLines(color, flags, pts, 5);
1041 shp.SetMatrix(scaledMat);
1045 pts[0] = Vector(start + 0.6, 0.1, 0);
1046 pts[1] = Vector(start + 0.45, 0.3, 0);
1047 pts[2] = Vector(start + 0.6, 0.5, 0);
1048 pts[3] = Vector(start + 0.75, 0.3, 0);
1050 shp = Shape.CreateLines(color, flags, pts, 5);
1051 shp.SetMatrix(scaledMat);