public void SetBlock(Chunk chunk, Block block, IndexPosition blockPos)
        {
            if (chunk == null || !chunk.IsBlockCoordInRange(blockPos))
            {
                return;
            }

            operationBatch.Add(new TerrainOperation(chunk, block, blockPos));
        }
        public TerrainOperationBatch GenerateUndo()
        {
            TerrainOperationBatch redo = new TerrainOperationBatch();

            foreach (TerrainOperation op in operations)
            {
                redo.Add(TerrainOperation.CreateUndoFor(op));
            }

            return(redo);
        }