int placeChildren(Tech tech, int layer)
 {
     //Debug.Log("Placing " + tech.name);
     if (tech.GetChildren().Count < 1)
     {
         //Debug.Log("This was called");
         if (layer > maxLayer)
         {
             maxLayer = layer;
         }
         placeTech(tech, layer, nexty);
         int lasty = nexty;
         nexty += ySpace;
         return(lasty);
     }
     else
     {
         List <int> y        = new List <int>();
         int        numchild = 0;
         foreach (Tech child in tech.GetChildren())
         {
             int lasty = placeChildren(child, layer + 1);
             y.Add(lasty);
             numchild++;
         }
         int min = Mathf.Min(y.ToArray());
         int max = Mathf.Max(y.ToArray());
         if (max + 30 > maxY)
         {
             maxY = max + 30;
         }
         //Debug.Log("Min/Max of " + tech.name + " " + min.ToString() + "/" + max.ToString());
         int newPos = ((min + (max + 30)) / 2) - 15;
         placeTech(tech, layer, newPos);
         return(newPos);
     }
 }