13 #if UNITY_2017_2_OR_NEWER 15 [Tooltip(
"Material used to draw the inscribed rectangle bounds.")]
16 private Material boundsMaterial = null;
19 [Tooltip(
"Material used to draw items in the tracked area bounds.")]
20 private Material trackedAreaBoundsMaterial = null;
31 private void AddQuad()
39 var quad = GameObject.CreatePrimitive(PrimitiveType.Quad);
40 quad.transform.SetParent(transform);
41 quad.transform.Translate(center +
new Vector3(0.0f, 0.005f, 0.0f));
42 quad.transform.Rotate(
new Vector3(90, -angle, 0));
43 quad.transform.localScale =
new Vector3(width, height, 1.0f);
49 private void AddRectangleBounds()
57 LineRenderer lr = gameObject.AddComponent<LineRenderer>();
58 lr.shadowCastingMode =
UnityEngine.Rendering.ShadowCastingMode.Off;
59 lr.useWorldSpace =
false;
61 lr.sharedMaterial = boundsMaterial;
62 lr.startWidth = 0.05f;
64 lr.positionCount = points.Length;
65 lr.SetPositions(points);
72 private void AddIndicators()
74 const int indicatorCount = 15;
75 const float indicatorDistance = 0.2f;
76 const float dimension = indicatorCount * indicatorDistance;
87 Vector3 corner = center - (
new Vector3(dimension, 0.0f, dimension) / 2.0f);
89 for (
int xIndex = 0; xIndex < indicatorCount; ++xIndex)
91 for (
int yIndex = 0; yIndex < indicatorCount; ++yIndex)
93 var offset =
new Vector3(xIndex * indicatorDistance, 0.0f, yIndex * indicatorDistance);
94 var position = corner + offset;
95 var marker = GameObject.CreatePrimitive(PrimitiveType.Sphere);
96 marker.transform.SetParent(transform);
97 marker.transform.position = position;
98 marker.transform.localScale =
new Vector3(0.1f, 0.1f, 0.1f);
100 var markerRenderer = marker.GetComponent<MeshRenderer>();
104 markerRenderer.sharedMaterial = trackedAreaBoundsMaterial;
109 markerRenderer.sharedMaterial = boundsMaterial;