diff --git a/Assets/TEngine/Thirdly/Animation/Editor/AnimationHierarchyEditorTool.cs b/Assets/TEngine/Thirdly/Animation/Editor/AnimationHierarchyEditorTool.cs deleted file mode 100644 index 72f764d4..00000000 --- a/Assets/TEngine/Thirdly/Animation/Editor/AnimationHierarchyEditorTool.cs +++ /dev/null @@ -1,1075 +0,0 @@ -/// INFORMATION -/// -/// Project: Chloroplast Games Framework -/// Game: Chloroplast Games Framework -/// Date: 02/05/2017 -/// Author: Chloroplast Games -/// Web: http://www.chloroplastgames.com -/// Programmers: David Cuenca Diez -/// Description: Tool that allows change the path of hierarchy from a animation from an animation clip. -/// - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text.RegularExpressions; -using UnityEditor; -using UnityEngine; -using System.IO; -using System.Reflection; -using UnityEngine.Profiling; - -// Local Namespace -namespace CGF.Editor.Tools -{ - public class PathData - { - public string ClipName { get; } - public string CurrentPath { get; set; } - public string LastPath { get; set; } - public AnimationClip Clip { get; set; } - - public EditorCurveBinding EditorCurve; - - public PathData(string clipName, string currentPath, string lastPath, EditorCurveBinding editorCurve, AnimationClip clip) - { - ClipName = clipName; - CurrentPath = currentPath; - LastPath = lastPath; - EditorCurve = editorCurve; - Clip = clip; - } - } - - - /// \english - /// - /// Tool that allows change the path of hierarchy from a animation from an animation clip. - /// - /// \endenglish - /// \spanish - /// - /// Herramienta que permite canviar la ruta de la jerarqu韆 de las animaciones de un clip de animaci髇. - /// - /// \endspanish - public class CGFAnimationHierarchyEditorTool : EditorWindow - { - #region Public Variables - - #endregion - - - #region Private Variables - - private enum TypeGameObject - { - None, - - GameObject, - - /*AnimationClip, - - RuntimeAnimatorController*/ - }; - - private TypeGameObject _currentSelectionGameObject; - - private int index; - - private List _gameObjects; - - private Animator _animatorObject; - - private Animator _animatorObject2; - - private List _pathDataList; - - private RuntimeAnimatorController _myruntime; - - private List _currentAnimationClips; - - private List _myanimationClips; - - private List _clipNames = new List(); - - private string[] _modes = new string[] { "Path", "GameObject" }; - - private int _selectedMode = 0; - - private string _replacePath = ""; - - private GameObject _replaceGameObject; - - private string _replacementPath = ""; - - private GameObject _replacementGameObject; - - private Vector2 scrollPosContent; - - #endregion - - - #region Main Methods - - [MenuItem("Tools/Animation Hierarchy Editor Tool")] - private static void ShowWindow() - { - EditorWindow window = EditorWindow.GetWindow(typeof(CGFAnimationHierarchyEditorTool), false, "Animation Hierarchy Editor Tool", true); - - window.minSize = new Vector2(1024, 250); - } - - public CGFAnimationHierarchyEditorTool() - { - _currentSelectionGameObject = new TypeGameObject(); - - _currentSelectionGameObject = TypeGameObject.None; - - _myanimationClips = new List(); - - _gameObjects = new List(); - } - - private void OnEnable() - { - ResetSelection(); - } - - private void OnSelectionChange() - { - ResetSelection(); - - this.Repaint(); - } - - private void ResetSelection() - { - _myanimationClips.Clear(); - - _clipNames.Clear(); - - _animatorObject = null; - - _myruntime = null; - - _animatorObject2 = null; - - index = 0; - - if (Selection.activeGameObject is GameObject) - { - _currentSelectionGameObject = TypeGameObject.GameObject; - } - else - { - _currentSelectionGameObject = TypeGameObject.None; - } - - DrawSeletedAnimator(); - } - - private void DrawSeletedAnimator() - { - if (_currentSelectionGameObject != TypeGameObject.GameObject) - { - return; - } - - _animatorObject2 = Selection.activeGameObject.GetComponent(); - - if (_animatorObject2 == null) - { - _currentSelectionGameObject = TypeGameObject.None; - return; - } - - _animatorObject = _animatorObject2; - - if (_animatorObject2.runtimeAnimatorController == null) - { - _currentSelectionGameObject = TypeGameObject.None; - return; - } - - _myruntime = _animatorObject2.runtimeAnimatorController; - - if (_myruntime.animationClips.Length == 0) - { - _currentSelectionGameObject = TypeGameObject.None; - return; - } - - foreach (AnimationClip i in _myruntime.animationClips) - { - _myanimationClips.Add(i); - } - - _clipNames.Add("All Clips"); - - foreach (AnimationClip e in _myanimationClips) - { - _clipNames.Add(e.name); - } - - if (_myanimationClips.Count > 0) - { - _currentAnimationClips = _myanimationClips; - } - else - { - _currentAnimationClips = null; - } - - FillModel(); - } - - private void DrawGui() - { - bool animations = true; - - EditorGUILayout.Space(); - - EditorGUILayout.Space(); - - EditorGUILayout.BeginHorizontal(); - - GUILayout.Label("Selected Animator", GUILayout.Width(170)); - - GUI.enabled = false; - - _animatorObject = ((Animator)EditorGUILayout.ObjectField(_animatorObject, typeof(Animator), true, GUILayout.Width(300))); - - GUILayout.FlexibleSpace(); - - GUI.enabled = _currentSelectionGameObject == TypeGameObject.GameObject; - - GUILayout.Label("Bulk Replace Mode"); - - _selectedMode = EditorGUILayout.Popup(_selectedMode, _modes); - - EditorGUILayout.EndHorizontal(); - - EditorGUILayout.BeginHorizontal(); - - GUI.enabled = false; - - GUILayout.Label("Selected Animator Controller", GUILayout.Width(170)); - - _myruntime = ((RuntimeAnimatorController)EditorGUILayout.ObjectField(_myruntime, typeof(RuntimeAnimatorController), true, GUILayout.Width(300))); - - GUILayout.FlexibleSpace(); - - GUI.enabled = _currentSelectionGameObject == TypeGameObject.GameObject; - - switch (_selectedMode) - { - case 0: - - GUILayout.Label("Path"); - - _replacePath = EditorGUILayout.TextField(_replacePath); - - break; - - case 1: - - GUILayout.Label("GameObject"); - - _replaceGameObject = (GameObject)EditorGUILayout.ObjectField(_replaceGameObject, typeof(GameObject), true); - - break; - } - - EditorGUILayout.EndHorizontal(); - - EditorGUILayout.BeginHorizontal(); - - EditorGUI.BeginChangeCheck(); - - GUILayout.Label("Selected Animation Clip", GUILayout.Width(170)); - - switch (_currentSelectionGameObject) - { - case TypeGameObject.GameObject: - - GUI.enabled = true; - - index = EditorGUILayout.Popup(index, _clipNames.ToArray(), GUILayout.Width(300)); - - if (index == 0) - { - _currentAnimationClips = _myanimationClips; - } - else - { - _currentAnimationClips = new List() { _myanimationClips[index - 1] }; - } - - break; - case TypeGameObject.None: - - GUI.enabled = false; - - EditorGUILayout.Popup(index, new string[] { "" }, GUILayout.Width(300)); - - animations = false; - - break; - } - - if (EditorGUI.EndChangeCheck()) - { - FillModel(); - } - - GUI.enabled = _currentSelectionGameObject == TypeGameObject.GameObject; - - GUILayout.FlexibleSpace(); - - GUILayout.Label("Replacement"); - - switch (_selectedMode) - { - case 0: - - _replacementPath = EditorGUILayout.TextField(_replacementPath); - - break; - - case 1: - - _replacementGameObject = (GameObject)EditorGUILayout.ObjectField(_replacementGameObject, typeof(GameObject), true); - - break; - } - - EditorGUILayout.EndHorizontal(); - - GUILayout.BeginHorizontal(); - - GUILayout.FlexibleSpace(); - - if (GUILayout.Button("Replace", GUILayout.Width(205))) - { - Replace(); - } - - _gameObjects.Clear(); - - EditorGUILayout.EndHorizontal(); - - EditorGUILayout.Space(); - - EditorGUILayout.Space(); - - GUILayout.BeginHorizontal("Toolbar"); - - GUILayout.Label("Animation Clip", GUILayout.Width(188)); - - GUILayout.Label("Property"); - - GUILayout.Label("Path"); - - GUILayout.Label("Object", GUILayout.Width(150)); - - if (GUILayout.Button("Apply All", EditorStyles.toolbarButton, GUILayout.Width(70))) - { - foreach (var pathData in _pathDataList) - { - UpdatePath(pathData); - } - - EditorGUI.FocusTextInControl(null); - } - - if (GUILayout.Button("Revert All", EditorStyles.toolbarButton, GUILayout.Width(70))) - { - foreach (var pathData in _pathDataList) - { - Revert(pathData); - } - - EditorGUI.FocusTextInControl(null); - } - - GUI.enabled = true; - - GUILayout.EndHorizontal(); - - EditorGUILayout.Space(); - - if (_currentSelectionGameObject != TypeGameObject.None) - { - if (_pathDataList != null) - { - scrollPosContent = EditorGUILayout.BeginScrollView(scrollPosContent); - - foreach (var pathData in _pathDataList) - { - GUICreatePathItem(pathData); - } - - EditorGUILayout.EndScrollView(); - } - } - - if (!animations) - { - EditorGUILayout.BeginHorizontal(); - - GUI.enabled = false; - - EditorGUILayout.LabelField(new GUIContent(EditorGUIUtility.ObjectContent(null, typeof(Animator)).image), GUILayout.Width(16)); - - EditorGUILayout.LabelField("Property"); - - EditorGUILayout.TextField("SomeNewObject"); - - EditorGUILayout.ObjectField(null, typeof(GameObject), true); - - GUILayout.Button("Apply", GUILayout.Width(60)); - - GUILayout.Button("Revert", GUILayout.Width(60)); - - GUILayout.EndHorizontal(); - - EditorGUILayout.Space(); - - EditorGUILayout.BeginHorizontal(); - - GUI.enabled = true; - - GUILayout.FlexibleSpace(); - - EditorGUILayout.HelpBox("Please select a GameObject or Prefab with an Animator, Animation Clip or an Animator Controller.", MessageType.Info); - - GUILayout.FlexibleSpace(); - - GUILayout.EndHorizontal(); - } - } - - private void Revert(PathData pathData) - { - pathData.CurrentPath = pathData.LastPath; - - UpdatePath(pathData); - } - - private void Replace() - { - switch (_selectedMode) - { - case 0: - - if (string.IsNullOrEmpty(_replacePath)) - { - return; - } - - foreach (var pathData in _pathDataList) - { - pathData.CurrentPath = pathData.CurrentPath.Replace(_replacePath, _replacementPath); - } - - break; - - case 1: - - if (_replaceGameObject == null || _replacementGameObject == null) - { - return; - } - - foreach (var pathData in _pathDataList) - { - if (pathData.CurrentPath.Equals(ChildPath(_replaceGameObject))) - { - pathData.CurrentPath = ChildPath(_replacementGameObject); - } - } - - break; - } - } - - private void OnGUI() - { - DrawGui(); - } - - private void GUICreatePathItem(PathData pathData) - { - GameObject newObj; - - GameObject obj; - - obj = FindObjectInRoot(pathData.CurrentPath); - - EditorGUILayout.BeginHorizontal(); - - GUIStyle propertyNameStyle = new GUIStyle(EditorStyles.label); - propertyNameStyle.richText = true; - - GUIStyle pathNameStyle = new GUIStyle(EditorStyles.textField); - - if (obj == null || obj.GetComponent(pathData.EditorCurve.type) == null) - { - propertyNameStyle.normal.textColor = Color.yellow; - - pathNameStyle.normal.textColor = Color.yellow; - } - - EditorGUILayout.LabelField(pathData.ClipName, GUILayout.Width(280)); - - GUILayout.Space(-90); - - var lastPath = pathData.CurrentPath.Split('/').Last(); - var gameObjectName = string.IsNullOrEmpty(lastPath) ? obj?.name : lastPath; - EditorGUILayout.LabelField(new GUIContent(EditorGUIUtility.ObjectContent(null, pathData.EditorCurve.type).image), GUILayout.Width(16)); - EditorGUILayout.LabelField( - $"{gameObjectName} - " + - $"{string.Join(" ", Regex.Split(pathData.EditorCurve.type.Name, @"(?{ObjectNames.NicifyVariableName(pathData.EditorCurve.propertyName)}", - propertyNameStyle - ); - - GUIStyle buttonStyle = new GUIStyle(EditorStyles.miniButton); - - - if (!pathData.CurrentPath.Equals(pathData.EditorCurve.path)) - { - buttonStyle.fontStyle = FontStyle.Bold; - - pathNameStyle.fontStyle = FontStyle.Bold; - } - - pathData.CurrentPath = EditorGUILayout.TextField(pathData.CurrentPath, pathNameStyle); - - Color standardColor = GUI.color; - - if (obj != null) - { - GUI.color = Color.white; - } - - if (obj == null || obj.GetComponent(pathData.EditorCurve.type) == null) - { - GUI.color = Color.yellow; - } - - newObj = (GameObject)EditorGUILayout.ObjectField(obj, typeof(GameObject), true, GUILayout.Width(150)); - - if (obj != null) - { - _gameObjects.Add(obj); - } - - GUI.color = standardColor; - - GUI.enabled = true; - - buttonStyle.fontSize = 11; - - buttonStyle.fixedHeight = 18; - - buttonStyle.fixedWidth = 68; - - if (GUILayout.Button("Apply", buttonStyle) && !pathData.CurrentPath.Equals(pathData.EditorCurve.path)) - { - UpdatePath(pathData); - - EditorGUI.FocusTextInControl(null); - } - - buttonStyle.fontStyle = !pathData.LastPath.Equals(pathData.EditorCurve.path) ? FontStyle.Bold : FontStyle.Normal; - - if (GUILayout.Button("Revert", buttonStyle) && pathData.CurrentPath.Equals(pathData.EditorCurve.path)) - { - Revert(pathData); - } - - EditorGUILayout.EndHorizontal(); - - try - { - if (obj != newObj) - { - pathData.CurrentPath = ChildPath(newObj); - } - } - catch (UnityException ex) - { - Debug.LogError(ex.Message); - } - } - - private void OnInspectorUpdate() - { - this.Repaint(); - } - - private void FillModel() - { - try - { - _pathDataList = new List(); - - foreach (var currentAnimationClip in _currentAnimationClips) - { - var pathDataListByClip = FillModelWithCurves(currentAnimationClip.name, AnimationUtility.GetCurveBindings(currentAnimationClip), currentAnimationClip); - - var pathDataListByObjectReference = FillModelWithCurves(currentAnimationClip.name, AnimationUtility.GetObjectReferenceCurveBindings(currentAnimationClip), - currentAnimationClip); - - _pathDataList.AddRange(pathDataListByClip); - - _pathDataList.AddRange(pathDataListByObjectReference); - } - } - catch (Exception e) - { - Console.WriteLine(e); - } - } - - - private List FillModelWithCurves(string clipName, EditorCurveBinding[] curves, AnimationClip clip) - { - var pathDataList = new List(); - - foreach (var curve in curves) - { - var pathData = _pathDataList?.Find(pd => pd.EditorCurve.Equals(curve) && pd.ClipName == clipName); - - if (pathData != null) - { - pathData.EditorCurve = curve; - pathDataList.Add(pathData); - } - else - { - pathDataList.Add(new PathData(clipName, curve.path, curve.path, curve, clip)); - } - } - - return pathDataList; - } - - private void UpdatePath(PathData pathData) - { - if (pathData.CurrentPath.Equals(pathData.EditorCurve.path)) - { - return; - } - - pathData.LastPath = pathData.EditorCurve.path; - - AssetDatabase.StartAssetEditing(); - - AnimationClip animationClip = pathData.Clip; - - Undo.RecordObject(animationClip, "Animation Hierarchy Change"); - - AnimationCurve curve = AnimationUtility.GetEditorCurve(animationClip, pathData.EditorCurve); - - ObjectReferenceKeyframe[] objectReferenceCurve = AnimationUtility.GetObjectReferenceCurve(animationClip, pathData.EditorCurve); - - if (curve != null) - { - AnimationUtility.SetEditorCurve(animationClip, pathData.EditorCurve, null); - } - else - { - AnimationUtility.SetObjectReferenceCurve(animationClip, pathData.EditorCurve, null); - } - - pathData.EditorCurve.path = pathData.CurrentPath; - - if (curve != null) - { - AnimationUtility.SetEditorCurve(animationClip, pathData.EditorCurve, curve); - } - else - { - AnimationUtility.SetObjectReferenceCurve(animationClip, pathData.EditorCurve, objectReferenceCurve); - } - - AssetDatabase.StopAssetEditing(); - - EditorUtility.ClearProgressBar(); - - FillModel(); - - this.Repaint(); - } - - private GameObject FindObjectInRoot(string path) - { - if (_animatorObject == null) - { - return null; - } - - Transform child = _animatorObject.transform.Find(path); - - if (child != null) - { - return child.gameObject; - } - - else - { - return null; - } - } - - private string ChildPath(GameObject obj, bool sep = false) - { - if (_animatorObject == null) - { - throw new UnityException("Please assign Referenced Animator (Root) first!"); - } - - if (obj == _animatorObject.gameObject) - { - return ""; - } - - else - { - if (obj.transform.parent == null) - { - throw new UnityException("Object must belong to " + _animatorObject.ToString() + "!"); - } - else - { - return ChildPath(obj.transform.parent.gameObject, true) + obj.name + (sep ? "/" : ""); - } - } - } - - #endregion - - - #region Utility Methods - - #endregion - - - #region Utility Events - - #endregion - } -} - - -namespace TEngine.Editor -{ - class AnimationOpt - { - static Dictionary _FLOAT_FORMAT; - static MethodInfo getAnimationClipStats; - static FieldInfo sizeInfo; - static object[] _param = new object[1]; - - static AnimationOpt() - { - _FLOAT_FORMAT = new Dictionary(); - for (uint i = 1; i < 6; i++) - { - _FLOAT_FORMAT.Add(i, "f" + i.ToString()); - } - - Assembly asm = Assembly.GetAssembly(typeof(UnityEditor.Editor)); - getAnimationClipStats = typeof(AnimationUtility).GetMethod( - "GetAnimationClipStats", - BindingFlags.Static | BindingFlags.NonPublic - ); - Type aniclipstats = asm.GetType("UnityEditor.AnimationClipStats"); - sizeInfo = aniclipstats.GetField("size", BindingFlags.Public | BindingFlags.Instance); - } - - AnimationClip _clip; - string _path; - - public string path - { - get { return _path; } - } - - public long originFileSize { get; private set; } - - public int originMemorySize { get; private set; } - - public int originInspectorSize { get; private set; } - - public long optFileSize { get; private set; } - - public int optMemorySize { get; private set; } - - public int optInspectorSize { get; private set; } - - public AnimationOpt(string path, AnimationClip clip) - { - _path = path; - _clip = clip; - _GetOriginSize(); - } - - void _GetOriginSize() - { - originFileSize = _GetFileZie(); - originMemorySize = _GetMemSize(); - originInspectorSize = _GetInspectorSize(); - } - - void _GetOptSize() - { - optFileSize = _GetFileZie(); - optMemorySize = _GetMemSize(); - optInspectorSize = _GetInspectorSize(); - } - - long _GetFileZie() - { - FileInfo fi = new FileInfo(_path); - return fi.Length; - } - - int _GetMemSize() - { - return (int)Profiler.GetRuntimeMemorySizeLong(_clip); - } - - int _GetInspectorSize() - { - _param[0] = _clip; - var stats = getAnimationClipStats.Invoke(null, _param); - return (int)sizeInfo.GetValue(stats); - } - - void _OptmizeAnimationScaleCurve() - { - if (_clip != null) - { - //去除scale曲线 - foreach (EditorCurveBinding theCurveBinding in AnimationUtility.GetCurveBindings(_clip)) - { - string name = theCurveBinding.propertyName.ToLower(); - if (name.Contains("scale")) - { - AnimationUtility.SetEditorCurve(_clip, theCurveBinding, null); - Debug.LogFormat("关闭{0}的scale curve", _clip.name); - } - } - } - } - - void _OptmizeAnimationFloat_X(uint x) - { - if (_clip != null && x > 0) - { - //浮点数精度压缩到f3 - AnimationClipCurveData[] curves = null; -#pragma warning disable CS0618 - curves = AnimationUtility.GetAllCurves(_clip); -#pragma warning restore CS0618 - Keyframe key; - Keyframe[] keyFrames; - string floatFormat; - if (_FLOAT_FORMAT.TryGetValue(x, out floatFormat)) - { - if (curves != null && curves.Length > 0) - { - for (int ii = 0; ii < curves.Length; ++ii) - { - AnimationClipCurveData curveDate = curves[ii]; - if (curveDate.curve == null || curveDate.curve.keys == null) - { - //Debug.LogWarning(string.Format("AnimationClipCurveData {0} don't have curve; Animation name {1} ", curveDate, animationPath)); - continue; - } - - keyFrames = curveDate.curve.keys; - for (int i = 0; i < keyFrames.Length; i++) - { - key = keyFrames[i]; - key.value = float.Parse(key.value.ToString(floatFormat)); - key.inTangent = float.Parse(key.inTangent.ToString(floatFormat)); - key.outTangent = float.Parse(key.outTangent.ToString(floatFormat)); - key.inWeight = float.Parse(key.inWeight.ToString(floatFormat)); - key.outWeight = float.Parse(key.outWeight.ToString(floatFormat)); - keyFrames[i] = key; - } - - curveDate.curve.keys = keyFrames; - _clip.SetCurve( - curveDate.path, - curveDate.type, - curveDate.propertyName, - curveDate.curve - ); - } - } - } - else - { - Debug.LogErrorFormat("目前不支持{0}位浮点", x); - } - } - } - - public void Optimize(bool scaleOpt, uint floatSize) - { - if (scaleOpt) - { - _OptmizeAnimationScaleCurve(); - } - - _OptmizeAnimationFloat_X(floatSize); - _GetOptSize(); - } - - public void Optimize_Scale_Float3() - { - Optimize(false, 3); - } - - public void LogOrigin() - { - _logSize(originFileSize, originMemorySize, originInspectorSize); - } - - public void LogOpt() - { - _logSize(optFileSize, optMemorySize, optInspectorSize); - } - - public void LogDelta() - { - } - - void _logSize(long fileSize, int memSize, int inspectorSize) - { - Debug.LogFormat( - "{0} \nSize=[ {1} ]", - _path, - string.Format( - "FSize={0} ; Mem->{1} ; inspector->{2}", - EditorUtility.FormatBytes(fileSize), - EditorUtility.FormatBytes(memSize), - EditorUtility.FormatBytes(inspectorSize) - ) - ); - } - } - - public class OptimizeAnimationClipTool - { - static List _AnimOptList = new List(); - static List _Errors = new List(); - static int _Index = 0; - - [MenuItem("Assets/Animation/裁剪浮点数去除Scale")] - public static void Optimize() - { - _AnimOptList = FindAnims(); - if (_AnimOptList.Count > 0) - { - _Index = 0; - _Errors.Clear(); - EditorApplication.update = ScanAnimationClip; - } - } - - private static void ScanAnimationClip() - { - AnimationOpt _AnimOpt = _AnimOptList[_Index]; - bool isCancel = EditorUtility.DisplayCancelableProgressBar( - "优化AnimationClip", - _AnimOpt.path, - (float)_Index / (float)_AnimOptList.Count - ); - _AnimOpt.Optimize_Scale_Float3(); - _Index++; - if (isCancel || _Index >= _AnimOptList.Count) - { - EditorUtility.ClearProgressBar(); - Debug.Log( - string.Format( - "--优化完成-- 错误数量: {0} 总数量: {1}/{2} 错误信息↓:\n{3}\n----------输出完毕----------", - _Errors.Count, - _Index, - _AnimOptList.Count, - string.Join(string.Empty, _Errors.ToArray()) - ) - ); - Resources.UnloadUnusedAssets(); - GC.Collect(); - AssetDatabase.SaveAssets(); - EditorApplication.update = null; - _AnimOptList.Clear(); - _cachedOpts.Clear(); - _Index = 0; - } - } - - static Dictionary _cachedOpts = new Dictionary(); - - static AnimationOpt _GetNewAOpt(string path) - { - AnimationOpt opt = null; - if (!_cachedOpts.ContainsKey(path)) - { - AnimationClip clip = AssetDatabase.LoadAssetAtPath(path); - if (clip != null) - { - opt = new AnimationOpt(path, clip); - _cachedOpts[path] = opt; - } - } - - return opt; - } - - static List FindAnims() - { - string[] guids = null; - List path = new List(); - List assets = new List(); - UnityEngine.Object[] objs = Selection.GetFiltered(typeof(object), SelectionMode.Assets); - if (objs.Length > 0) - { - for (int i = 0; i < objs.Length; i++) - { - if (objs[i].GetType() == typeof(AnimationClip)) - { - string p = AssetDatabase.GetAssetPath(objs[i]); - AnimationOpt animopt = _GetNewAOpt(p); - if (animopt != null) assets.Add(animopt); - } - else - path.Add(AssetDatabase.GetAssetPath(objs[i])); - } - - if (path.Count > 0) - guids = AssetDatabase.FindAssets( - string.Format("t:{0}", typeof(AnimationClip).ToString().Replace("UnityEngine.", "")), - path.ToArray() - ); - else - guids = new string[] { }; - } - - for (int i = 0; i < guids.Length; i++) - { - string assetPath = AssetDatabase.GUIDToAssetPath(guids[i]); - AnimationOpt animopt = _GetNewAOpt(assetPath); - if (animopt != null) assets.Add(animopt); - } - - return assets; - } - } -} \ No newline at end of file diff --git a/Assets/TEngine/Thirdly/Animation/Editor/AnimationHierarchyEditorTool.cs.meta b/Assets/TEngine/Thirdly/Animation/Editor/AnimationHierarchyEditorTool.cs.meta deleted file mode 100644 index aeeb3c49..00000000 --- a/Assets/TEngine/Thirdly/Animation/Editor/AnimationHierarchyEditorTool.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 8be52d198504f814db7f9d88b54c5a44 -timeCreated: 1510337152 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: