Terrain CreateNeighbor(Terrain parent, Vector3 position) { string uniqueName = "Terrain_" + position.ToString(); if (null != GameObject.Find(uniqueName)) { Debug.LogWarning("Already have a neighbor on that side"); return(null); } TerrainData terrainData = new TerrainData(); terrainData.baseMapResolution = parent.terrainData.baseMapResolution; terrainData.heightmapResolution = parent.terrainData.heightmapResolution; terrainData.alphamapResolution = parent.terrainData.alphamapResolution; if (parent.terrainData.terrainLayers != null && parent.terrainData.terrainLayers.Length > 0) { var newarray = new TerrainLayer[1]; newarray[0] = parent.terrainData.terrainLayers[0]; terrainData.terrainLayers = newarray; } terrainData.SetDetailResolution(parent.terrainData.detailResolution, parent.terrainData.detailResolutionPerPatch); terrainData.name = Guid.NewGuid().ToString(); terrainData.size = parent.terrainData.size; GameObject terrainGO = Terrain.CreateTerrainGameObject(terrainData); terrainGO.name = uniqueName; terrainGO.transform.position = position; Terrain terrain = terrainGO.GetComponent <Terrain>(); terrain.groupingID = parent.groupingID; terrain.drawInstanced = parent.drawInstanced; terrain.allowAutoConnect = parent.allowAutoConnect; string parentTerrainDataDir = Path.GetDirectoryName(AssetDatabase.GetAssetPath(parent.terrainData)); var assetsToSave = new UnityEngine.Object[1 + terrainData.alphamapTextureCount]; assetsToSave[0] = terrainData; for (int i = 0; i < terrainData.alphamapTextureCount; ++i) { assetsToSave[i + 1] = terrainData.alphamapTextures[i]; } AssetDatabase.CreateAssetFromObjects(assetsToSave, Path.Combine(parentTerrainDataDir, "TerrainData_" + terrainData.name + ".asset")); if (m_FillHeightmapUsingNeighbors) { FillHeightmapUsingNeighbors(terrain); } Undo.RegisterCreatedObjectUndo(terrainGO, "Add New neighbor"); return(terrain); }
public void CreateDefaultAsset(string path) { masterGroup = new AudioMixerGroupController(this); masterGroup.name = "Master"; masterGroup.PreallocateGUIDs(); var attenuation = new AudioMixerEffectController("Attenuation"); attenuation.PreallocateGUIDs(); masterGroup.InsertEffect(attenuation, 0); AudioMixerSnapshotController snapshot = new AudioMixerSnapshotController(this); snapshot.name = "Snapshot"; this.snapshots = new AudioMixerSnapshotController[] { snapshot }; this.startSnapshot = snapshot; Object[] objectArray = { this, masterGroup, attenuation, snapshot }; AssetDatabase.CreateAssetFromObjects(objectArray, path); }