1 using System.Collections;
2 using System.Collections.Generic;
3 using System.Globalization;
5 using UnityEngine.Rendering;
11 private LineRenderer lineRenderer;
12 private Camera mainCamera;
13 private TextMesh textMesh;
14 private GameObject textMeshGo;
16 private bool hasArLocationManager;
22 lineRenderer = GetComponent<LineRenderer>();
24 hasArLocationManager = arLocationManager !=
null;
28 lineRenderer = gameObject.AddComponent<LineRenderer>();
30 var shader = Shader.Find(
"Unlit/Color");
33 lineRenderer.material =
new Material(shader)
35 color =
new Color(0.3960f, 0.6901f, 0.9725f)
40 lineRenderer.useWorldSpace =
true;
41 lineRenderer.alignment = LineAlignment.View;
42 lineRenderer.receiveShadows =
false;
43 lineRenderer.shadowCastingMode = ShadowCastingMode.Off;
44 lineRenderer.allowOcclusionWhenDynamic =
false;
45 lineRenderer.positionCount = 2;
46 lineRenderer.startWidth = 0.1f;
47 lineRenderer.endWidth = 0.1f;
49 textMeshGo =
new GameObject(gameObject.name +
"_text");
50 textMeshGo.transform.localScale =
new Vector3(0.05f, 0.05f, 0.05f);
51 textMesh = textMeshGo.AddComponent<TextMesh>();
52 textMesh.fontSize = 100;
57 var floorLevel = hasArLocationManager ? arLocationManager.
CurrentGroundY : -
ARLocation.Config.InitialGroundHeightGuess;
58 var startPos = MathUtils.SetY(mainCamera.transform.position, floorLevel);
59 var endPos = MathUtils.SetY(transform.position, floorLevel);
61 var lineDir = (endPos - startPos).normalized;
63 lineRenderer.SetPosition(0, startPos);
64 lineRenderer.SetPosition(1, endPos);
66 var textPos = startPos + lineDir * 6.0f;
68 textMeshGo.transform.position = textPos;
69 textMeshGo.transform.LookAt(endPos,
new Vector3(0, 1, 0));
70 textMeshGo.transform.Rotate(90, 90, 0);
71 textMesh.text = Vector3.Distance(startPos, endPos).ToString(
"0.00", CultureInfo.InvariantCulture) +
"m";