/// <summary>
    /// The first activation.
    /// Called by the channel with the base class.
    /// </summary>
    private void ObjectOnActivated(CombatBaseObject obj)
    {
        cursor = -1;
        doneCount = 0;

        for (int i = 0; i < limit; i++)
        {
            objects[++cursor].Activate();
        }
    }
 /// <summary>
 /// Channel callback with every child object.
 /// When every child object gets done, this function will be called.
 /// </summary>
 /// <param name="obj"></param>
 private void ChildObjectOnDone(CombatBaseObject obj)
 {
     if (++doneCount < objects.Count)
     {
         // call the next
         if (++cursor < objects.Count)
         {
             objects[cursor].Activate();
         }
     }
     else
     {
         // this group is done
         Done();
     }
 }
 private void MainChildObjectOnDone(CombatBaseObject obj)
 {
     done = true;
     End();
 }
 private void ObjectOnActivated(CombatBaseObject obj)
 {
     StartCoroutine(CoroutineBehavior());
 }