public static List <APAnimation> GetAnimations() { string[] guids = GetAssetGuidsByType(APAssetType.AnimationClip); HashSet <string> uniqueGuids = new HashSet <string>(); foreach (var guid in guids) { uniqueGuids.Add(guid); } List <APAnimation> list = new List <APAnimation>(); foreach (var guid in uniqueGuids) { string path = AssetDatabase.GUIDToAssetPath(guid); if (Utility.IsUntyNewAnimation(path)) { AnimationClip clip = AssetDatabase.LoadAssetAtPath <AnimationClip>(path); APAnimation apClip = GetAPAnimationFromClip(clip); apClip.Path = path; apClip.Hash = Utility.GetFileMd5(path); apClip.FileSize = Utility.GetFileSize(path); apClip.InFile = Utility.GetFileName(path); apClip.Id = guid; UnloadAsset(clip); list.Add(apClip); } else { foreach (var obj in AssetDatabase.LoadAllAssetsAtPath(path)) { if (obj is AnimationClip) { if (IsPreviewAnimation(obj as AnimationClip)) { UnloadAsset(obj); continue; } APAnimation apClip = GetAPAnimationFromClip(obj as AnimationClip); apClip.Path = path; apClip.Hash = Utility.GetFileMd5(path); apClip.InFile = Utility.GetFileName(path); apClip.FileSize = 0; apClip.Id = Utility.GetAssetId(guid, Utility.GetLocalIndentifierOfObject(obj).ToString()); UnloadAsset(obj); list.Add(apClip); } } } } return(list); }
public static APAnimation GetAPAnimationFromAssetPath(string guid, string fileId) { var path = AssetDatabase.GUIDToAssetPath(guid); if (Utility.IsUntyNewAnimation(path)) { AnimationClip clip = AssetDatabase.LoadAssetAtPath <AnimationClip>(path); APAnimation apClip = GetAPAnimationFromClip(clip); apClip.Path = path; apClip.Hash = Utility.GetFileMd5(path); apClip.InFile = Utility.GetFileName(path); apClip.Id = guid; UnloadAsset(clip); return(apClip); } else { if (string.IsNullOrEmpty(fileId)) { return(null); } var objects = AssetDatabase.LoadAllAssetsAtPath(path); foreach (var obj in objects) { if ((obj is AnimationClip) && Utility.GetLocalIndentifierOfObject(obj).ToString() == fileId) { APAnimation apClip = GetAPAnimationFromClip(obj as AnimationClip); apClip.Path = path; apClip.Hash = Utility.GetFileMd5(path); apClip.InFile = Utility.GetFileName(path); apClip.Id = Utility.GetAssetId(guid, fileId); foreach (var item in objects) { UnloadAsset(item); } return(apClip); } } foreach (var item in objects) { UnloadAsset(item); } } return(null); }
public static APAnimation GetAPAnimationFromClip(AnimationClip clip) { APAnimation animation = new APAnimation(); AnimationClipSettings setting = AnimationUtility.GetAnimationClipSettings(clip); animation.Name = clip.name; animation.CycleOffset = setting.cycleOffset; animation.LoopPose = setting.loopBlend; animation.LoopTime = setting.loopTime; animation.FPS = Mathf.RoundToInt(clip.frameRate); animation.Length = clip.length; animation.Icon = GetIconID("", true); return(animation); }