Exemple #1
0
        /// <summary>
        /// Updates this tween given a timespan.
        /// </summary>
        /// <param name="timeSpan">Time to update.</param>
        public void Update(TimeSpan timeSpan)
        {
            var notify = false;

            if (!IsComplete)
            {
                CurrentTime += timeSpan;
                _value       = MathHelper.Clamp((float)(CurrentTime.TotalMilliseconds / TotalTime.TotalMilliseconds), 0.0f,
                                                1.0f);
                for (var index = 0; index < EventListeners.Count; index++)
                {
                    if (!(Value >= EventListeners[index].Time) || EventListeners[index].Fired)
                    {
                        continue;
                    }
                    EventListeners[index] = new EvenTimer
                    {
                        Time      = EventListeners[index].Time,
                        Procedure = EventListeners[index].Procedure,
                        Fired     = true
                    };
                    EventListeners[index].Procedure(this);
                }
            }
            else if (Loop)
            {
                notify = true;
                Reset();
                _positveDirection = !_positveDirection;
            }
            else
            {
                notify = true;
            }
            if (!notify)
            {
                return;
            }
            var remove = new List <Procedure <Tween> >();

            foreach (var listener in CompletionListeners)
            {
                try
                {
                    listener(this);
                }
                catch
                {
                    remove.Add(listener);
                }
            }
            CompletionListeners.RemoveAll(remove.Contains);
            remove.Clear();
        }
Exemple #2
0
 /// <summary>
 /// Resets this tween to it origianal value.
 /// </summary>
 public void Reset()
 {
     _value      = 0.0f;
     CurrentTime = TimeSpan.Zero;
     for (var index = 0; index < EventListeners.Count; index++)
     {
         EventListeners[index] = new EvenTimer
         {
             Time      = EventListeners[index].Time,
             Procedure = EventListeners[index].Procedure,
             Fired     = false
         };
     }
 }