public void CreateTerrain() { Data = new TerrainData(); Data.heightmapResolution = Settings.HeightmapResolution; Data.alphamapResolution = Settings.AlphamapResolution; Data.SetHeights(0, 0, Heightmap); ApplyTextures(Data); Data.size = new Vector3(Settings.Length, Settings.Height, Settings.Length); var newTerrainGameObject = Terrain.CreateTerrainGameObject(Data); newTerrainGameObject.transform.position = new Vector3(Position.X * Settings.Length, 0, Position.Z * Settings.Length); Terrain = newTerrainGameObject.GetComponent <Terrain>(); Terrain.heightmapPixelError = 8; Terrain.materialType = UnityEngine.Terrain.MaterialType.Custom; Terrain.materialTemplate = Settings.TerrainMaterial; Terrain.reflectionProbeUsage = UnityEngine.Rendering.ReflectionProbeUsage.Off; Terrain.Flush(); }
// // #region Heightmap stuff // // public void GenerateHeightmap() // { // var thread = new Thread(GenerateHeightmapThread); // thread.Start(); // } // // private void GenerateHeightmapThread() // { // lock (HeightmapThreadLockObject) // { // var heightmap = new float[Settings.HeightmapResolution, Settings.HeightmapResolution]; // // for (var zRes = 0; zRes < Settings.HeightmapResolution; zRes++) // { // for (var xRes = 0; xRes < Settings.HeightmapResolution; xRes++) // { // var xCoordinate = Position.X + (float)xRes / (Settings.HeightmapResolution - 1); // var zCoordinate = Position.Z + (float)zRes / (Settings.HeightmapResolution - 1); // // heightmap[zRes, xRes] = NoiseProvider.GetValue(xCoordinate, zCoordinate); // } // } // // Heightmap = heightmap; // } // } // // public bool IsHeightmapReady() // { // return Terrain == null && Heightmap != null; // } // // public float GetTerrainHeight(Vector3 worldPosition) // { // return Terrain.SampleHeight(worldPosition); // } // // #endregion // // #region Main terrain generation // // public void CreateTerrain() // { // Data = new TerrainData(); // Data.heightmapResolution = Settings.HeightmapResolution; // Data.alphamapResolution = Settings.AlphamapResolution; // Data.SetHeights(0, 0, Heightmap); // ApplyTextures(Data); // // Data.size = new Vector3(Settings.Length, Settings.Height, Settings.Length); // var newTerrainGameObject = Terrain.CreateTerrainGameObject(Data); // newTerrainGameObject.transform.position = new Vector3(Position.X * Settings.Length, 0, Position.Z * Settings.Length); // // Terrain = newTerrainGameObject.GetComponent<Terrain>(); // Terrain.heightmapPixelError = 8; // Terrain.materialType = UnityEngine.Terrain.MaterialType.Custom; // Terrain.materialTemplate = Settings.TerrainMaterial; // Terrain.reflectionProbeUsage = UnityEngine.Rendering.ReflectionProbeUsage.Off; // Terrain.Flush(); // // } public void CreateTerrain() { var terrainData = new TerrainData(); terrainData.heightmapResolution = Settings.HeightmapResolution; terrainData.alphamapResolution = Settings.AlphamapResolution; var heightmap = GetHeightmap(); terrainData.SetHeights(0, 0, heightmap); terrainData.size = new Vector3(Settings.Length, Settings.Height, Settings.Length); var newTerrainGameObject = Terrain.CreateTerrainGameObject(terrainData); newTerrainGameObject.transform.position = new Vector3(X * Settings.Length, 0, Z * Settings.Length); Terrain = newTerrainGameObject.GetComponent <Terrain>(); Terrain.Flush(); Terrain.transform.parent = Parr.transform; }