/// <summary>
 /// Lerp between two transformation states.
 /// </summary>
 /// <param name="key1">Transformations from.</param>
 /// <param name="key2">Transformations to.</param>
 /// <param name="amount">How much to lerp.</param>
 /// <param name="result">Out transformations.</param>
 public static void Lerp(ref SpriteTransformation key1, ref SpriteTransformation key2, float amount,
                         ref SpriteTransformation result)
 {
     result.Position = Vector2.Lerp(key1.Position, key2.Position, amount);
     result.Scale    = Vector2.Lerp(key1.Scale, key2.Scale, amount);
     result.Rotation = MathHelper.Lerp(key1.Rotation, key2.Rotation, amount);
 }
        /// <summary>
        /// Clone the transformations.
        /// </summary>
        /// <returns>Cloned transformations.</returns>
        public SpriteTransformation Clone()
        {
            var ret = new SpriteTransformation();

            ret.Color    = Color;
            ret.Rotation = Rotation;
            ret.Scale    = Scale;
            ret.Position = Position;
            return(ret);
        }
        /// <summary>
        /// Merge two transformations into one.
        /// </summary>
        /// <param name="a">First transformation.</param>
        /// <param name="b">Second transformation.</param>
        /// <returns>Merged transformation.</returns>
        public static SpriteTransformation Compose(SpriteTransformation a, SpriteTransformation b)
        {
            var result = new SpriteTransformation();
            var transformedPosition = a.TransformVector(b.Position);

            result.Position = transformedPosition;
            result.Rotation = a.Rotation + b.Rotation;
            result.Scale    = a.Scale * b.Scale;
            result.Color    = MultiplyColors(a.Color, b.Color);
            return(result);
        }
Example #4
0
        /// <summary>
        /// Clone an existing renderable object.
        /// </summary>
        /// <param name="copyFrom">Object to copy properties from.</param>
        /// <param name="includeChildren">If true, will also clone children.</param>
        public Renderable(Renderable copyFrom, bool includeChildren)
        {
            // copy basics
            Visible     = copyFrom.Visible;
            Zindex      = copyFrom.Zindex;
            _localTrans = copyFrom._localTrans.Clone();

            // clone children
            if (includeChildren)
            {
                foreach (var child in copyFrom._children)
                {
                    AddChild(child.Clone(true));
                }
            }

            // update transformations
            UpdateTransformations();
        }
Example #5
0
 /// <summary>
 /// Create the new renderable entity with default values.
 /// </summary>
 protected Renderable()
 {
     _children   = new List <Renderable>();
     _localTrans = new SpriteTransformation();
     _worldTrans = new SpriteTransformation();
 }