Esempio n. 1
0
 void OnAnimationDataUpdate()
 {
     oldData = animationData;
 }
Esempio n. 2
0
        public static IEnumerator DecomposeTK2DAnimation(UnityEngine.Object tk2dSpriteAnimation, string animationName = null)
        {
            //var data = GetCollectionData(tk2dSpriteCollection);

            if (animationName == null)
            {
                animationName = "DecomposedAnimation";
            }

            var animationData = GetAnimationData(tk2dSpriteAnimation);

            Dictionary <int, SpriteCollectionData> spriteCollections = new Dictionary <int, SpriteCollectionData>();


            Dictionary <int, SpritePackage> sprites = new Dictionary <int, SpritePackage>();

            foreach (var clip in animationData.Clips)
            {
                foreach (var frame in clip.Frames)
                {
                    if (!spriteCollections.ContainsKey(frame.SpriteCollectionRaw.GetInstanceID()))
                    {
                        spriteCollections.Add(frame.SpriteCollectionRaw.GetInstanceID(), GetCollectionData(frame.SpriteCollectionRaw));

                        OutClass <SpritePackage> outputSprites = new OutClass <SpritePackage>();
                        //List<Sprite> sprites = new List<Sprite>();

                        yield return(UnpackToSpriteAsyncInternal(frame.SpriteCollectionRaw, outputSprites, "Assets\\" + animationName));

                        sprites.Add(frame.SpriteCollectionRaw.GetInstanceID(), outputSprites.Value);
                    }
                }
            }

            WeaverAnimationData data = ScriptableObject.CreateInstance <WeaverAnimationData>();

            foreach (var clipRaw in animationData.Clips)
            {
                if (clipRaw.Name == null || clipRaw.Name == "")
                {
                    continue;
                }
                var clip = new WeaverAnimationData.Clip
                {
                    FPS       = clipRaw.FPS,
                    LoopStart = clipRaw.LoopStart,
                    Name      = clipRaw.Name,
                };
                switch (clipRaw.WrapMode)
                {
                case WrapMode.Loop:
                    clip.WrapMode = WeaverAnimationData.WrapMode.Loop;
                    break;

                case WrapMode.LoopSection:
                    clip.WrapMode = WeaverAnimationData.WrapMode.LoopSection;
                    break;

                case WrapMode.Once:
                    clip.WrapMode = WeaverAnimationData.WrapMode.Once;
                    break;

                case WrapMode.PingPong:
                    clip.WrapMode = WeaverAnimationData.WrapMode.PingPong;
                    break;

                case WrapMode.RandomFrame:
                    clip.WrapMode = WeaverAnimationData.WrapMode.RandomFrame;
                    break;

                case WrapMode.RandomLoop:
                    clip.WrapMode = WeaverAnimationData.WrapMode.RandomLoop;
                    break;

                case WrapMode.Single:
                    clip.WrapMode = WeaverAnimationData.WrapMode.SingleFrame;
                    break;

                default:
                    break;
                }

                foreach (var frameRaw in clipRaw.Frames)
                {
                    clip.AddFrame(sprites[frameRaw.SpriteCollectionRaw.GetInstanceID()].GetSprite(frameRaw.SpriteID));
                }

                data.AddClip(clip);
            }



            AssetDatabase.CreateAsset(data, "Assets/" + animationName + "/" + animationName + ".asset");
        }
	void Awake()
	{
		data = target as WeaverAnimationData;
		newClipFrames = new List<Sprite>();
	}