private void RunScaleTo(ref ScaleTo scaleto) { var time = scaleto.Time; var newscale = scaleto.NextScale; if (time == 0) { this.Scale = newscale; scaleto.IsDone = true; scaleto.IsDoing = false; return; } if (!scaleto.IsDoing) { scaleto.IsDoing = true; speedScale.X = (newscale.X - Scale.X) / (time * 60); speedScale.Y = (newscale.Y - Scale.Y) / (time * 60); scaleTotalValue.X = Math.Abs(newscale.X - Scale.X); scaleTotalValue.Y = Math.Abs(newscale.Y - Scale.Y); scaledValue = Vector2.Zero; } if (!scaleto.IsDone) { if ((scaleTotalValue.X >= scaledValue.X)) { if (Math.Abs(scaleTotalValue.X - scaledValue.X) < Math.Abs(speedScale.X)) { Scale = new Vector2(newscale.X, Scale.Y); } else { Scale = new Vector2(Scale.X + speedScale.X, Scale.Y); scaledValue.X += Math.Abs(speedScale.X); } } if (scaleTotalValue.Y >= scaledValue.Y) { if (Math.Abs(scaleTotalValue.Y - scaledValue.Y) < Math.Abs(speedScale.Y)) { Scale = new Vector2(Scale.X, newscale.Y); } else { Scale = new Vector2(Scale.X, Scale.Y + speedScale.Y); scaledValue.Y += Math.Abs(speedScale.Y); } } if (Scale.X == newscale.X && Scale.Y == newscale.Y) { scaleto.IsDone = true; scaleto.IsDoing = false; } } }
public virtual void AddScaleTo(ScaleTo scaleto) { _scaleList.Add(scaleto); }
private void RunScaleTo(ref ScaleTo scaleto) { var time = scaleto.Time; var newscale = scaleto.NextScale; if (time == 0) { this.Scale = newscale; scaleto.IsDone = true; scaleto.IsDoing = false; return; } if(!scaleto.IsDoing) { scaleto.IsDoing = true; speedScale.X = (newscale.X - Scale.X) / (time * 60); speedScale.Y = (newscale.Y - Scale.Y) / (time * 60); scaleTotalValue.X = Math.Abs(newscale.X - Scale.X); scaleTotalValue.Y = Math.Abs(newscale.Y - Scale.Y); scaledValue = Vector2.Zero; } if(!scaleto.IsDone) { if ((scaleTotalValue.X >= scaledValue.X)) { if (Math.Abs(scaleTotalValue.X - scaledValue.X) < Math.Abs(speedScale.X)) { Scale = new Vector2(newscale.X, Scale.Y); } else { Scale = new Vector2(Scale.X + speedScale.X, Scale.Y); scaledValue.X += Math.Abs(speedScale.X); } } if (scaleTotalValue.Y >= scaledValue.Y) { if (Math.Abs(scaleTotalValue.Y - scaledValue.Y) < Math.Abs(speedScale.Y)) { Scale = new Vector2(Scale.X, newscale.Y); } else { Scale = new Vector2(Scale.X, Scale.Y + speedScale.Y); scaledValue.Y += Math.Abs(speedScale.Y); } } if (Scale.X == newscale.X && Scale.Y == newscale.Y) { scaleto.IsDone = true; scaleto.IsDoing = false; } } }
public virtual void AddScaleTo(ScaleTo scaleto) { Sprite.AddScaleTo(scaleto); }