/// <summary>
 ///   An empty default MapVoxelMesh.
 /// </summary>
 public MapVoxelMesh()
 {
   this._chunks = new Dictionary<VoxelLocation, IVoxelMesh>();
   this._chunkBuilder = new OctreeChunckBuilder();
   this._max = new VoxelLocation();
   this._min = new VoxelLocation();
 }
    /// <summary>
    ///   Copy an existing MapVoxelMesh.
    /// </summary>
    /// <param name="toCopy"></param>
    public MapVoxelMesh(MapVoxelMesh toCopy)
    {
      this._chunks = new Dictionary<VoxelLocation, IVoxelMesh>();
      this._chunkBuilder = (IChunckBuilder)toCopy._chunkBuilder.Copy();
      this._max = new VoxelLocation(toCopy._max);
      this._min = new VoxelLocation(toCopy._min);

      this.Copy(toCopy.Start, toCopy.End, toCopy.Start, toCopy);
    }
    /// <summary>
    ///   Copy an existing VoxelMesh with a custom chunck configuration.
    /// </summary>
    /// <param name="toCopy"></param>
    /// <param name="builder"></param>
    public MapVoxelMesh(IVoxelMesh toCopy, IChunckBuilder builder)
    {
      this._chunks = new Dictionary<VoxelLocation, IVoxelMesh>();
      this._chunkBuilder = builder;

      this.Copy(toCopy.Start, toCopy.End, toCopy.Start, toCopy);
      this.EvaluateSize();
    }
 /// <summary>
 ///   Create a MapVoxelMesh with a custom chunck configuration.
 /// </summary>
 /// <param name="builder"></param>
 public MapVoxelMesh(IChunckBuilder builder)
 {
   this._chunks = new Dictionary<VoxelLocation, IVoxelMesh>();
   this._chunkBuilder = builder;
   this._max = new VoxelLocation();
   this._min = new VoxelLocation();
 }