Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }