2 using System.Collections;
3 using UnityEngine.EventSystems;
7 private GameObject meshPositionNode;
9 private Vector3 localRotationAxis;
12 public void startRotate (BaseEventData eventData) {
13 PointerEventData data = eventData as PointerEventData;
14 if (data.button != PointerEventData.InputButton.Left) {
17 this.transform.GetChild (0).gameObject.SetActive (
true);
18 Vector3 localUp = this.transform.parent.InverseTransformDirection (this.transform.parent.forward);
19 localRotationAxis = Vector3.Cross (localUp, this.transform.localPosition);
25 public void stopRotate (BaseEventData eventData) {
26 PointerEventData data = eventData as PointerEventData;
27 if (data.button != PointerEventData.InputButton.Left) {
30 this.transform.GetChild (0).gameObject.SetActive (
false);
34 private void RotateObject () {
35 InputDevice inputDevice = InputDeviceManager.instance.currentInputDevice;
37 Plane intersectPlane =
new Plane ();
39 Vector3 normal = this.transform.parent.TransformDirection(localRotationAxis.normalized);
40 intersectPlane.SetNormalAndPosition (normal, this.transform.parent.position);
42 Ray intersectRay = inputDevice.createRay ();
44 intersectRay.origin = inputDevice.getEventCamera ().transform.position;
45 if (intersectPlane.Raycast (intersectRay, out dist)) {
46 Vector3 intersectPoint = intersectRay.GetPoint (dist);
51 Vector3 posDir = this.transform.position - this.transform.parent.position;
52 Vector3 intersectDir = intersectPoint - this.transform.parent.position;
53 float angle = Vector3.Angle (posDir, intersectDir);
56 if(Vector3.Dot(Vector3.Cross(posDir, intersectDir), normal) < 0) {
61 this.GetComponentInParent<
Annotation> ().rotateMesh(Quaternion.AngleAxis (angle, localRotationAxis));
68 this.transform.parent.rotation = this.GetComponentInParent<
Annotation>().myAnnotationMesh.transform.rotation;