LinearMotionEditor.cs 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using UnityEngine;
  2. using UnityEditor;
  3. namespace Dustyroom {
  4. [CanEditMultipleObjects]
  5. [CustomEditor(typeof(LinearMotion))]
  6. public class LinearMotionEditor : UnityEditor.Editor {
  7. private SerializedProperty _translationMode;
  8. private SerializedProperty _translationVector;
  9. private SerializedProperty _translationSpeed;
  10. private SerializedProperty _translationAcceleration;
  11. private SerializedProperty _rotationMode;
  12. private SerializedProperty _rotationAxis;
  13. private SerializedProperty _rotationSpeed;
  14. private SerializedProperty _rotationAcceleration;
  15. private SerializedProperty _useLocalCoordinate;
  16. private static readonly GUIContent TextRotation = new GUIContent("Rotation");
  17. private static readonly GUIContent TextAcceleration = new GUIContent("Acceleration");
  18. private static readonly GUIContent TextTranslation = new GUIContent("Translation");
  19. private static readonly GUIContent TextSpeed = new GUIContent("Speed");
  20. private static readonly GUIContent TextVector = new GUIContent("Vector");
  21. private static readonly GUIContent TextLocalCoordinate = new GUIContent("Local Coordinate");
  22. void OnEnable() {
  23. _translationMode = serializedObject.FindProperty("translationMode");
  24. _translationVector = serializedObject.FindProperty("translationVector");
  25. _translationSpeed = serializedObject.FindProperty("translationSpeed");
  26. _translationAcceleration = serializedObject.FindProperty("translationAcceleration");
  27. _rotationMode = serializedObject.FindProperty("rotationMode");
  28. _rotationAxis = serializedObject.FindProperty("rotationAxis");
  29. _rotationSpeed = serializedObject.FindProperty("rotationSpeed");
  30. _rotationAcceleration = serializedObject.FindProperty("rotationAcceleration");
  31. _useLocalCoordinate = serializedObject.FindProperty("useLocalCoordinate");
  32. }
  33. public override void OnInspectorGUI() {
  34. serializedObject.Update();
  35. EditorGUILayout.PropertyField(_translationMode, TextTranslation);
  36. EditorGUI.indentLevel++;
  37. if (_translationMode.hasMultipleDifferentValues ||
  38. _translationMode.enumValueIndex == (int) LinearMotion.TranslationMode.Vector) {
  39. EditorGUILayout.PropertyField(_translationVector, TextVector);
  40. }
  41. if (_translationMode.hasMultipleDifferentValues ||
  42. _translationMode.enumValueIndex != 0) {
  43. EditorGUILayout.PropertyField(_translationSpeed, TextSpeed);
  44. EditorGUILayout.PropertyField(_translationAcceleration, TextAcceleration);
  45. }
  46. EditorGUI.indentLevel--;
  47. EditorGUILayout.PropertyField(_rotationMode, TextRotation);
  48. EditorGUI.indentLevel++;
  49. if (_rotationMode.hasMultipleDifferentValues ||
  50. _rotationMode.enumValueIndex == (int) LinearMotion.RotationMode.Vector) {
  51. EditorGUILayout.PropertyField(_rotationAxis, TextVector);
  52. }
  53. if (_rotationMode.hasMultipleDifferentValues ||
  54. _rotationMode.enumValueIndex != 0) {
  55. EditorGUILayout.PropertyField(_rotationSpeed, TextSpeed);
  56. EditorGUILayout.PropertyField(_rotationAcceleration, TextAcceleration);
  57. }
  58. EditorGUI.indentLevel--;
  59. EditorGUILayout.PropertyField(_useLocalCoordinate, TextLocalCoordinate);
  60. serializedObject.ApplyModifiedProperties();
  61. }
  62. }
  63. }