コード例 #1
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.I))
        {
            allPlanes = LocalObjectBuilder.Instance.GetSortedPlanes();
            vertices  = Utility.CombinePolygons(allPlanes[0], allPlanes[1], 0.2f);
            for (int i = 2; i < allPlanes.Count; i++)
            {
                vertices = Utility.CombinePolygons(vertices, allPlanes[i], 0.2f);
            }

            for (int i = 0; i < vertices.Count; i++)
            {
                Vector3 vert = vertices[i];
                vert.y      = 0f;
                vertices[i] = vert;
            }

            terrainBuilder.boundary = vertices;
            terrainBuilder.CreateTerrain();

            LocalPlane[] planes = FindObjectsOfType <LocalPlane>();
            foreach (LocalPlane plane in planes)
            {
                plane.GetComponent <MeshRenderer>().material = terrainBuilder.GetComponent <MeshRenderer>().material;
            }
        }
    }
コード例 #2
0
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();

        EnvironmentCreation myScript = (EnvironmentCreation)target;

        if (GUILayout.Button("Rebuild Mesh"))
        {
            LocalObjectBuilder localObjBuilder = myScript.GetComponent <LocalObjectBuilder>();
            if (localObjBuilder)
            {
                List <List <Vector3> > sortedPlanes = localObjBuilder.GetSortedPlanes();
                float floor = localObjBuilder.FloorPos;// + FindObjectOfType<LocalPlane>().transform.localScale.y / 2f;

                List <Vector3> vertices = new List <Vector3>();
                vertices = Utility.CombinePolygons(sortedPlanes[0], sortedPlanes[1], 0.2f);
                for (int i = 2; i < sortedPlanes.Count; i++)
                {
                    vertices = Utility.CombinePolygons(vertices, sortedPlanes[i], 0.2f);
                }

                for (int i = 0; i < vertices.Count; i++)
                {
                    Vector3 vert = vertices[i];
                    vert.y      = floor;
                    vertices[i] = vert;
                }

                myScript.boundary = vertices;
            }
            myScript.CreateTerrain();
        }
    }