private KeyFramePivotScaledValues GetKeyFrameValues(Key timelineKey, ObjectInfo box, KeyObjectRef objectRef)
        {
            var pivotValue = new KeyFrameValues
                {
                    RelativePosition = new Vector3(timelineKey.Object.X,
                                           timelineKey.Object.Y,
                                           0.0f),
                    RelativeRotation = new Vector3
                        {
                            Z = timelineKey.Object.Angle
                        },
                    Spin = timelineKey.Spin
                };
            var width = (int)box.Width;
            var height = (int)box.Height;

            float pivotX = timelineKey.Object.PivotX.HasValue ? timelineKey.Object.PivotX.Value : box.PivotX;

            float pivotY = timelineKey.Object.PivotY.HasValue ? timelineKey.Object.PivotY.Value : box.PivotY;

            var scaledPolygonValue = new KeyFrameValues
                {
                    RelativeScaleX = timelineKey.Object.ScaleX,
                    RelativeScaleY = timelineKey.Object.ScaleY,
                    RelativePosition = GetPivotedRelativePosition(width, height, pivotX,
                                                         pivotY, objectRef.ZIndex)
                };
            return new KeyFramePivotScaledValues { Pivot = pivotValue, ScaledPolygon = scaledPolygonValue };
        }
 private KeyFrameValues GetKeyFrameValuesForPoint(Key timelineKey, KeyObjectRef objectRef)
 {
     return new KeyFrameValues
     {
         RelativePosition = new Vector3(timelineKey.Object.X, timelineKey.Object.Y, 0.0f),
         RelativeRotation = new Vector3
         {
             Z = timelineKey.Object.Angle
         },
         Spin = timelineKey.Spin
     };
 }
        private static KeyFramePivotScaledValues GetKeyFrameValues(Key timelineKey, SpriterDataFolderFile file, IDictionary<string, Texture2D> textures, string folderFileId, KeyObjectRef objectRef)
        {
            var pivotValue = new KeyFrameValues
                {
                    RelativePosition = new Vector3(timelineKey.Object.X,
                                           timelineKey.Object.Y,
                                           0.0f),
                    RelativeRotation = new Vector3
                        {
                            Z = timelineKey.Object.Angle
                        },
                    Spin = timelineKey.Spin
                };
            int width = file.Width;
            int height = file.Height;

            var pivotY = 1.0f;
            var pivotX = 0.0f;

            if (timelineKey.Object.PivotX.HasValue)
            {
                pivotX = timelineKey.Object.PivotX.Value;
            }
            else if (file.PivotX.HasValue)
            {
                pivotX = file.PivotX.Value;
            }

            if (timelineKey.Object.PivotY.HasValue)
            {
                pivotY = timelineKey.Object.PivotY.Value;
            }
            else if (file.PivotY.HasValue)
            {
                pivotY = file.PivotY.Value;
            }

            var ScaledSpriteValue = new KeyFrameValues
                {
                    Texture = textures[folderFileId],
                    RelativeScaleX = timelineKey.Object.ScaleX,
                    RelativeScaleY = timelineKey.Object.ScaleY,
                    RelativePosition = GetPivotedRelativePosition(width, height, pivotX,
                                                         pivotY, objectRef.ZIndex),
                    Alpha = timelineKey.Object.Alpha
                };
            return new KeyFramePivotScaledValues { Pivot = pivotValue, ScaledSprite = ScaledSpriteValue };
        }