2 using System.Collections;
3 using UnityEngine.EventSystems;
8 private bool translate;
9 private Vector3 moveDirection;
10 private Vector3 cursorAnnoVector;
11 public float maxDistanceToMeshNode = 12f;
14 public void dragXDirection (BaseEventData eventData) {
15 PointerEventData data = eventData as PointerEventData;
16 if (data.button != PointerEventData.InputButton.Left) {
19 moveDirection =
new Vector3 (1f, 0f, 0f);
23 public void dragYDirection (BaseEventData eventData) {
24 PointerEventData data = eventData as PointerEventData;
25 if (data.button != PointerEventData.InputButton.Left) {
28 moveDirection =
new Vector3 (0f, 1f, 0f);
32 public void dragZDirection (BaseEventData eventData) {
33 PointerEventData data = eventData as PointerEventData;
34 if (data.button != PointerEventData.InputButton.Left) {
37 moveDirection =
new Vector3 (0f, 0f, 1f);
41 public void setupDirection() {
42 InputDevice inputDevice = InputDeviceManager.instance.currentInputDevice;
43 Plane intersectPlane =
new Plane ();
45 Vector3 camAnnoVec = (inputDevice.getEventCamera ().transform.position -
this.transform.position);
46 Vector3 globalDir = this.transform.TransformDirection (moveDirection);
47 Vector3 planeVec = Vector3.Cross (globalDir, camAnnoVec);
48 Vector3 normal = Vector3.Cross (planeVec, globalDir);
51 intersectPlane.SetNormalAndPosition (normal, transform.position);
54 Ray intersectRay = inputDevice.createRay ();
56 intersectRay.origin = inputDevice.getEventCamera ().transform.position;
57 if (intersectPlane.Raycast (intersectRay, out dist)) {
58 Vector3 intersectPoint = intersectRay.GetPoint (dist);
59 intersectPoint = this.transform.InverseTransformPoint (intersectPoint);
60 intersectPoint = Vector3.Scale (intersectPoint, moveDirection);
61 cursorAnnoVector = intersectPoint - this.transform.localPosition;
66 public void stopTranslation(BaseEventData eventData){
67 PointerEventData data = eventData as PointerEventData;
68 if (data.button != PointerEventData.InputButton.Left) {
74 private void translateAnnotation () {
75 InputDevice inputDevice = InputDeviceManager.instance.currentInputDevice;
76 Plane intersectPlane =
new Plane ();
79 Vector3 camAnnoVec = (inputDevice.getEventCamera ().transform.position -
this.transform.position);
80 Vector3 globalDir = this.transform.TransformDirection (moveDirection);
81 Vector3 planeVec = Vector3.Cross (globalDir, camAnnoVec);
82 Vector3 normal = Vector3.Cross (planeVec, globalDir);
85 intersectPlane.SetNormalAndPosition (normal, transform.position);
88 Ray intersectRay = inputDevice.createRay ();
90 intersectRay.origin = inputDevice.getEventCamera ().transform.position;
91 if (intersectPlane.Raycast (intersectRay, out dist)) {
92 Vector3 intersectPoint = intersectRay.GetPoint (dist);
94 intersectPoint = this.transform.InverseTransformPoint (intersectPoint);
95 intersectPoint = Vector3.Scale (intersectPoint, moveDirection);
96 intersectPoint -= cursorAnnoVector;
97 intersectPoint = this.transform.TransformPoint (intersectPoint);
99 Vector3 vectorToMesh = AnnotationControl.instance.meshPositionNode.transform.position - intersectPoint;
102 if (vectorToMesh.magnitude < maxDistanceToMeshNode) {
105 this.GetComponentInParent<
Annotation>().translateMesh(intersectPoint);
113 this.transform.rotation = AnnotationControl.instance.meshPositionNode.transform.rotation;
117 translateAnnotation ();