示例#1
0
    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);
    }
示例#2
0
 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);
             }
         }
     }
 }
示例#3
0
        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);
                    }
                }
            }
        }