/// <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); }
/// <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(); }
/// <summary> /// Create the new renderable entity with default values. /// </summary> protected Renderable() { _children = new List <Renderable>(); _localTrans = new SpriteTransformation(); _worldTrans = new SpriteTransformation(); }