public DualContourChunkBuilder(GraphicsDevice device, World world, ITerrainGradientFunction densityGradientFunction, float minimumSolidDensity)
        {
            _device = device;

            _world = world;

            _vertices              = new Dictionary <Chunk, List <VertexPositionNormalColorLight> >();
            _meshVertices          = new Dictionary <Chunk, List <VertexPositionNormalColorLight> >();
            _indices               = new Dictionary <Chunk, List <short> >();
            _positionToIndex       = new Dictionary <Chunk, Dictionary <Vector3I, short> >();
            _intersectingEdges     = new Dictionary <Chunk, HashSet <Edge> >();
            _normalVertices        = new Dictionary <Chunk, List <VertexPositionColor> >();
            _borderEdges           = new Dictionary <Chunk, HashSet <Edge> >();
            _neededBorderPositions = new Dictionary <Chunk, HashSet <Vector3I> >();

            _densityGradientFunction = densityGradientFunction;

            _minimumSolidDensity = minimumSolidDensity;
        }
 public DualContourDeferredColoredChunkSystem(GraphicsDevice device, ContentLibrary contentLibrary, IChunkManager chunkManager, CameraManager cameraManager, World world, ITerrainGradientFunction densityGradientFunction, float minimumSolidDensity)
 {
     _builder  = new DualContourChunkBuilder(device, world, densityGradientFunction, minimumSolidDensity);
     _renderer = new DeferredColoredChunkRenderer(world.EngineConfiguration, contentLibrary, device, cameraManager, chunkManager);
 }