1using System.Collections.Generic;
8using Valve.VR.InteractionSystem;
10[RequireComponent (typeof(Hand))]
18 private GameObject currentObject =
null;
24 internal int xPosScreen;
25 internal int yPosScreen;
26 private Queue<Vector3> fromQueue;
28 private Vector3 avgHitPoint;
29 private Vector3 transformedHitPoint;
30 internal RaycastHit hitVC;
36 line.positionCount = 2;
38 fromQueue =
new Queue<Vector3>();
53 if (!Physics.Raycast (transform.position, transform.forward, out hit,
maxDistance,
mask)) {
56 line.gameObject.SetActive(
false);
57 reticleVive.GetComponent<SpriteRenderer>().enabled =
false;
64 line.gameObject.SetActive(
true);
65 reticleVive.GetComponent<SpriteRenderer>().enabled =
true;
66 reticleVive.GetComponent<SpriteRenderer>().gameObject.SetActive(
true);
68 line.SetPosition (0, transform.position);
69 line.SetPosition (1, hit.point);
70 if (SteamVR_Actions._default.GrabGrip.GetStateDown(SteamVR_Input_Sources.Any)) {
73 UpdatePointerStatus(hit.point);
75 fromQueue.Enqueue(hit.transform.GetChild(0).InverseTransformPoint(hit.point));
78 if (fromQueue.Count == 10)
80 var avg =
default(Vector3);
81 foreach (var v
in fromQueue)
86 avg /= fromQueue.Count;
88 while (fromQueue.Count == 10)
94 xRate = avgHitPoint.x /
RawImage.GetComponent<RectTransform>().sizeDelta.x;
95 xRate2 = hit.transform.InverseTransformPoint(avgHitPoint).x / xWidth;
96 yRate = avgHitPoint.y /
RawImage.GetComponent<RectTransform>().sizeDelta.y;
117 GUI.Label(
new Rect(10, 120, 100, 100), $
"X: {avgHitPoint.x.ToString("F3
")} Y: {avgHitPoint.y.ToString("F3
")}");
123 private void UpdatePointerStatus(Vector3 hitPoint)
127 if (currentObject !=
null)
128 hit =
mask == (
mask | (1 << currentObject.layer));
static void MoveMouse(int x, int y)
UnityAction< Vector3, bool > OnPointerUpdate
StandaloneInputModule inputModule