private void InitializeChunks() { float[,] heightMap = DiamondSquare.GenerateHeightMap(exponentialMapSize, noiseIntensity, seed); heightMap = GaussianBlur.ApplyBlur(heightMap, 5); for (int z = 0; z < renderDistance; z++) { for (int x = 0; x < renderDistance; x++) { // Create new chunk var newChunk = new NChunk(CHUNK_WIDTH, CHUNK_HEIGHT, new Vector3Int(x * CHUNK_WIDTH, 0, z * CHUNK_WIDTH), this.transform); _loadedChunks[x, z] = newChunk; for (int vZ = 0; vZ < CHUNK_WIDTH; vZ++) { for (int vX = 0; vX < CHUNK_WIDTH; vX++) { // TODO: Add cancel condition if v_X + (x * CHUNK_WIDTH) and v_Z + (z * CHUNK_WIDTH) are not inside heightmap // Calculate y-value of voxel int y = Mathf.Abs((int)heightMap[vX + (x * CHUNK_WIDTH), vZ + (z * CHUNK_WIDTH)]); // Add voxels to chunk _loadedChunks[x, z].Add(new NVoxel(new Vector3Int(vX, y, vZ), NBlockType.Grass)); } } } } }
private void Initialize() { _mesh = new Mesh(); _vertexesList = new List <Vector3>(); _triangleList = new List <int>(); this.GetComponent <MeshFilter>().mesh = _mesh; _heightMap = DiamondSquare.GenerateHeightMap(8, 34); _heightMap = GaussianBlur.ApplyBlur(_heightMap, gaussRepeatAmount); }
private void OnGUI() { EditorGUILayout.LabelField("Diamond Square", EditorStyles.boldLabel); _gradient = EditorGUILayout.GradientField("Gradient", _gradient); _seed = EditorGUILayout.IntField("Seed", _seed); _exponentialMapSize = EditorGUILayout.IntSlider("Map Size (n-Factor)", _exponentialMapSize, 0, 10); _gaussRepeatTime = EditorGUILayout.IntSlider("Gauss Apply count", _gaussRepeatTime, 0, 20); _noiseIntensity = EditorGUILayout.IntField("Noise Intensity", _noiseIntensity); if (GUILayout.Button("Generate HeightMap")) { _heightMap = DiamondSquare.GenerateHeightMap(_exponentialMapSize, _noiseIntensity, _seed); _mapSize = _heightMap.GetLength(0) - 1; } if (GUILayout.Button("Apply Blur")) { _heightMap = GaussianBlur.ApplyBlur(_heightMap, _gaussRepeatTime); } if (GUILayout.Button("Generate Mesh")) { GenerateMesh(); } if (GUILayout.Button("Generate Terrain")) { GenerateTerrain(); } if (GUILayout.Button("Delete Grid")) { DeleteGrid(); } if (GUILayout.Button("Add Octave")) { AddOctave(); } }