private GetDetailLayer ( int xBase, int yBase, int width, int height, int layer ) : ].int[ | ||
xBase | int | |
yBase | int | |
width | int | |
height | int | |
layer | int | |
return | ].int[ |
/// <summary> /// This method allows to save the terrain data (details, heightmaps). /// </summary> public void SaveTerrainData() { if (!IsInitialized) { return; } if (ActiveTerrain == null) { return; } TerrainDetails = new Dictionary <int, int[, ]>(); if (Data == null) { return; } for (int Layer = 0; Layer < Data.detailPrototypes.Length; Layer++) { TerrainDetails.Add(Layer, Data.GetDetailLayer(0, 0, Data.detailWidth, Data.detailHeight, Layer)); } TerrainHeights = Data.GetHeights(0, 0, Data.heightmapWidth, Data.heightmapHeight); }
private static void ResizeDetailResolution(TerrainData terrainData, int resolution, int resolutionPerPatch) { if (resolution == terrainData.detailResolution) { List<int[,]> list = new List<int[,]>(); for (int i = 0; i < terrainData.detailPrototypes.Length; i++) { list.Add(terrainData.GetDetailLayer(0, 0, terrainData.detailWidth, terrainData.detailHeight, i)); } terrainData.SetDetailResolution(resolution, resolutionPerPatch); for (int j = 0; j < list.Count; j++) { terrainData.SetDetailLayer(0, 0, j, list[j]); } } else { terrainData.SetDetailResolution(resolution, resolutionPerPatch); } }
/// <summary> /// Clone TerrainData object /// </summary> /// <param name="source"> /// A <see cref="TerrainData"/> /// </param> /// <param name="detailResolutionPerPatch"> /// A <see cref="System.Int32"/> /// </param> /// <returns> /// A <see cref="TerrainData"/> /// </returns> public static TerrainData Clone(TerrainData source, int detailResolutionPerPatch) { TerrainData dest = new TerrainData(); dest.alphamapResolution = source.alphamapResolution; dest.baseMapResolution = source.baseMapResolution; dest.SetDetailResolution(source.detailResolution, detailResolutionPerPatch); DetailPrototype[] dp = new DetailPrototype[source.detailPrototypes.Length]; for (int i=0; i<dp.Length; i++) dp[i] = new DetailPrototype(); dest.detailPrototypes = dp; for (int i=0; i<dp.Length; i++) { dest.detailPrototypes[i].bendFactor = source.detailPrototypes[i].bendFactor; dest.detailPrototypes[i].dryColor = source.detailPrototypes[i].dryColor; dest.detailPrototypes[i].healthyColor = source.detailPrototypes[i].healthyColor; dest.detailPrototypes[i].maxHeight = source.detailPrototypes[i].maxHeight; dest.detailPrototypes[i].maxWidth = source.detailPrototypes[i].maxWidth; dest.detailPrototypes[i].minHeight = source.detailPrototypes[i].minHeight; dest.detailPrototypes[i].minWidth = source.detailPrototypes[i].minWidth; dest.detailPrototypes[i].noiseSpread = source.detailPrototypes[i].noiseSpread; dest.detailPrototypes[i].prototype = source.detailPrototypes[i].prototype; dest.detailPrototypes[i].prototypeTexture = source.detailPrototypes[i].prototypeTexture; dest.detailPrototypes[i].renderMode = source.detailPrototypes[i].renderMode; dest.detailPrototypes[i].usePrototypeMesh = source.detailPrototypes[i].usePrototypeMesh; dest.SetDetailLayer(0,0,i,source.GetDetailLayer(0,0,source.detailWidth,source.detailHeight,i)); } dest.RefreshPrototypes(); dest.heightmapResolution = source.heightmapResolution; dest.SetHeights(0,0,source.GetHeights(0,0,source.heightmapWidth,source.heightmapHeight)); dest.hideFlags = source.hideFlags; dest.name = source.name+" (Clone)"; dest.size = source.size; dest.splatPrototypes = source.splatPrototypes; dest.treeInstances = source.treeInstances; dest.treePrototypes = source.treePrototypes; dest.wavingGrassAmount = source.wavingGrassAmount; dest.wavingGrassSpeed = source.wavingGrassSpeed; dest.wavingGrassStrength = source.wavingGrassStrength; dest.wavingGrassTint = source.wavingGrassTint; return dest; }
private void ResizeDetailResolution(TerrainData terrainData, int resolution, int resolutionPerPatch) { if (resolution == terrainData.detailResolution) { List<int[,]> numArrayList = new List<int[,]>(); for (int layer = 0; layer < terrainData.detailPrototypes.Length; ++layer) numArrayList.Add(terrainData.GetDetailLayer(0, 0, terrainData.detailWidth, terrainData.detailHeight, layer)); terrainData.SetDetailResolution(resolution, resolutionPerPatch); for (int layer = 0; layer < numArrayList.Count; ++layer) terrainData.SetDetailLayer(0, 0, layer, numArrayList[layer]); } else terrainData.SetDetailResolution(resolution, resolutionPerPatch); }