Esempio n. 1
0
 private void OnEnable()
 {
     wnd   = this;
     prefs = new MeshToTerrainPrefs();
     prefs.Init();
     Repaint();
 }
        private void GenerateTerrain()
        {
            bool   destroyPreview = false;
            string terrainName    = "Generated Terrain";

            TerrainGeneratorPreview terrainPreview = GameObject.FindObjectOfType <TerrainGeneratorPreview>();

            if (terrainPreview == null)
            {
                destroyPreview = true;
                Terrain_PluginManager             manager = GameObject.FindObjectOfType <Terrain_PluginManager>();
                Terrain_ProceduralTerrain_Profile profile = (Terrain_ProceduralTerrain_Profile)manager.Profile;
                profile.terrainGenerator.InstantiatePrefab();
                terrainPreview = profile.terrainGenerator.Instance.GetComponent <TerrainGeneratorPreview>();
            }

            terrainPreview.DrawMapInEditor();

            TerrainData data          = MeshToTerrain.CreateTerrainData(terrainName, 512, Vector3.zero, 0);
            GameObject  terrainObject = UnityEngine.Terrain.CreateTerrainGameObject(data);

            terrainObject.name = terrainName;

            if (destroyPreview)
            {
                GameObject.DestroyImmediate(terrainPreview.gameObject);
            }
        }
Esempio n. 3
0
    private void CreateBoundsHelper()
    {
        GameObject helperGO = new GameObject("Mesh To Terrain Helper");

        helperGO.transform.position = Vector3.zero;
        boundsHelper = helperGO.AddComponent <MeshToTerrainBoundsHelper>();

        boundsHelper.bounds          = hasBounds ? bounds : new Bounds();
        boundsHelper.OnBoundChanged += delegate
        {
            bounds = boundsHelper.bounds;
            MeshToTerrain.RepaintWindow();
        };

        boundsHelper.OnDestroyed += MeshToTerrain.RepaintWindow;

        if (!hasBounds)
        {
            bool findedBounds = false;

            foreach (GameObject meshGO in meshes)
            {
                MeshRenderer[] meshRenderers = meshGO.GetComponentsInChildren <MeshRenderer>();

                foreach (MeshRenderer meshRenderer in meshRenderers)
                {
                    if (!findedBounds)
                    {
                        findedBounds        = true;
                        boundsHelper.bounds = meshRenderer.bounds;
                    }
                    else
                    {
                        boundsHelper.bounds.Encapsulate(meshRenderer.bounds);
                    }
                }
            }

            if (!findedBounds)
            {
                boundsHelper.bounds = new Bounds(Vector3.zero, Vector3.one);
            }
            bounds    = boundsHelper.bounds;
            hasBounds = true;
        }

        Selection.activeGameObject = helperGO;
    }
Esempio n. 4
0
    private static void OpenWindow()
    {
        wnd = GetWindow <MeshToTerrain>(false, "Mesh to Terrain");
        Rect rect = wnd.position;

        if (rect.width < 500)
        {
            rect.width = 500;
        }
        if (rect.height < 400)
        {
            rect.height = 400;
        }
        rect.x       = rect.y = 100;
        wnd.position = rect;
    }