using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; namespace ActionTool { [CustomPropertyDrawer(typeof(ToggleTimeDictionary))] public class ToggleTimeDictionaryDrawer : SerializableDictionaryPropertyDrawer { } public class AnimationToggleEditor : EditorWindow { SerializedObject obj; private void OnEnable() { titleContent = new GUIContent("Toggles"); maxSize = new Vector2(300, 2000); minSize = new Vector2(300, 200); } private void OnDisable() { } private void Update() { } private void OnGUI() { AnimationData animData = ActionManager.animationData; if (animData == null) { this.Close(); return; } if (obj == null || obj.targetObject != animData) { obj = new SerializedObject(animData); } var toggles = obj.FindProperty("toggles"); EditorGUILayout.PropertyField(toggles, true); if(obj.ApplyModifiedProperties()) { if (animData.toggles != null && animData.toggles.Count > 0) { List keys = new List(animData.toggles.Keys); for(int i = 0; i < keys.Count; ++i) { Vector2 minMax = animData.toggles[keys[i]].fromTo; minMax.x = Mathf.Clamp(minMax.x, 0, 1); minMax.y = Mathf.Clamp(minMax.y, 0, 1); minMax.x = Mathf.Clamp(minMax.x, 0, minMax.y); minMax.y = Mathf.Clamp(minMax.y, minMax.x, 1); animData.toggles[keys[i]] = new FromTo(minMax); } } } } } }