void Start() { Lanes.Init(); // Location of root/spawn Vector3 Root = -Vector3.one; // Loop over all nodes for (int i = 0; i < transform.childCount; i++) { Transform laneObject = transform.GetChild(i); List <Vector3> positions = new List <Vector3>(); if (laneObject.name == "Root") { Root = laneObject.position; } else { positions.Add(Root); foreach (Transform node in laneObject.GetComponentsInChildren <Transform>()) { if (node == transform || node == laneObject) { continue; } positions.Add(node.position); } (IsLeftTeam ? Lanes.LeftTeam : Lanes.RightTeam).Add(laneObject.name, new Lane(Root, positions.ToArray())); } } }