| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | using UnityEngine;using UnityEditor;namespace Dustyroom {    [CanEditMultipleObjects]    [CustomEditor(typeof(LinearMotion))]    public class LinearMotionEditor : UnityEditor.Editor {        private SerializedProperty _translationMode;        private SerializedProperty _translationVector;        private SerializedProperty _translationSpeed;        private SerializedProperty _translationAcceleration;        private SerializedProperty _rotationMode;        private SerializedProperty _rotationAxis;        private SerializedProperty _rotationSpeed;        private SerializedProperty _rotationAcceleration;        private SerializedProperty _useLocalCoordinate;        private static readonly GUIContent TextRotation = new GUIContent("Rotation");        private static readonly GUIContent TextAcceleration = new GUIContent("Acceleration");        private static readonly GUIContent TextTranslation = new GUIContent("Translation");        private static readonly GUIContent TextSpeed = new GUIContent("Speed");        private static readonly GUIContent TextVector = new GUIContent("Vector");        private static readonly GUIContent TextLocalCoordinate = new GUIContent("Local Coordinate");        void OnEnable() {            _translationMode = serializedObject.FindProperty("translationMode");            _translationVector = serializedObject.FindProperty("translationVector");            _translationSpeed = serializedObject.FindProperty("translationSpeed");            _translationAcceleration = serializedObject.FindProperty("translationAcceleration");            _rotationMode = serializedObject.FindProperty("rotationMode");            _rotationAxis = serializedObject.FindProperty("rotationAxis");            _rotationSpeed = serializedObject.FindProperty("rotationSpeed");            _rotationAcceleration = serializedObject.FindProperty("rotationAcceleration");            _useLocalCoordinate = serializedObject.FindProperty("useLocalCoordinate");        }        public override void OnInspectorGUI() {            serializedObject.Update();            EditorGUILayout.PropertyField(_translationMode, TextTranslation);            EditorGUI.indentLevel++;            if (_translationMode.hasMultipleDifferentValues ||                _translationMode.enumValueIndex == (int) LinearMotion.TranslationMode.Vector) {                EditorGUILayout.PropertyField(_translationVector, TextVector);            }            if (_translationMode.hasMultipleDifferentValues ||                _translationMode.enumValueIndex != 0) {                EditorGUILayout.PropertyField(_translationSpeed, TextSpeed);                EditorGUILayout.PropertyField(_translationAcceleration, TextAcceleration);            }                        EditorGUI.indentLevel--;            EditorGUILayout.PropertyField(_rotationMode, TextRotation);            EditorGUI.indentLevel++;            if (_rotationMode.hasMultipleDifferentValues ||                _rotationMode.enumValueIndex == (int) LinearMotion.RotationMode.Vector) {                EditorGUILayout.PropertyField(_rotationAxis, TextVector);            }            if (_rotationMode.hasMultipleDifferentValues ||                _rotationMode.enumValueIndex != 0) {                EditorGUILayout.PropertyField(_rotationSpeed, TextSpeed);                EditorGUILayout.PropertyField(_rotationAcceleration, TextAcceleration);            }            EditorGUI.indentLevel--;            EditorGUILayout.PropertyField(_useLocalCoordinate, TextLocalCoordinate);            serializedObject.ApplyModifiedProperties();        }    }}
 |