Пример #1
0
 private void ProcessAnimationEvents()
 {
     for (int index1 = 0; index1 < this.mAnimationStates.Count; ++index1)
     {
         AnimationPlayer.AnimationStateSource mAnimationState = this.mAnimationStates[index1];
         AnimDef clip   = mAnimationState.Clip;
         float   length = clip.Length;
         if ((double)mAnimationState.Weight > 0.0 && clip.events != null)
         {
             for (int index2 = 0; index2 < clip.events.Length; ++index2)
             {
                 AnimEvent e = clip.events[index2];
                 if (!Object.op_Equality((Object)e, (Object)null) && this.IsEventAllowed(e))
                 {
                     float num1 = Mathf.Min(e.Start, length);
                     float num2 = Mathf.Min(e.End, length);
                     float num3 = mAnimationState.WrapMode != 2 || (double)mAnimationState.Time >= (double)mAnimationState.TimeOld ? mAnimationState.TimeOld : mAnimationState.TimeOld - length;
                     if ((double)num1 < (double)length)
                     {
                         if ((double)num3 <= (double)num1 && (double)num1 < (double)mAnimationState.Time)
                         {
                             this.OnEventStart(e, mAnimationState.Weight);
                             e.OnStart(((Component)this).get_gameObject());
                         }
                     }
                     else if ((double)num3 < (double)num1 && (double)num1 <= (double)mAnimationState.Time)
                     {
                         this.OnEventStart(e, mAnimationState.Weight);
                         e.OnStart(((Component)this).get_gameObject());
                     }
                     if ((double)num1 <= (double)mAnimationState.Time && (double)mAnimationState.Time < (double)num2)
                     {
                         float num4 = e.End - e.Start;
                         this.OnEvent(e, mAnimationState.Time, mAnimationState.Weight);
                         e.OnTick(((Component)this).get_gameObject(), (double)num4 <= 0.0 ? 0.0f : (mAnimationState.Time - e.Start) / num4);
                     }
                     if ((double)num2 < (double)length)
                     {
                         if ((double)num3 <= (double)num2 && (double)num2 < (double)mAnimationState.Time)
                         {
                             this.OnEventEnd(e, mAnimationState.Weight);
                             e.OnEnd(((Component)this).get_gameObject());
                         }
                     }
                     else if ((double)num3 < (double)num2 && (double)num2 <= (double)mAnimationState.Time)
                     {
                         this.OnEventEnd(e, mAnimationState.Weight);
                         e.OnEnd(((Component)this).get_gameObject());
                     }
                 }
             }
         }
     }
 }