| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 | 
							- using net.shutosg.UnityEditor;
 
- using UnityEditor;
 
- using UnityEngine;
 
- using UnityEngine.UIElements;
 
- namespace net.shutosg.UniEaseCopy
 
- {
 
-     public class UniEaseCopyWindow : EditorWindow
 
-     {
 
-         private Label logTypeLabel;
 
-         private Label logText;
 
-         private Label keyCountText;
 
-         private ListView keyframeList;
 
-         private Button pasteEaseButton;
 
-         private Button pasteValueButton;
 
-         [MenuItem("Window/Animation/UniEaseCopy")]
 
-         public static void ShowWindow()
 
-         {
 
-             var openedWindows = (EditorWindow[])Resources.FindObjectsOfTypeAll(typeof(UniEaseCopyWindow));
 
-             var window = openedWindows.Length == 0 ? CreateInstance<UniEaseCopyWindow>() : openedWindows[0];
 
-             window.titleContent = new GUIContent("UniEaseCopy");
 
-             window.ShowUtility();
 
-         }
 
-         private static T LoadAsset<T>(string assetName) where T : Object
 
-         {
 
-             return AssetDatabase.LoadAssetAtPath<T>(DirectoryAnchor.Find("EditorResources") + assetName);
 
-         }
 
-         private static VisualTreeAsset LoadTreeAsset(string assetName) => LoadAsset<VisualTreeAsset>(assetName);
 
-         private static StyleSheet LoadStyleAsset(string assetName) => LoadAsset<StyleSheet>(assetName);
 
-         public void CreateGUI()
 
-         {
 
- #if UNITY_2020_1_OR_NEWER
 
-             var index = LoadTreeAsset("Index.uxml").CloneTree();
 
- #else
 
-             var index = LoadTreeAsset("IndexWithoutStyle.uxml").CloneTree();
 
-             index.styleSheets.Add(LoadStyleAsset("Index.uss"));
 
- #endif
 
-             rootVisualElement.Add(index);
 
-             logText = index.Q<Label>("LogMessageText");
 
-             logTypeLabel = index.Q<Label>("LogTypeText");
 
-             keyCountText = index.Q<Label>("CopiedKeyframeLabel");
 
-             keyframeList = index.Q<ListView>("CopiedKeyframeList");
 
-             var copyButton = index.Q<Button>("CopyButton");
 
-             copyButton.clicked += () => UniEaseCopy.CopyKeyframes(onCopied: UpdateCopiedKeyInfo, onLogged: OnCopyLogged);
 
-             pasteEaseButton = index.Q<Button>("PasteEaseButton");
 
-             pasteEaseButton.clicked += () => UniEaseCopy.PasteEase(UpdateLog);
 
-             pasteValueButton = index.Q<Button>("PasteValueButton");
 
-             pasteValueButton.clicked += () => UniEaseCopy.PasteValue(UpdateLog);
 
-             var node = LoadTreeAsset("KeyframeNode.uxml");
 
- #if UNITY_2020_1_OR_NEWER
 
-             keyframeList.makeItem = () => node.CloneTree();
 
-             keyframeList.bindItem = (element, i) =>
 
-             {
 
-                 element.Q<Label>().text = $"[{i}] {((Keyframe)keyframeList.itemsSource[i]).Dump()}";
 
-             };
 
- #else
 
-             keyframeList.style.display = new StyleEnum<DisplayStyle>(DisplayStyle.None);
 
- #endif
 
-             UpdateCopiedKeyInfo(null);
 
-             UpdateLog(new UniEaseCopyLog() { Message = "initialized.", Type = LogType.Log });
 
-         }
 
-         private void OnCopyLogged(UniEaseCopyLog log)
 
-         {
 
-             UpdateLog(log);
 
-             pasteEaseButton.SetEnabled(log.Type != LogType.Error);
 
-             pasteValueButton.SetEnabled(log.Type != LogType.Error);
 
-         }
 
-         private void UpdateCopiedKeyInfo(Keyframe[] keyframes)
 
-         {
 
-             keyCountText.text = $"Copied Keyframes: {keyframes?.Length ?? 0}";
 
-             keyframeList.itemsSource = keyframes;
 
- #if UNITY_2021_2_OR_NEWER
 
-             keyframeList.Rebuild();
 
- #else
 
-             keyframeList.Refresh();
 
- #endif
 
-         }
 
-         private void UpdateLog(UniEaseCopyLog log)
 
-         {
 
- #if UNITY_2021_2_OR_NEWER
 
-             logText.text = $"<b>[{log.Type}]</b> {log.Message}";
 
- #else
 
-             logText.text = $"[{log.Type}] {log.Message}";
 
- #endif
 
-             SetLogClass(logTypeLabel, log.Type);
 
-         }
 
-         private static void RemoveAllLogClass(VisualElement element)
 
-         {
 
-             element.RemoveFromClassList($"LogType{LogType.Log}");
 
-             element.RemoveFromClassList($"LogType{LogType.Success}");
 
-             element.RemoveFromClassList($"LogType{LogType.Warning}");
 
-             element.RemoveFromClassList($"LogType{LogType.Error}");
 
-         }
 
-         private static void SetLogClass(VisualElement element, LogType logType)
 
-         {
 
-             RemoveAllLogClass(element);
 
-             element.AddToClassList($"LogType{logType.ToString()}");
 
-         }
 
-     }
 
- }
 
 
  |