/ZSCoreTest/Assets/Scripts/zSpace/ZSCoreDiagnosticWindow.cs

https://bitbucket.org/willderness/3dphysicsbook · C# · 262 lines · 199 code · 58 blank · 5 comment · 1 complexity · cb1a327d2b07e6cb6c5e0258817f30ed MD5 · raw file

  1. using UnityEditor;
  2. using UnityEngine;
  3. using System.Collections;
  4. public class ZSCoreDiagnosticWindow : EditorWindow
  5. {
  6. #region PUBLIC_MEMBERS
  7. // Stereo Members
  8. public bool m_isStereoEnabled = true;
  9. public bool m_areEyesSwapped = false;
  10. public float m_interPupillaryDistance = 0.06f;
  11. public float m_stereoLevel = 1.0f;
  12. public float m_worldScale = 1.0f;
  13. public float m_fieldOfViewScale = 1.0f;
  14. public float m_zeroParallaxOffset = 0.0f;
  15. public float m_nearClip = 0.1f;
  16. public float m_farClip = 100000.0f;
  17. // Tracker Members
  18. public bool m_isHeadTrackingEnabled = true;
  19. public float m_headTrackingScale = 1.0f;
  20. public bool m_isStylusTrackingEnabled = true;
  21. public bool m_isStylusVisualizationEnabled = true;
  22. public bool m_isMouseEmulationEnabled = false;
  23. public float m_mouseEmulationDistance = 1.0f;
  24. public bool m_isStylusLedEnabled = false;
  25. public ZSCore.StylusLedColor m_stylusLedColor = ZSCore.StylusLedColor.White;
  26. public bool m_isStylusVibrationEnabled = false;
  27. public float m_stylusVibrationOnPeriod = 0.0f;
  28. public float m_stylusVibrationOffPeriod = 0.0f;
  29. public int m_stylusVibrationRepeatCount = 0;
  30. public bool m_startStylusVibration = false;
  31. public bool m_stopStylusVibration = false;
  32. // Read Only Members
  33. public Vector3 m_displayOffset = Vector3.zero;
  34. public Vector2 m_displayPosition = Vector2.zero;
  35. public Vector2 m_displayAngle = Vector2.zero;
  36. public Vector2 m_displayResolution = Vector2.zero;
  37. public Vector2 m_displaySize = Vector2.zero;
  38. public Vector3 m_headPosition = Vector3.zero;
  39. public Vector3 m_headDirection = Vector3.zero;
  40. public Vector3 m_headCameraPosition = Vector3.zero;
  41. public Vector3 m_headCameraDirection = Vector3.zero;
  42. public Vector3 m_headWorldPosition = Vector3.zero;
  43. public Vector3 m_headWorldDirection = Vector3.zero;
  44. public Vector3 m_stylusPosition = Vector3.zero;
  45. public Vector3 m_stylusDirection = Vector3.zero;
  46. public Vector3 m_stylusCameraPosition = Vector3.zero;
  47. public Vector3 m_stylusCameraDirection = Vector3.zero;
  48. public Vector3 m_stylusWorldPosition = Vector3.zero;
  49. public Vector3 m_stylusWorldDirection = Vector3.zero;
  50. public bool m_isStylusButton0Pressed = false;
  51. public bool m_isStylusButton1Pressed = false;
  52. public bool m_isStylusButton2Pressed = false;
  53. #endregion
  54. #region UNITY_CALLBACKS
  55. public void Awake()
  56. {
  57. m_isStereoEnabled = EditorPrefs.GetBool("IsStereoEnabled", true);
  58. m_areEyesSwapped = EditorPrefs.GetBool("AreEyesSwapped", false);
  59. m_interPupillaryDistance = EditorPrefs.GetFloat("InterPupillaryDistance", 0.06f);
  60. m_stereoLevel = EditorPrefs.GetFloat("StereoLevel", 1.0f);
  61. m_worldScale = EditorPrefs.GetFloat("WorldScale", 1.0f);
  62. m_fieldOfViewScale = EditorPrefs.GetFloat("FieldOfViewScale", 1.0f);
  63. m_zeroParallaxOffset = EditorPrefs.GetFloat("ZeroParallaxOffset", 0.0f);
  64. m_nearClip = EditorPrefs.GetFloat("NearClip", 0.1f);
  65. m_farClip = EditorPrefs.GetFloat("FarClip", 100000.0f);
  66. m_isHeadTrackingEnabled = EditorPrefs.GetBool("IsHeadTrackingEnabled", true);
  67. m_headTrackingScale = EditorPrefs.GetFloat("HeadTrackingScale", 1.0f);
  68. m_isStylusTrackingEnabled = EditorPrefs.GetBool("IsStylusTrackingEnabled", true);
  69. m_isStylusVisualizationEnabled = EditorPrefs.GetBool("IsStylusVisualizationEnabled", true);
  70. m_isMouseEmulationEnabled = EditorPrefs.GetBool("IsMouseEmulationEnabled", false);
  71. m_mouseEmulationDistance = EditorPrefs.GetFloat("MouseEmulationDistance", 1.0f);
  72. m_isStylusLedEnabled = EditorPrefs.GetBool("IsStylusLedEnabled", false);
  73. m_stylusLedColor = (ZSCore.StylusLedColor)EditorPrefs.GetInt("StylusLedColor", (int)ZSCore.StylusLedColor.White);
  74. m_isStylusVibrationEnabled = EditorPrefs.GetBool("IsStylusVibrationEnabled", false);
  75. m_stylusVibrationOnPeriod = EditorPrefs.GetFloat("StylusVibrationOnPeriod", 0.0f);
  76. m_stylusVibrationOffPeriod = EditorPrefs.GetFloat("StylusVibrationOffPeriod", 0.0f);
  77. m_stylusVibrationRepeatCount = EditorPrefs.GetInt("StylusVibrationRepeatCount", 0);
  78. m_startStylusVibration = EditorPrefs.GetBool("StartStylusVibration", false);
  79. m_stopStylusVibration = EditorPrefs.GetBool("StopStylusVibration", false);
  80. }
  81. public void OnDestroy()
  82. {
  83. EditorPrefs.SetBool("IsStereoEnabled", m_isStereoEnabled);
  84. EditorPrefs.SetBool("AreEyesSwapped", m_areEyesSwapped);
  85. EditorPrefs.SetFloat("InterPupillaryDistance", m_interPupillaryDistance);
  86. EditorPrefs.SetFloat("StereoLevel", m_stereoLevel);
  87. EditorPrefs.SetFloat("WorldScale", m_worldScale);
  88. EditorPrefs.SetFloat("FieldOfViewScale", m_fieldOfViewScale);
  89. EditorPrefs.SetFloat("ZeroParallaxOffset", m_zeroParallaxOffset);
  90. EditorPrefs.SetFloat("NearClip", m_nearClip);
  91. EditorPrefs.SetFloat("FarClip", m_farClip);
  92. EditorPrefs.SetBool("IsHeadTrackingEnabled", m_isHeadTrackingEnabled);
  93. EditorPrefs.SetFloat("HeadTrackingScale", m_headTrackingScale);
  94. EditorPrefs.SetBool("IsStylusTrackingEnabled", m_isStylusTrackingEnabled);
  95. EditorPrefs.SetBool("IsStylusVisualizationEnabled", m_isStylusVisualizationEnabled);
  96. EditorPrefs.SetBool("IsMouseEmulationEnabled", m_isMouseEmulationEnabled);
  97. EditorPrefs.SetFloat("MouseEmulationDistance", m_mouseEmulationDistance);
  98. EditorPrefs.SetBool("IsStylusLedEnabled", m_isStylusLedEnabled);
  99. EditorPrefs.SetInt("StylusLedColor", (int)m_stylusLedColor);
  100. EditorPrefs.SetBool("IsStylusVibrationEnabled", m_isStylusVibrationEnabled);
  101. EditorPrefs.SetFloat("StylusVibrationOnPeriod", m_stylusVibrationOnPeriod);
  102. EditorPrefs.SetFloat("StylusVibrationOffPeriod", m_stylusVibrationOffPeriod);
  103. EditorPrefs.SetInt("StylusVibrationRepeatCount", m_stylusVibrationRepeatCount);
  104. EditorPrefs.SetBool("StartStylusVibration", m_startStylusVibration);
  105. EditorPrefs.SetBool("StopStylusVibration", m_stopStylusVibration);
  106. }
  107. void OnGUI()
  108. {
  109. m_scrollPosition = EditorGUILayout.BeginScrollView(m_scrollPosition, GUILayout.Width(position.width), GUILayout.Height(position.height));
  110. if (GUILayout.Button("Restore Defaults", GUILayout.Width(118), GUILayout.Height(20)))
  111. RestoreDefaults();
  112. GUILayout.Label("\nStereo Settings:", EditorStyles.boldLabel);
  113. m_isStereoEnabled = EditorGUILayout.Toggle("Enable Stereo", m_isStereoEnabled);
  114. m_areEyesSwapped = EditorGUILayout.Toggle("Swap Eyes", m_areEyesSwapped);
  115. m_interPupillaryDistance = EditorGUILayout.Slider("Inter Pupillary Distance", m_interPupillaryDistance, 0, 1);
  116. m_stereoLevel = EditorGUILayout.Slider("Stereo Level", m_stereoLevel, 0, 1);
  117. m_worldScale = EditorGUILayout.Slider("World Scale", m_worldScale, 0, 1000);
  118. m_fieldOfViewScale = EditorGUILayout.Slider("Field of View Scale", m_fieldOfViewScale, 0, 100);
  119. m_zeroParallaxOffset = EditorGUILayout.Slider("Zero Parallax Offset", m_zeroParallaxOffset, -10, 10);
  120. m_nearClip = EditorGUILayout.Slider("Near Clip", m_nearClip, 0, 1000);
  121. m_farClip = EditorGUILayout.Slider("Far Clip", m_farClip, 0, 100000);
  122. GUILayout.Label("\nHead Tracker Settings:", EditorStyles.boldLabel);
  123. m_isHeadTrackingEnabled = EditorGUILayout.Toggle("Enable Head Tracking", m_isHeadTrackingEnabled);
  124. m_headTrackingScale = EditorGUILayout.Slider("Head Tracking Scale", m_headTrackingScale, 0, 1000);
  125. GUILayout.Label("\nStylus Tracker Settings:", EditorStyles.boldLabel);
  126. m_isStylusTrackingEnabled = EditorGUILayout.Toggle("Enable Stylus Tracking", m_isStylusTrackingEnabled);
  127. m_isStylusVisualizationEnabled = EditorGUILayout.Toggle("Enable Stylus Visualization", m_isStylusVisualizationEnabled);
  128. GUILayout.Label("\nStylus LED Settings:", EditorStyles.boldLabel);
  129. m_isStylusLedEnabled = EditorGUILayout.Toggle("Enable Stylus LED", m_isStylusLedEnabled);
  130. m_stylusLedColor = (ZSCore.StylusLedColor)EditorGUILayout.EnumPopup("Stylus Led Color", m_stylusLedColor);
  131. GUILayout.Label("\nStylus Vibration Settings:", EditorStyles.boldLabel);
  132. m_isStylusVibrationEnabled = EditorGUILayout.Toggle("Enable Stylus Vibration", m_isStylusVibrationEnabled);
  133. m_stylusVibrationOnPeriod = EditorGUILayout.Slider("Vibration On Period", m_stylusVibrationOnPeriod, 0, 100);
  134. m_stylusVibrationOffPeriod = EditorGUILayout.Slider("Vibration Off Period", m_stylusVibrationOffPeriod, 0, 100);
  135. m_stylusVibrationRepeatCount = EditorGUILayout.IntSlider("Vibration Repeat Count", m_stylusVibrationRepeatCount, 0, 100);
  136. m_startStylusVibration = EditorGUILayout.Toggle("Start Vibration", m_startStylusVibration);
  137. m_stopStylusVibration = EditorGUILayout.Toggle("Stop Vibration", m_stopStylusVibration);
  138. GUILayout.Label("\nMouse Emulation:", EditorStyles.boldLabel);
  139. m_isMouseEmulationEnabled = EditorGUILayout.Toggle("Enable Mouse Emulation", m_isMouseEmulationEnabled);
  140. m_mouseEmulationDistance = EditorGUILayout.Slider("Emulation Distance", m_mouseEmulationDistance, 0, 5);
  141. GUILayout.Label("\nDisplay Information (read only):", EditorStyles.boldLabel);
  142. m_displayOffset = EditorGUILayout.Vector3Field("Display Offset", m_displayOffset);
  143. m_displayPosition = EditorGUILayout.Vector2Field("Display Position", m_displayPosition);
  144. m_displayAngle = EditorGUILayout.Vector2Field("Display Angle", m_displayAngle);
  145. m_displayResolution = EditorGUILayout.Vector2Field("Display Resolution", m_displayResolution);
  146. m_displaySize = EditorGUILayout.Vector2Field("Display Size", m_displaySize);
  147. GUILayout.Label("\nHead Tracker Information (read only):", EditorStyles.boldLabel);
  148. m_headPosition = EditorGUILayout.Vector3Field("Position (tracker space)", m_headPosition);
  149. m_headDirection = EditorGUILayout.Vector3Field("Direction (tracker space)", m_headDirection);
  150. m_headCameraPosition = EditorGUILayout.Vector3Field("Position (camera space)", m_headCameraPosition);
  151. m_headCameraDirection = EditorGUILayout.Vector3Field("Direction (camera space)", m_headCameraDirection);
  152. m_headWorldPosition = EditorGUILayout.Vector3Field("Position (world space)", m_headWorldPosition);
  153. m_headWorldDirection = EditorGUILayout.Vector3Field("Direction (world space)", m_headWorldDirection);
  154. GUILayout.Label("\nStylus Tracker Information (read only):", EditorStyles.boldLabel);
  155. m_stylusPosition = EditorGUILayout.Vector3Field("Position (tracker space)", m_stylusPosition);
  156. m_stylusDirection = EditorGUILayout.Vector3Field("Direction (tracker space)", m_stylusDirection);
  157. m_stylusCameraPosition = EditorGUILayout.Vector3Field("Position (camera space)", m_stylusCameraPosition);
  158. m_stylusCameraDirection = EditorGUILayout.Vector3Field("Direction (camera space)", m_stylusCameraDirection);
  159. m_stylusWorldPosition = EditorGUILayout.Vector3Field("Position (world space)", m_stylusWorldPosition);
  160. m_stylusWorldDirection = EditorGUILayout.Vector3Field("Direction (world space)", m_stylusWorldDirection);
  161. m_isStylusButton0Pressed = EditorGUILayout.Toggle("Button 0 Pressed", m_isStylusButton0Pressed);
  162. m_isStylusButton1Pressed = EditorGUILayout.Toggle("Button 1 Pressed", m_isStylusButton1Pressed);
  163. m_isStylusButton2Pressed = EditorGUILayout.Toggle("Button 2 Pressed", m_isStylusButton2Pressed);
  164. EditorGUILayout.EndScrollView();
  165. }
  166. void OnInspectorUpdate()
  167. {
  168. Repaint();
  169. }
  170. #endregion
  171. #region PRIVATE_HELPERS
  172. private void RestoreDefaults()
  173. {
  174. // Stereo Members
  175. m_isStereoEnabled = true;
  176. m_areEyesSwapped = false;
  177. m_interPupillaryDistance = 0.06f;
  178. m_stereoLevel = 1.0f;
  179. m_worldScale = 1.0f;
  180. m_fieldOfViewScale = 1.0f;
  181. m_zeroParallaxOffset = 0.0f;
  182. m_nearClip = 0.1f;
  183. m_farClip = 100000.0f;
  184. // Tracker Members
  185. m_isHeadTrackingEnabled = true;
  186. m_headTrackingScale = 1.0f;
  187. m_isStylusTrackingEnabled = true;
  188. m_isStylusVisualizationEnabled = true;
  189. m_isMouseEmulationEnabled = false;
  190. m_mouseEmulationDistance = 1.0f;
  191. m_isStylusLedEnabled = false;
  192. m_stylusLedColor = ZSCore.StylusLedColor.White;
  193. m_isStylusVibrationEnabled = false;
  194. m_stylusVibrationOnPeriod = 0.0f;
  195. m_stylusVibrationOffPeriod = 0.0f;
  196. m_stylusVibrationRepeatCount = 0;
  197. m_startStylusVibration = false;
  198. m_stopStylusVibration = false;
  199. }
  200. #endregion
  201. #region PRIVATE_MEMBERS
  202. private Vector2 m_scrollPosition = Vector2.zero;
  203. #endregion
  204. }