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); } }
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; }
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; }