// delete this file when we nuke the moon // using System.Collections.Generic; // using ABI.CCK.Components; // using ABI.CCK.Scripts.Editor; // using UnityEditor; // using UnityEditorInternal; // using UnityEngine; // using AnimatorController = UnityEditor.Animations.AnimatorController; // using AnimatorControllerParameterType = UnityEngine.AnimatorControllerParameterType; // // namespace ABI.CCK.Scripts.Editor // { // [CustomEditor(typeof(ABI.CCK.Components.CVRAnimatorDriver))] // public class CCK_CVRAnimatorDriverEditor : UnityEditor.Editor // { // private CVRAnimatorDriver _driver; // // private ReorderableList reorderableList; // // private List animatorParamNameList = new List(); // private List animatorParamTypeList = new List(); // // private Dictionary typeList = new Dictionary() // { // {AnimatorControllerParameterType.Float, 0}, // {AnimatorControllerParameterType.Int, 1}, // {AnimatorControllerParameterType.Bool, 2}, // {AnimatorControllerParameterType.Trigger, 3} // }; // // private void InitializeList() // { // reorderableList = new ReorderableList(_driver.animators, typeof(Animator), // false, true, true, true); // reorderableList.drawHeaderCallback = OnDrawHeader; // reorderableList.drawElementCallback = OnDrawElement; // reorderableList.elementHeightCallback = OnHeightElement; // reorderableList.onAddCallback = OnAdd; // reorderableList.onChangedCallback = OnChanged; // reorderableList.onRemoveCallback = OnRemove; // } // // private void OnRemove(ReorderableList list) // { // _driver.animators.RemoveAt(list.index); // _driver.animatorParameters.RemoveAt(list.index); // _driver.animatorParameterType.RemoveAt(list.index); // Repaint(); // } // // private void OnChanged(ReorderableList list) // { // //EditorUtility.SetDirty(target); // } // // private void OnAdd(ReorderableList list) // { // if (_driver.animators.Count >= 16) return; // _driver.animators.Add(null); // _driver.animatorParameters.Add(null); // _driver.animatorParameterType.Add(0); // Repaint(); // } // // private float OnHeightElement(int index) // { // return EditorGUIUtility.singleLineHeight * 3 * 1.25f; // } // // private void OnDrawElement(Rect rect, int index, bool isactive, bool isfocused) // { // if (index > _driver.animators.Count) return; // // rect.y += 2; // rect.x += 12; // rect.width -= 12; // Rect _rect = new Rect(rect.x, rect.y, 100, EditorGUIUtility.singleLineHeight); // // EditorGUI.LabelField(_rect, "Animator"); // // _rect.x += 100; // _rect.width = rect.width - 100; // // EditorGUI.BeginChangeCheck(); // // var animator = (Animator) EditorGUI.ObjectField(_rect, _driver.animators[index], typeof(Animator), true); // // if (EditorGUI.EndChangeCheck()) // { // Undo.RecordObject(target, "Animator Driver Animator changed"); // EditorUtility.SetDirty(_driver); // _driver.animators[index] = animator; // } // // rect.y += EditorGUIUtility.singleLineHeight * 1.25f; // _rect = new Rect(rect.x, rect.y, 100, EditorGUIUtility.singleLineHeight); // // EditorGUI.LabelField(_rect, "Parameter"); // // _rect.x += 100; // _rect.width = rect.width - 100; // // animatorParamNameList.Clear(); // animatorParamTypeList.Clear(); // // animatorParamNameList.Add("-none-"); // animatorParamTypeList.Add(AnimatorControllerParameterType.Bool); // // var oldIndex = 0; // var i = 1; // // if (_driver.animators[index] != null && _driver.animators[index].runtimeAnimatorController != null) // { // var runtimeController = _driver.animators[index].runtimeAnimatorController; // UnityEngine.AnimatorControllerParameter[] parameters = null; // // if (runtimeController is AnimatorController animatorController) // { // parameters = animatorController.parameters; // } // else if (runtimeController is AnimatorOverrideController overrideController && // overrideController.runtimeAnimatorController is AnimatorController baseController) // { // parameters = baseController.parameters; // } // // if (parameters != null) // { // foreach (var parameter in parameters) // { // animatorParamNameList.Add(parameter.name); // animatorParamTypeList.Add(parameter.type); // // if (_driver.animatorParameters[index] == parameter.name) // { // oldIndex = i; // } // // i++; // } // } // } // // EditorGUI.BeginChangeCheck(); // // var parameterIndex = EditorGUI.Popup(_rect, oldIndex, animatorParamNameList.ToArray()); // // if (EditorGUI.EndChangeCheck()) // { // Undo.RecordObject(target, "Animator Driver Parameter changed"); // EditorUtility.SetDirty(_driver); // _driver.animatorParameters[index] = animatorParamNameList[parameterIndex]; // _driver.animatorParameterType[index] = typeList[animatorParamTypeList[parameterIndex]]; // } // // rect.y += EditorGUIUtility.singleLineHeight * 1.25f; // _rect = new Rect(rect.x, rect.y, 100, EditorGUIUtility.singleLineHeight); // // EditorGUI.LabelField(_rect, "Value"); // // _rect.x += 100; // _rect.width = rect.width - 100; // // EditorGUI.BeginChangeCheck(); // // var value = EditorGUI.FloatField(_rect, GetAnimatorParameterValue(index)); // // if (EditorGUI.EndChangeCheck()) // { // Undo.RecordObject(target, "Animator Driver Value changed"); // EditorUtility.SetDirty(_driver); // SetAnimatorParameterValue(index, value); // } // } // // private void OnDrawHeader(Rect rect) // { // Rect _rect = new Rect(rect.x, rect.y, rect.width, EditorGUIUtility.singleLineHeight); // GUI.Label(_rect, "Animator Parameters"); // EditorGUIExtensions.UtilityMenu(rect, reorderableList); // } // // public override void OnInspectorGUI() // { // if (_driver == null) _driver = (CVRAnimatorDriver) target; // // EditorGUILayout.Space(); // // if (reorderableList == null) InitializeList(); // reorderableList.DoLayoutList(); // } // // public float GetAnimatorParameterValue(int index) // { // switch (index) // { // case 0: // return _driver.animatorParameter01; // case 1: // return _driver.animatorParameter02; // case 2: // return _driver.animatorParameter03; // case 3: // return _driver.animatorParameter04; // case 4: // return _driver.animatorParameter05; // case 5: // return _driver.animatorParameter06; // case 6: // return _driver.animatorParameter07; // case 7: // return _driver.animatorParameter08; // case 8: // return _driver.animatorParameter09; // case 9: // return _driver.animatorParameter10; // case 10: // return _driver.animatorParameter11; // case 11: // return _driver.animatorParameter12; // case 12: // return _driver.animatorParameter13; // case 13: // return _driver.animatorParameter14; // case 14: // return _driver.animatorParameter15; // default: // return _driver.animatorParameter16; // } // } // // public void SetAnimatorParameterValue(int index, float value) // { // switch (index) // { // case 0: // _driver.animatorParameter01 = value; // break; // case 1: // _driver.animatorParameter02 = value; // break; // case 2: // _driver.animatorParameter03 = value; // break; // case 3: // _driver.animatorParameter04 = value; // break; // case 4: // _driver.animatorParameter05 = value; // break; // case 5: // _driver.animatorParameter06 = value; // break; // case 6: // _driver.animatorParameter07 = value; // break; // case 7: // _driver.animatorParameter08 = value; // break; // case 8: // _driver.animatorParameter09 = value; // break; // case 9: // _driver.animatorParameter10 = value; // break; // case 10: // _driver.animatorParameter11 = value; // break; // case 11: // _driver.animatorParameter12 = value; // break; // case 12: // _driver.animatorParameter13 = value; // break; // case 13: // _driver.animatorParameter14 = value; // break; // case 14: // _driver.animatorParameter15 = value; // break; // default: // _driver.animatorParameter16 = value; // break; // } // } // } // }