void OnAnimationDataUpdate() { oldData = animationData; }
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>(); }