/// <summary>
 /// Execute the Abilities effect.
 /// </summary>
 /// <param name="name">The ability name.</param>
 public UnitFlags Execute(UnitManager source, Vector3 mousePos)
 {
     if ((source.Flags & disableFlags) == 0) {
         cooldown = cooldownTime / source.Stats.cooldownRate;
         targetPos = mousePos;
         abilityFlags = new UnitFlags(windup.Start (source, mousePos, ref current));
         if (current.endOnCollision) {
             source.AddCollisionCallback (NextPhase);
         }
         return abilityFlags;
     } else {
         return null;
     }
 }
 public UnitFlags NextPhase(UnitManager source)
 {
     if (current != null) {
         abilityFlags.Flags = current.End (source, targetPos, ref current);
         if (current == null) {
             return abilityFlags;
         } else {
             if (current.endOnCollision) {
                 source.AddCollisionCallback (NextPhase);
             }
             return null;
         }
     }
     return null;
 }