public void CreateMeshTerrainDataObject() { MeshTerrainData meshTerrainData = CreateInstance <MeshTerrainData>(); if (!AssetDatabase.IsValidFolder("Assets/MeshTerrainData")) { AssetDatabase.CreateFolder("Assets", "MeshTerrainData"); } string filename = "MeshTerrainData_" + Guid.NewGuid() + ".asset"; AssetDatabase.CreateAsset(meshTerrainData, "Assets/MeshTerrainData/" + filename); MeshTerrainData loadedMeshTerrainData = AssetDatabase.LoadAssetAtPath <MeshTerrainData>("Assets/MeshTerrainData/" + filename); _meshTerrain.MeshTerrainData = loadedMeshTerrainData; SetSceneDirty(); }
void DrawSettingsInspector() { GUILayout.BeginVertical("box"); EditorGUILayout.LabelField("Settings", LabelStyle); EditorGUI.BeginChangeCheck(); GUILayout.BeginHorizontal(); _meshTerrain.MeshTerrainData = EditorGUILayout.ObjectField("Mesh terrain data", _meshTerrain.MeshTerrainData, typeof(MeshTerrainData), true) as MeshTerrainData; if (GUILayout.Button("Create MeshTerrainData object")) { CreateMeshTerrainDataObject(); } GUILayout.EndHorizontal(); if (EditorGUI.EndChangeCheck()) { if (_meshTerrain.MeshTerrainData) { _meshTerrain.RefreshTerrainData(); } } EditorGUILayout.HelpBox( "Create and drop a MeshTerrainData object here. This will store the generated mesh terrain data.", MessageType.Info); GUILayout.EndVertical(); GUILayout.BeginVertical("box"); EditorGUILayout.LabelField("Spawning", LabelStyle); EditorGUI.BeginChangeCheck(); _meshTerrain.MultiLevelRaycast = EditorGUILayout.Toggle("Multi level spawning", _meshTerrain.MultiLevelRaycast); EditorGUILayout.HelpBox( "Enabling multi level spawning will spawn vegetation on all intercecting levels in the mesh.", MessageType.Info); if (EditorGUI.EndChangeCheck()) { VegetationStudioManager.ClearCache(); EditorUtility.SetDirty(_meshTerrain); } GUILayout.EndVertical(); GUILayout.BeginVertical("box"); _meshTerrain.AutoAddToVegegetationSystem = EditorGUILayout.Toggle("Add/Remove at Enable/Disable", _meshTerrain.AutoAddToVegegetationSystem); EditorGUILayout.HelpBox("When set the terrain will add and remove itself when enabled/disabled. This will only work if automatic area calculation is disabled on the VegetationSystem. This is only done in playmode and builds", MessageType.Info); //_meshTerrain.ApplyFloatingOriginOffset = EditorGUILayout.Toggle("Apply floating origin at enable.", _meshTerrain.ApplyFloatingOriginOffset); //EditorGUILayout.HelpBox("Disable this if the loaded terrain is instantiated at original location and then moved to match floating origin.", MessageType.Info); GUILayout.EndVertical(); GUILayout.BeginVertical("box"); EditorGUILayout.LabelField("Info", LabelStyle); MeshTerrainData meshTerrainData = _meshTerrain.MeshTerrainData; if (meshTerrainData != null) { EditorGUILayout.LabelField("Nodes: " + meshTerrainData.lNodes.Count, LabelStyle); EditorGUILayout.LabelField("Triangles: " + meshTerrainData.lPrims.Count, LabelStyle); } GUILayout.EndVertical(); }