private void _recalculateTerrain() { Vector3Int sizePlusTwo = size + Vector3Int.one * 2; Block[,,] vol = new Block[sizePlusTwo.x, sizePlusTwo.y, sizePlusTwo.z]; for (int y = 0; y < sizePlusTwo.y; y++) { for (int z = 0; z < sizePlusTwo.z; z++) { for (int x = 0; x < sizePlusTwo.x; x++) { Vector3Int voxelPositionInWorldSpace = new Vector3Int ( x + position.x * size.x - 1, y, z + position.y * size.z - 1 ); Block d = World.instance.GetVoxel(voxelPositionInWorldSpace); vol[x, y, z] = d; } } } vox.Create(vol); vertices = vox.vertices.ToArray(); triangles = vox.triangles.ToArray(); normals = vox.normals.ToArray(); uvs = vox.uvs.ToArray(); World.instance.AddChunkToDraw(this); }
public void Load(Voxmap voxmap) { for (var x = 0; x < voxmap.Width; x++) { for (var y = 0; y < voxmap.Height; y++) { for (var z = 0; z < voxmap.Depth; z++) { voxmap[x, y, z] = Voxel.Create(1); } } } }
public void Load(Voxmap voxmap) { var voxelSize = voxmap.VoxelSize; for (var x = 0; x < voxmap.Width; x++) { for (var z = 0; z < voxmap.Depth; z++) { var xSample = voxelSize.x * x; var zSample = voxelSize.z * z; var ySample = Mathf.PerlinNoise(xSample, zSample); float yMax = Mathf.FloorToInt(ySample * voxmap.Height); for (var y = 0; y < yMax; y++) { voxmap[x, y, z] = Voxel.Create(1); } } } }