示例#1
0
        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;
        }
示例#2
0
 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);
         }
     }
 }
示例#3
0
        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;
        }