public List<Unit> GetAllNeighborUnits(Unit unit, List<Unit> neighborUnits, bool enableOnly) { if (neighborUnits == null) { neighborUnits = new List<Unit>(); } foreach ( Unit neighbor in unit.GetNeighborUnits(enableOnly) ) { if ( !neighborUnits.Contains(neighbor) ) { neighborUnits.Add(neighbor); List<Unit> nextNeighbors = this.GetAllNeighborUnits(neighbor, neighborUnits, enableOnly); foreach (Unit nextNeighbor in nextNeighbors) { if (!neighborUnits.Contains(nextNeighbor) && nextNeighbor != unit) neighborUnits.Add (nextNeighbor); } } } return neighborUnits; }