예제 #1
0
    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);
                }
            }
        }
    }