protected override IKeyframe DeserializeKeyframe(XElement serializedData)
        {
            SkeletalKeyframe newKeyframe = new SkeletalKeyframe();
            newKeyframe.Deserialize(serializedData);

            return newKeyframe;
        }
Example #2
0
        protected override IKeyframe DeserializeKeyframe(XElement serializedData)
        {
            SkeletalKeyframe newKeyframe = new SkeletalKeyframe();

            newKeyframe.Deserialize(serializedData);

            return(newKeyframe);
        }
Example #3
0
 private void UpdateSpritesheetSettings(string boneID, IBone bone, SkeletalKeyframe keyFrame)
 {
     if (keyFrame.BoneAnimationData.ContainsKey(boneID))
     {
         bone.ApplySkin(
             keyFrame.BoneAnimationData[boneID].TextureName,
             keyFrame.BoneAnimationData[boneID].Origin,
             keyFrame.BoneAnimationData[boneID].SourceArea);
     }
 }
Example #4
0
        private void SetFrameEndpoints(string boneID, SkeletalKeyframe keyFrame)
        {
            if (!_boneFrameEndValues.ContainsKey(boneID))
            {
                _boneFrameEndValues.Add(boneID, new SkeletalKeyframe.DataContainer());
            }

            if (keyFrame.BoneAnimationData.ContainsKey(boneID))
            {
                if (!float.IsNegativeInfinity(keyFrame.BoneAnimationData[boneID].Offset.X))
                {
                    _boneFrameEndValues[boneID].Offset = keyFrame.BoneAnimationData[boneID].Offset;
                }
                else
                {
                    _boneFrameEndValues[boneID].Offset = _boneFrameStartValues[boneID].Offset;
                }

                if (keyFrame.BoneAnimationData[boneID].Rotation >= 0.0f)
                {
                    _boneFrameEndValues[boneID].Rotation = _boneFrameStartValues[boneID].Rotation +
                                                           Utility.AngleDifference(_boneFrameStartValues[boneID].Rotation, keyFrame.BoneAnimationData[boneID].Rotation);
                }
                else
                {
                    _boneFrameEndValues[boneID].Rotation = _boneFrameStartValues[boneID].Rotation;
                }

                if (keyFrame.BoneAnimationData[boneID].Scale >= 0.0f)
                {
                    _boneFrameEndValues[boneID].Scale = keyFrame.BoneAnimationData[boneID].Scale;
                }
                else
                {
                    _boneFrameEndValues[boneID].Scale = _boneFrameStartValues[boneID].Scale;
                }
            }
            else
            {
                _boneFrameEndValues[boneID] = _boneFrameStartValues[boneID];
            }
        }
        private static void AddSkeletalKeyframe(string sequenceName, XElement xmlFrameData)
        {
            SkeletalKeyframe newKeyframe = new SkeletalKeyframe();
            newKeyframe.DurationInMilliseconds = (int)xmlFrameData.Attribute("duration");

            foreach (XElement bone in xmlFrameData.Elements("bonedata"))
            {
                SkeletalKeyframe.DataContainer boneKeyframeData = new SkeletalKeyframe.DataContainer();

                if (bone.Attribute("rotation") != null) { boneKeyframeData.Rotation = Utility.RectifyAngle(MathHelper.ToRadians((float)bone.Attribute("rotation"))); }
                if (bone.Attribute("scale") != null) { boneKeyframeData.Scale = (float)bone.Attribute("scale"); }
                if ((bone.Attribute("offset-x") != null) && (bone.Attribute("offset-y") != null))
                {
                    boneKeyframeData.Offset = new Vector2((float)bone.Attribute("offset-x"), (float)bone.Attribute("offset-y"));
                }

                if (bone.Element("texture") != null)
                {
                    if (bone.Element("texture").Attribute("name") != null) { boneKeyframeData.TextureName = bone.Element("texture").Attribute("name").Value; }

                    if ((bone.Attribute("origin-x") != null) && (bone.Attribute("origin-y") != null))
                    {
                        boneKeyframeData.Origin = new Vector2((float)bone.Attribute("origin-x"), (float)bone.Attribute("origin-y"));
                    }

                    if ((bone.Element("texture").Attribute("frame-x") != null) && (bone.Element("texture").Attribute("frame-y") != null) &&
                        (bone.Element("texture").Attribute("frame-width") != null) && (bone.Element("texture").Attribute("frame-height") != null))
                    {
                        Rectangle frame = new Rectangle((int)bone.Element("texture").Attribute("frame-x"), (int)bone.Element("texture").Attribute("frame-y"),
                            (int)bone.Element("texture").Attribute("frame-width"), (int)bone.Element("texture").Attribute("frame-height"));
                        boneKeyframeData.SourceArea = frame;
                    }
                }

                newKeyframe.BoneAnimationData.Add(bone.Attribute("id").Value, boneKeyframeData);
            }

            AddKeyframe(sequenceName, newKeyframe);
        }
 private void UpdateSpritesheetSettings(string boneID, IBone bone, SkeletalKeyframe keyFrame)
 {
     if (keyFrame.BoneAnimationData.ContainsKey(boneID))
     {
         bone.ApplySkin(
             keyFrame.BoneAnimationData[boneID].TextureName,
             keyFrame.BoneAnimationData[boneID].Origin,
             keyFrame.BoneAnimationData[boneID].SourceArea);
     }
 }
        private void SetFrameEndpoints(string boneID, SkeletalKeyframe keyFrame)
        {
            if (!_boneFrameEndValues.ContainsKey(boneID)) { _boneFrameEndValues.Add(boneID, new SkeletalKeyframe.DataContainer()); }

            if (keyFrame.BoneAnimationData.ContainsKey(boneID))
            {
                if (!float.IsNegativeInfinity(keyFrame.BoneAnimationData[boneID].Offset.X))
                {
                    _boneFrameEndValues[boneID].Offset = keyFrame.BoneAnimationData[boneID].Offset;
                }
                else
                {
                    _boneFrameEndValues[boneID].Offset = _boneFrameStartValues[boneID].Offset;
                }

                if (keyFrame.BoneAnimationData[boneID].Rotation >= 0.0f)
                {
                    _boneFrameEndValues[boneID].Rotation = _boneFrameStartValues[boneID].Rotation +
                        Utility.AngleDifference(_boneFrameStartValues[boneID].Rotation, keyFrame.BoneAnimationData[boneID].Rotation);
                }
                else
                {
                    _boneFrameEndValues[boneID].Rotation = _boneFrameStartValues[boneID].Rotation;
                }

                if (keyFrame.BoneAnimationData[boneID].Scale >= 0.0f)
                {
                    _boneFrameEndValues[boneID].Scale = keyFrame.BoneAnimationData[boneID].Scale;
                }
                else
                {
                    _boneFrameEndValues[boneID].Scale = _boneFrameStartValues[boneID].Scale;
                }
            }
            else
            {
                _boneFrameEndValues[boneID] = _boneFrameStartValues[boneID];
            }
        }