public void Spawn(string name) { Vector3 newPos = transform.position + Vector3.right * gameareaWidth * 0.5f; float newSplinePos = landscapeSpline.GetNearestSplinePositionWorldSpace(newPos, 30); ArrayList cached = new ArrayList(); foreach (Prop prop in props) { if (prop.name == name) { if (prop.activeProp == true) { cached.Add(prop.gameObject); } else { ResetGameObject(prop.gameObject); PlantGameObjectToLandscape(prop.gameObject, newSplinePos, 0.5f); prop.activeProp = true; if (name == "Rock") { foreach (RageSpline spline in prop.transform.GetComponentsInChildren(typeof(RageSpline))) { //ShuffleSpline(spline, 0.25f); spline.RefreshMesh(); } } if (name == "Cloud") { prop.transform.position += Vector3.up * Random.Range(1f, 30f); } return; } } } if (cached != null) { GameObject src = cached[Random.Range(0, cached.Count - 1)] as GameObject; if (src != null) { GameObject newObj = Instantiate(src) as GameObject; newObj.name = src.name; props.Add(newObj.GetComponent(typeof(Prop)) as Prop); PlantGameObjectToLandscape(newObj, newSplinePos, 0.5f); if (name == "Cloud") { newObj.transform.position += Vector3.up * Random.Range(1f, 30f); } } } }