CopyFrom() public method

public CopyFrom ( tk2dSpriteAnimationFrame, source ) : void
source tk2dSpriteAnimationFrame,
return void
Example #1
0
            public List <tk2dSpriteAnimationFrame> DuplicateFrames(List <tk2dSpriteAnimationFrame> source)
            {
                List <tk2dSpriteAnimationFrame> dest = new List <tk2dSpriteAnimationFrame>();

                foreach (tk2dSpriteAnimationFrame f in source)
                {
                    tk2dSpriteAnimationFrame q = new tk2dSpriteAnimationFrame();
                    q.CopyFrom(f);
                    dest.Add(q);
                }
                return(dest);
            }
Example #2
0
        public static List <tk2dSpriteAnimationFrame> CloneFrames(this tk2dSpriteAnimationClip clip)
        {
            List <tk2dSpriteAnimationFrame> ret = new List <tk2dSpriteAnimationFrame>();

            foreach (tk2dSpriteAnimationFrame frame in clip.frames)
            {
                tk2dSpriteAnimationFrame newframe = new tk2dSpriteAnimationFrame();
                newframe.CopyFrom(frame);
                ret.Add(newframe);
            }

            return(ret);
        }
Example #3
0
    void AddFrame(tk2dSpriteAnimationClip clip)
    {
        System.Array.Resize(ref clip.frames, clip.frames.Length + 1);
        var newFrame = new tk2dSpriteAnimationFrame();

        newFrame.CopyFrom(clip.frames[clip.frames.Length - 2]);         // previous "last" entry
        if (tk2dPreferences.inst.groupAnimDisplay)
        {
            // make sure the spriteId is something different, so it ends up adding a new entry
            var defs = newFrame.spriteCollection.spriteDefinitions;
            for (int j = 0; j < defs.Length; ++j)
            {
                int i = (j + newFrame.spriteId + 1) % defs.Length;                 // start one after current frame, and work from there looping back
                if (i != newFrame.spriteId && defs[i].Valid)
                {
                    newFrame.spriteId = i;
                    break;
                }
            }
        }
        clip.frames[clip.frames.Length - 1] = newFrame;
        GUI.changed = true;
    }
			public List<tk2dSpriteAnimationFrame> DuplicateFrames(List<tk2dSpriteAnimationFrame> source)
			{
				List<tk2dSpriteAnimationFrame> dest = new List<tk2dSpriteAnimationFrame>();
				foreach (tk2dSpriteAnimationFrame f in source)
				{
					tk2dSpriteAnimationFrame q = new tk2dSpriteAnimationFrame();
					q.CopyFrom(f);
					dest.Add(q);
				}
				return dest;
			}
    void DrawFrameEditor(tk2dSpriteAnimationClip clip, int frameId, int frameCount)
    {
        var frame = clip.frames[frameId];

        tk2dGuiUtility.BeginChangeCheck();
        frame.spriteCollection = tk2dSpriteGuiUtility.SpriteCollectionPopup(frame.spriteCollection);
        if (tk2dGuiUtility.EndChangeCheck())
        {
            frame.spriteId = tk2dSpriteGuiUtility.GetValidSpriteId(frame.spriteCollection, frame.spriteId);
            PropogateFrameChange(clip, frameId, frameCount,
            (dest, src) => { dest.spriteCollection = src.spriteCollection; dest.spriteId = src.spriteId; } );
        }

        tk2dGuiUtility.BeginChangeCheck();
        frame.spriteId = tk2dSpriteGuiUtility.SpriteSelectorPopup(null, frame.spriteId, frame.spriteCollection);
        if (tk2dGuiUtility.EndChangeCheck()) PropogateFrameChange(clip, frameId, frameCount, (dest, src) => dest.spriteId = src.spriteId );

        if (tk2dPreferences.inst.groupAnimDisplay)
        {
            int newFrameCount = EditorGUILayout.Popup(frameCount, GetDurationTableForClip(clip));
            if (newFrameCount != frameCount)
            {
                if (newFrameCount == 0)
                {
                    deferredFrameOp = delegate(tk2dSpriteAnimationClip target)
                    {
                        if (frameCount == target.frames.Length) frameCount--; // don't delete last sprite
                        if (frameCount > 0)
                        {
                            List<tk2dSpriteAnimationFrame> frames = new List<tk2dSpriteAnimationFrame>(target.frames);
                            frames.RemoveRange(frameId, frameCount);
                            target.frames = frames.ToArray();
                        }
                    };
                }
                else if (newFrameCount < frameCount)
                {
                    deferredFrameOp = delegate(tk2dSpriteAnimationClip target)
                    {
                        int toRemove = frameCount - newFrameCount;
                        List<tk2dSpriteAnimationFrame> frames = new List<tk2dSpriteAnimationFrame>(target.frames);
                        frames.RemoveRange(frameId + frameCount - 1 - toRemove, toRemove);
                        target.frames = frames.ToArray();
                    };
                }
                else if (newFrameCount > frameCount)
                {
                    deferredFrameOp = delegate(tk2dSpriteAnimationClip target)
                    {
                        int toAdd = newFrameCount - frameCount;
                        List<tk2dSpriteAnimationFrame> frames = new List<tk2dSpriteAnimationFrame>(target.frames);
                        var source = target.frames[frameId + frameCount - 1]; // last valid one
                        var framesToInsert = new List<tk2dSpriteAnimationFrame>(toAdd);
                        for (int j = 0; j < toAdd; ++j)
                        {
                            tk2dSpriteAnimationFrame f = new tk2dSpriteAnimationFrame();
                            f.CopyFrom(source, false);
                            framesToInsert.Add(f);
                        }
                        frames.InsertRange(frameId + frameCount, framesToInsert);
                        target.frames = frames.ToArray();
                    };
                }
            }
            GUILayout.Space(8);
        }

        tk2dGuiUtility.BeginChangeCheck();
        frame.triggerEvent = EditorGUILayout.Toggle("Trigger", frame.triggerEvent);
        if (tk2dGuiUtility.EndChangeCheck()) PropogateFrameChange(clip, frameId, frameCount, (dest, src) => dest.triggerEvent = src.triggerEvent );
        if (frame.triggerEvent)
        {
            EditorGUI.indentLevel++;

            tk2dGuiUtility.BeginChangeCheck();
            frame.eventInfo = EditorGUILayout.TextField("Info", frame.eventInfo);
            if (tk2dGuiUtility.EndChangeCheck()) PropogateFrameChange(clip, frameId, frameCount, (dest, src) => dest.eventInfo = src.eventInfo );

            tk2dGuiUtility.BeginChangeCheck();
            frame.eventFloat = EditorGUILayout.FloatField("Float", frame.eventFloat);
            if (tk2dGuiUtility.EndChangeCheck()) PropogateFrameChange(clip, frameId, frameCount, (dest, src) => dest.eventFloat = src.eventFloat );

            tk2dGuiUtility.BeginChangeCheck();
            frame.eventInt = EditorGUILayout.IntField("Int", frame.eventInt);
            if (tk2dGuiUtility.EndChangeCheck()) PropogateFrameChange(clip, frameId, frameCount, (dest, src) => dest.eventInt = src.eventInt );

            GUILayout.Space(8);
            EditorGUI.indentLevel--;
        }
    }
 void AddFrame(tk2dSpriteAnimationClip clip)
 {
     System.Array.Resize(ref clip.frames, clip.frames.Length + 1);
     var newFrame = new tk2dSpriteAnimationFrame();
     newFrame.CopyFrom(clip.frames[clip.frames.Length - 2]); // previous "last" entry
     if (tk2dPreferences.inst.groupAnimDisplay)
     {
         // make sure the spriteId is something different, so it ends up adding a new entry
         var defs = newFrame.spriteCollection.spriteDefinitions;
         for (int j = 0; j < defs.Length; ++j)
         {
             int i = (j + newFrame.spriteId + 1) % defs.Length; // start one after current frame, and work from there looping back
             if (i != newFrame.spriteId && defs[i].Valid)
             {
                 newFrame.spriteId = i;
                 break;
             }
         }
     }
     clip.frames[clip.frames.Length - 1] = newFrame;
     GUI.changed = true;
 }
Example #7
0
    void DrawFrameEditor(tk2dSpriteAnimationClip clip, int frameId, int frameCount)
    {
        var frame = clip.frames[frameId];

        tk2dGuiUtility.BeginChangeCheck();
        frame.spriteCollection = tk2dSpriteGuiUtility.SpriteCollectionPopup(frame.spriteCollection);
        if (tk2dGuiUtility.EndChangeCheck())
        {
            frame.spriteId = tk2dSpriteGuiUtility.GetValidSpriteId(frame.spriteCollection, frame.spriteId);
            PropogateFrameChange(clip, frameId, frameCount,
                                 (dest, src) => { dest.spriteCollection = src.spriteCollection; dest.spriteId = src.spriteId; });
        }

        tk2dGuiUtility.BeginChangeCheck();
        frame.spriteId = tk2dSpriteGuiUtility.SpriteSelectorPopup(null, frame.spriteId, frame.spriteCollection);
        if (tk2dGuiUtility.EndChangeCheck())
        {
            PropogateFrameChange(clip, frameId, frameCount, (dest, src) => dest.spriteId = src.spriteId);
        }

        if (tk2dPreferences.inst.groupAnimDisplay)
        {
            int newFrameCount = EditorGUILayout.Popup(frameCount, GetDurationTableForClip(clip));
            if (newFrameCount != frameCount)
            {
                if (newFrameCount == 0)
                {
                    deferredFrameOp = delegate(tk2dSpriteAnimationClip target)
                    {
                        if (frameCount == target.frames.Length)
                        {
                            frameCount--;                                                             // don't delete last sprite
                        }
                        if (frameCount > 0)
                        {
                            List <tk2dSpriteAnimationFrame> frames = new List <tk2dSpriteAnimationFrame>(target.frames);
                            frames.RemoveRange(frameId, frameCount);
                            target.frames = frames.ToArray();
                        }
                    };
                }
                else if (newFrameCount < frameCount)
                {
                    deferredFrameOp = delegate(tk2dSpriteAnimationClip target)
                    {
                        int toRemove = frameCount - newFrameCount;
                        List <tk2dSpriteAnimationFrame> frames = new List <tk2dSpriteAnimationFrame>(target.frames);
                        frames.RemoveRange(frameId + frameCount - 1 - toRemove, toRemove);
                        target.frames = frames.ToArray();
                    };
                }
                else if (newFrameCount > frameCount)
                {
                    deferredFrameOp = delegate(tk2dSpriteAnimationClip target)
                    {
                        int toAdd = newFrameCount - frameCount;
                        List <tk2dSpriteAnimationFrame> frames = new List <tk2dSpriteAnimationFrame>(target.frames);
                        var source         = target.frames[frameId + frameCount - 1];                 // last valid one
                        var framesToInsert = new List <tk2dSpriteAnimationFrame>(toAdd);
                        for (int j = 0; j < toAdd; ++j)
                        {
                            tk2dSpriteAnimationFrame f = new tk2dSpriteAnimationFrame();
                            f.CopyFrom(source, false);
                            framesToInsert.Add(f);
                        }
                        frames.InsertRange(frameId + frameCount, framesToInsert);
                        target.frames = frames.ToArray();
                    };
                }
            }
            GUILayout.Space(8);
        }

        tk2dGuiUtility.BeginChangeCheck();
        frame.triggerEvent = EditorGUILayout.Toggle("Trigger", frame.triggerEvent);
        if (tk2dGuiUtility.EndChangeCheck())
        {
            PropogateFrameChange(clip, frameId, frameCount, (dest, src) => dest.triggerEvent = src.triggerEvent);
        }
        if (frame.triggerEvent)
        {
            EditorGUI.indentLevel++;

            tk2dGuiUtility.BeginChangeCheck();
            frame.eventInfo = EditorGUILayout.TextField("Info", frame.eventInfo);
            if (tk2dGuiUtility.EndChangeCheck())
            {
                PropogateFrameChange(clip, frameId, frameCount, (dest, src) => dest.eventInfo = src.eventInfo);
            }

            tk2dGuiUtility.BeginChangeCheck();
            frame.eventFloat = EditorGUILayout.FloatField("Float", frame.eventFloat);
            if (tk2dGuiUtility.EndChangeCheck())
            {
                PropogateFrameChange(clip, frameId, frameCount, (dest, src) => dest.eventFloat = src.eventFloat);
            }

            tk2dGuiUtility.BeginChangeCheck();
            frame.eventInt = EditorGUILayout.IntField("Int", frame.eventInt);
            if (tk2dGuiUtility.EndChangeCheck())
            {
                PropogateFrameChange(clip, frameId, frameCount, (dest, src) => dest.eventInt = src.eventInt);
            }

            GUILayout.Space(8);
            EditorGUI.indentLevel--;
        }
    }