protected SpriteAnimation(SpriteAnimation old)
        {
            Frames = new Rectangle[old.Frames.Length];
            old.Frames.CopyTo(Frames, 0);

            FramesPerSecond = old.FramesPerSecond;
            TotalFrames = old.TotalFrames;
            Looping = old.Looping;
            CompletedValue = old.CompletedValue;
        }
        public override void Deserialize(XElement element)
        {
            int numRows = 1, numCols = 1;

            if (element.Element("numRows") != null)
                numRows = int.Parse(element.Element("numRows").Value, NumberStyles.Integer, CultureInfo.InvariantCulture);

            if (element.Element("numCols") != null)
                numCols = int.Parse(element.Element("numCols").Value, NumberStyles.Integer, CultureInfo.InvariantCulture);

            spriteSheetRows = numRows;
            spriteSheetCols = numCols;

            //Deserialize each IAnimation
            IEnumerable<XElement> animElems = element.Element("animations").Elements("animation");

            foreach (var animElem in animElems)
            {
                IAnimation anim = new SpriteAnimation();
                anim.Deserialize(animElem);
                animations.Add(anim.Name, anim);
            }

            base.Deserialize(element);
        }