3 using System.Collections;
7 public uint controllerIndex;
10 public Transform target;
18 public bool active =
true;
20 public float thickness = 0.002f;
21 public GameObject holder;
22 public GameObject pointer;
23 bool isActive =
false;
24 public bool addRigidBody =
false;
25 public Transform reference;
26 public event PointerEventHandler PointerIn;
27 public event PointerEventHandler PointerOut;
29 Transform previousContact = null;
34 holder =
new GameObject();
35 holder.transform.parent = this.transform;
36 holder.transform.localPosition = Vector3.zero;
37 holder.transform.localRotation = Quaternion.identity;
39 pointer = GameObject.CreatePrimitive(PrimitiveType.Cube);
40 pointer.transform.parent = holder.transform;
41 pointer.transform.localScale =
new Vector3(thickness, thickness, 100f);
42 pointer.transform.localPosition =
new Vector3(0f, 0f, 50f);
43 pointer.transform.localRotation = Quaternion.identity;
44 BoxCollider collider = pointer.GetComponent<BoxCollider>();
49 collider.isTrigger =
true;
51 Rigidbody rigidBody = pointer.AddComponent<Rigidbody>();
52 rigidBody.isKinematic =
true;
58 Object.Destroy(collider);
61 Material newMaterial =
new Material(Shader.Find(
"Unlit/Color"));
62 newMaterial.SetColor(
"_Color", color);
63 pointer.GetComponent<MeshRenderer>().material = newMaterial;
68 if (PointerIn != null)
74 if (PointerOut != null)
85 this.transform.GetChild(0).gameObject.SetActive(
true);
92 Ray raycast =
new Ray(transform.position, transform.forward);
94 bool bHit = Physics.Raycast(raycast, out hit);
96 if(previousContact && previousContact != hit.transform)
99 if (controller != null)
101 args.controllerIndex = controller.controllerIndex;
105 args.target = previousContact;
107 previousContact = null;
109 if(bHit && previousContact != hit.transform)
112 if (controller != null)
114 argsIn.controllerIndex = controller.controllerIndex;
116 argsIn.distance = hit.distance;
118 argsIn.target = hit.transform;
120 previousContact = hit.transform;
124 previousContact = null;
126 if (bHit && hit.distance < 100f)
131 if (controller != null && controller.triggerPressed)
133 pointer.transform.localScale =
new Vector3(thickness * 5f, thickness * 5f, dist);
137 pointer.transform.localScale =
new Vector3(thickness, thickness, dist);
139 pointer.transform.localPosition =
new Vector3(0f, 0f, dist/2f);