private void FastReverse(double time) { IShapeStateModifier mod = this.before.Max; while (mod != null && mod.Time > time) { this.before.Remove(mod); this.after.Add(mod); mod.ReverseAction(this); mod = this.before.Max; } base.Time = time; }
public void AddModifier(IShapeStateModifier modifier) { if (modifier != null) { int comp = this.CompareTo(modifier); if (comp < 0x00) { this.after.Add(modifier); } else { double time = this.Time; this.Reverse(modifier.Time); this.after.Add(modifier); this.Advance(time); } } }
public void Advance(double time) { double checkpoint = this.Checkpoint; IShapeStateModifier mod = this.after.Min; while (mod != null && mod.Time <= time) { this.after.Remove(mod); this.before.Add(mod); mod.Action(this); if (!mod.Reversible) { checkpoint = mod.Time; } mod = this.after.Min; } this.Checkpoint = checkpoint; base.Time = time; }