14 public bool MouseSupported =
true;
19 public bool KeyboardSupported =
true;
25 public bool JoystickSupported =
false;
30 private Vector3 lastTrackerToUnityTranslation = Vector3.zero;
31 private Quaternion lastTrackerToUnityRotation = Quaternion.identity;
33 private Transform cameraTransform;
37 if (Application.isEditor)
40 #if UNITY_2017_2_OR_NEWER 56 cameraTransform = GetComponent<Camera>().transform;
57 if (cameraTransform == null)
59 Debug.LogError(
"ManualGazeControl being used on a game object without a Camera.");
62 MouseXYRotationAxisControl.enabled = MouseSupported;
63 MouseXYTranslationAxisControl.enabled = MouseSupported;
64 MouseXZTranslationAxisControl.enabled = MouseSupported;
66 KeyboardXYRotationAxisControl.enabled = KeyboardSupported;
67 KeyboardXZRotationAxisControl.enabled = KeyboardSupported;
68 KeyboardXYTranslationAxisControl.enabled = KeyboardSupported;
69 KeyboardXZTranslationAxisControl.enabled = KeyboardSupported;
71 JoystickXYRotationAxisControl.enabled = JoystickSupported;
72 JoystickXYTranslationAxisControl.enabled = JoystickSupported;
73 JoystickXZTranslationAxisControl.enabled = JoystickSupported;
79 cameraTransform.Translate(-this.lastTrackerToUnityTranslation, Space.World);
80 cameraTransform.Rotate(-this.lastTrackerToUnityRotation.eulerAngles, Space.World);
83 float previousZTilt = this.transform.localEulerAngles.z;
84 cameraTransform.Rotate(0, 0, -previousZTilt, Space.Self);
87 Vector3 rotate = Vector3.zero;
88 Vector3 translate = Vector3.zero;
95 rotate += mouseXYRotate;
96 translate += mouseXYTranslate;
97 translate += mouseXZTranslate;
100 if (KeyboardSupported)
106 rotate += keyboardXYRotate;
107 rotate += keyboardXZRotate;
108 translate += keyboardXYTranslate;
109 translate += keyboardXZTranslate;
112 if (JoystickSupported)
117 rotate += joystickXYRotate;
118 translate += joystickXYTranslate;
119 translate += joystickXZTranslate;
122 rotate *= Mathf.Rad2Deg;
125 cameraTransform.Rotate(rotate.x, 0.0f, 0.0f, Space.Self);
126 cameraTransform.Rotate(0.0f, rotate.y, 0.0f, Space.World);
127 cameraTransform.Translate(translate, Space.Self);
130 cameraTransform.Rotate(0.0f, 0.0f, rotate.z + previousZTilt, Space.Self);
133 cameraTransform.Rotate(this.lastTrackerToUnityRotation.eulerAngles, Space.World);
134 cameraTransform.Translate(this.lastTrackerToUnityTranslation, Space.World);