public void OnSpawnNewLane(Lane origin) { Lane prefabTypeToSpawn = Utilities.RandomFromArray(lanePrefabs); Lane newLane = Instantiate(prefabTypeToSpawn.gameObject).GetComponent <Lane>(); newLane.transform.position = origin.EndPoint.position - newLane.StartPoint.localPosition; newLane.OnSpawnNextLane += OnSpawnNewLane; newLane.Spawn(); spawnedLanes.Add(newLane); if (spawnedLanes.Count > maxAllowedLanes) { Lane firstLane = spawnedLanes[0]; firstLane.OnSpawnNextLane -= OnSpawnNewLane; firstLane.Despawn(); spawnedLanes.Remove(firstLane); } }