private void OnMeshesGUI() { EditorGUILayout.BeginVertical(GUI.skin.box); showMeshes = Foldout(showMeshes, "Meshes"); if (showMeshes) { meshFindType = (MeshToTerrainFindType)EditorGUILayout.EnumPopup("Mesh select type", meshFindType); if (meshFindType == MeshToTerrainFindType.gameObjects) { OnMeshesGUIGameObjects(); } else if (meshFindType == MeshToTerrainFindType.layers) { meshLayer = EditorGUILayout.LayerField("Layer", meshLayer); } direction = (MeshToTerrainDirection)EditorGUILayout.EnumPopup("Direction", direction); if (direction == MeshToTerrainDirection.reversed) { GUILayout.Label("Use the reverse direction, if that model has inverted the normal."); } yRange = (MeshToTerrainYRange)EditorGUILayout.EnumPopup("Y Range", yRange); if (yRange == MeshToTerrainYRange.fixedValue) { yRangeValue = EditorGUILayout.IntField("Y Range Value", yRangeValue); } } EditorGUILayout.EndVertical(); }
private void Load() { baseMapResolution = LoadPref("BaseMapRes", 1024); boundsGameObject = LoadPrefGameObject("BoundsGameObject", null); boundsType = (MeshToTerrainBounds)LoadPref("BoundsType", (int)MeshToTerrainBounds.autoDetect); if (boundsType == MeshToTerrainBounds.selectBounds) { bounds = LoadPref("Bounds", new Bounds(Vector3.zero, Vector3.one)); } detailResolution = LoadPref("DetailMapRes", 1024); direction = (MeshToTerrainDirection)LoadPref("Direction", (int)MeshToTerrainDirection.normal); generateTextures = LoadPref("GenerateTextures", false); heightmapResolution = LoadPref("HeightMapRes", 129); meshes = LoadPref("Meshes", new List <GameObject>()); holes = (MeshToTerrainHoles)LoadPref("Holes", (int)MeshToTerrainHoles.minimumValue); meshFindType = (MeshToTerrainFindType)LoadPref("MeshFindType", (int)MeshToTerrainFindType.gameObjects); meshLayer = LoadPref("MeshLayer", 31); newTerrainCountX = LoadPref("CountX", 1); newTerrainCountY = LoadPref("CountY", 1); resolutionPerPatch = LoadPref("ResPerPath", 16); showMeshes = LoadPref("ShowMeshes", true); showTerrains = LoadPref("ShowTerrains", true); showTextures = LoadPref("ShowTextures", true); smoothingFactor = LoadPref("SmoothingFactor", 1); terrains = LoadPref("Terrains", new List <Terrain>()); terrainType = (MeshToTerrainSelectTerrainType)LoadPref("TerrainType", (int)MeshToTerrainSelectTerrainType.newTerrains); textureEmptyColor = LoadPref("TextureEmptyColor", Color.white); textureHeight = LoadPref("TextureHeight", 1024); textureResolution = LoadPref("TextureResolution", 1024); textureWidth = LoadPref("TextureWidth", 1024); useHeightmapSmoothing = LoadPref("UseHeightmapSmoothing", true); yRange = (MeshToTerrainYRange)LoadPref("YRange", 0); yRangeValue = LoadPref("YRangeValue", yRangeValue); adjustMeshSize = LoadPref("AdjustMeshSize", true); textureCaptureMode = (MeshToTerrainTextureCaptureMode)LoadPref("TextureCaptureMode", (int)MeshToTerrainTextureCaptureMode.camera); }
private void OnGUI() { scrollPos = EditorGUILayout.BeginScrollView(scrollPos); showMeshes = EditorGUILayout.Foldout(showMeshes, "Meshes: "); if (showMeshes) { meshFindType = (MeshToTerrainFindType)EditorGUILayout.EnumPopup("Mesh select type: ", meshFindType); if (meshFindType == MeshToTerrainFindType.gameObjects) { for( int i = 0; i < mesh.Count; i++ ) { mesh[i] = (GameObject)EditorGUILayout.ObjectField( mesh[i], typeof(GameObject), true); if (mesh[i] == null) { mesh.RemoveAt(i); i--; } } GameObject newMesh = (GameObject)EditorGUILayout.ObjectField( null, typeof(GameObject), true); if (newMesh != null) { bool findedMesh = false; foreach(GameObject cMesh in mesh) if (newMesh == cMesh) { findedMesh = true; break; } if (!findedMesh) mesh.Add(newMesh); else EditorUtility.DisplayDialog("Warning", "GameObject already added", "OK"); } } else if (meshFindType == MeshToTerrainFindType.layers) { meshLayer = EditorGUILayout.LayerField("Layer: ", meshLayer); } EditorGUILayout.Space(); } showTerrains = EditorGUILayout.Foldout(showTerrains, "Terrains: "); if (showTerrains) { terrainType = (MeshToTerrainSelectTerrainType) EditorGUILayout.EnumPopup("Type: ", terrainType); if (terrainType == MeshToTerrainSelectTerrainType.existTerrains) { for( int i = 0; i < terrain.Count; i++ ) { terrain[i] = (Terrain)EditorGUILayout.ObjectField(terrain[i], typeof(Terrain), true); if (terrain[i] == null) { terrain.RemoveAt(i); i--; } } Terrain newTerrain = (Terrain) EditorGUILayout.ObjectField(null, typeof(Terrain), true); if (newTerrain != null) { bool findedTerrain = false; foreach(Terrain cTerrain in terrain) if (newTerrain == cTerrain) { findedTerrain = true; break; } if (!findedTerrain) terrain.Add(newTerrain); else EditorUtility.DisplayDialog("Warning", "Terrain already added", "OK"); } } else { GUILayout.BeginHorizontal(); GUILayout.Label("Count terrains. X: ", GUILayout.ExpandWidth(false)); newTerrainCountX = EditorGUILayout.IntField(newTerrainCountX, GUILayout.ExpandWidth(false)); GUILayout.Label("Y: ", GUILayout.ExpandWidth(false)); newTerrainCountY = EditorGUILayout.IntField(newTerrainCountY, GUILayout.ExpandWidth(false)); GUILayout.EndHorizontal(); bounds = (MeshToTerrainBounds)EditorGUILayout.EnumPopup("Bounds: ", bounds); if (bounds == MeshToTerrainBounds.fromGameobject) boundsGameObject = (GameObject)EditorGUILayout.ObjectField("Bounds GameObject: ", boundsGameObject, typeof(GameObject), true); detailResolution = EditorGUILayout.IntField("Detail Resolution", detailResolution); resolutionPerPatch = EditorGUILayout.IntField("Resolution Per Patch", resolutionPerPatch); baseMapResolution = EditorGUILayout.IntField("Base Map Resolution", baseMapResolution); heightmapResolution = EditorGUILayout.IntField("Height Map Resolution", heightmapResolution); } EditorGUILayout.Space(); } showTextures = EditorGUILayout.Foldout(showTextures, "Textures: "); if (showTextures) { textureType = (MeshToTerrainTextureType)EditorGUILayout.EnumPopup("Type: ", textureType); if (textureType == MeshToTerrainTextureType.bakeMainTextures) { textureWidth = EditorGUILayout.IntField("Width: ", textureWidth); textureHeight = EditorGUILayout.IntField("Height: ", textureHeight); textureEmptyColor = EditorGUILayout.ColorField("Empty color: ", textureEmptyColor); } EditorGUILayout.Space(); } EditorGUILayout.EndScrollView(); if (GUILayout.Button("Start", GUILayout.Height(40))) { preStart(); } }
private void OnGUI() { scrollPos = EditorGUILayout.BeginScrollView(scrollPos); showMeshes = EditorGUILayout.Foldout(showMeshes, "Meshes: "); if (showMeshes) { meshFindType = (MeshToTerrainFindType)EditorGUILayout.EnumPopup("Mesh select type: ", meshFindType); if (meshFindType == MeshToTerrainFindType.gameObjects) { for (int i = 0; i < mesh.Count; i++) { mesh[i] = (GameObject)EditorGUILayout.ObjectField(mesh[i], typeof(GameObject), true); if (mesh[i] == null) { mesh.RemoveAt(i); i--; } } GameObject newMesh = (GameObject)EditorGUILayout.ObjectField(null, typeof(GameObject), true); if (newMesh != null) { bool findedMesh = false; foreach (GameObject cMesh in mesh) { if (newMesh == cMesh) { findedMesh = true; break; } } if (!findedMesh) { mesh.Add(newMesh); } else { EditorUtility.DisplayDialog("Warning", "GameObject already added", "OK"); } } } else if (meshFindType == MeshToTerrainFindType.layers) { meshLayer = EditorGUILayout.LayerField("Layer: ", meshLayer); } EditorGUILayout.Space(); } showTerrains = EditorGUILayout.Foldout(showTerrains, "Terrains: "); if (showTerrains) { terrainType = (MeshToTerrainSelectTerrainType)EditorGUILayout.EnumPopup("Type: ", terrainType); if (terrainType == MeshToTerrainSelectTerrainType.existTerrains) { for (int i = 0; i < terrain.Count; i++) { terrain[i] = (Terrain)EditorGUILayout.ObjectField(terrain[i], typeof(Terrain), true); if (terrain[i] == null) { terrain.RemoveAt(i); i--; } } Terrain newTerrain = (Terrain)EditorGUILayout.ObjectField(null, typeof(Terrain), true); if (newTerrain != null) { bool findedTerrain = false; foreach (Terrain cTerrain in terrain) { if (newTerrain == cTerrain) { findedTerrain = true; break; } } if (!findedTerrain) { terrain.Add(newTerrain); } else { EditorUtility.DisplayDialog("Warning", "Terrain already added", "OK"); } } } else { GUILayout.BeginHorizontal(); GUILayout.Label("Count terrains. X: ", GUILayout.ExpandWidth(false)); newTerrainCountX = EditorGUILayout.IntField(newTerrainCountX, GUILayout.ExpandWidth(false)); GUILayout.Label("Y: ", GUILayout.ExpandWidth(false)); newTerrainCountY = EditorGUILayout.IntField(newTerrainCountY, GUILayout.ExpandWidth(false)); GUILayout.EndHorizontal(); bounds = (MeshToTerrainBounds)EditorGUILayout.EnumPopup("Bounds: ", bounds); if (bounds == MeshToTerrainBounds.fromGameobject) { boundsGameObject = (GameObject)EditorGUILayout.ObjectField("Bounds GameObject: ", boundsGameObject, typeof(GameObject), true); } detailResolution = EditorGUILayout.IntField("Detail Resolution", detailResolution); resolutionPerPatch = EditorGUILayout.IntField("Resolution Per Patch", resolutionPerPatch); baseMapResolution = EditorGUILayout.IntField("Base Map Resolution", baseMapResolution); heightmapResolution = EditorGUILayout.IntField("Height Map Resolution", heightmapResolution); } EditorGUILayout.Space(); } showTextures = EditorGUILayout.Foldout(showTextures, "Textures: "); if (showTextures) { textureType = (MeshToTerrainTextureType)EditorGUILayout.EnumPopup("Type: ", textureType); if (textureType == MeshToTerrainTextureType.bakeMainTextures) { textureWidth = EditorGUILayout.IntField("Width: ", textureWidth); textureHeight = EditorGUILayout.IntField("Height: ", textureHeight); textureEmptyColor = EditorGUILayout.ColorField("Empty color: ", textureEmptyColor); } EditorGUILayout.Space(); } EditorGUILayout.EndScrollView(); if (GUILayout.Button("Start", GUILayout.Height(40))) { preStart(); } }