Example #1
0
        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();
        }
Example #2
0
        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();
        }