public void ForceStart()
 {
     this.time = 0;
     if (this.tracks != null)
     {
         int count = this.tracks.Count;
         for (int i = 0; i < count; i++)
         {
             Track track = this.tracks[i];
             if (!track.execOnForceStopped && !track.execOnActionCompleted && track.waitForConditions == null)
             {
                 track.Start(this);
             }
         }
     }
 }
 public void Process(int _time)
 {
     if (this.tracks != null)
     {
         int count = this.tracks.Count;
         for (int i = 0; i < count; i++)
         {
             Track track = this.tracks[i];
             if (track.waitForConditions == null)
             {
                 if (track.started)
                 {
                     track.Process(_time);
                 }
             }
             else
             {
                 if (this.conditionChanged && !track.started && track.startCount == 0u && track.CheckConditions(this))
                 {
                     track.Start(this);
                     if (!this.loop)
                     {
                         int eventEndTime = track.GetEventEndTime();
                         if (this.length < eventEndTime)
                         {
                             this.length = eventEndTime;
                         }
                     }
                 }
                 if (track.started)
                 {
                     track.Process(track.curTime + this.deltaTime);
                     if (track.curTime > track.GetEventEndTime())
                     {
                         track.Stop(this);
                     }
                 }
             }
         }
     }
     this.conditionChanged = false;
 }