Revert "minedmap: store region list in BTreeSet"

This reverts commit b53d34da3d.

With the change of the mipmapper data structure, we need a conversion
step anyways, so we can keep using the Vec before mipmapping.
This commit is contained in:
Matthias Schiffer 2023-07-02 22:19:35 +02:00
parent b63a18ad6f
commit f9fc9efe8d
Signed by: neocturne
GPG key ID: 16EF3F64CB201D9C
4 changed files with 10 additions and 12 deletions

View file

@ -26,8 +26,8 @@ fn main() -> Result<()> {
let config = Config::new(args);
let regions = RegionProcessor::new(&config).run()?;
TileRenderer::new(&config).run(regions.iter().copied())?;
TileMipmapper::new(&config).run(regions)?;
TileRenderer::new(&config).run(&regions)?;
TileMipmapper::new(&config).run(&regions)?;
Ok(())
}

View file

@ -1,4 +1,4 @@
use std::{collections::BTreeSet, path::Path};
use std::path::Path;
use anyhow::{Context, Result};
@ -120,7 +120,7 @@ impl<'a> RegionProcessor<'a> {
/// Iterates over all region files of a Minecraft save directory
///
/// Returns a list of the coordinates of all processed regions
pub fn run(self) -> Result<BTreeSet<TileCoords>> {
pub fn run(self) -> Result<Vec<TileCoords>> {
let read_dir = self.config.region_dir.read_dir().with_context(|| {
format!(
"Failed to read directory {}",
@ -131,7 +131,7 @@ impl<'a> RegionProcessor<'a> {
fs::create_dir_all(&self.config.processed_dir)?;
fs::create_dir_all(&self.config.tile_dir(TileKind::Lightmap, 0))?;
let mut ret = BTreeSet::new();
let mut ret = Vec::new();
for entry in read_dir.filter_map(|entry| entry.ok()).filter(|entry| {
// We are only interested in regular files
@ -153,7 +153,7 @@ impl<'a> RegionProcessor<'a> {
);
}
ret.insert(coords);
ret.push(coords);
}
Ok(ret)

View file

@ -1,5 +1,3 @@
use std::collections::BTreeSet;
use anyhow::{Context, Result};
use minedmap::{io::fs, types::*};
@ -100,11 +98,11 @@ impl<'a> TileMipmapper<'a> {
})
}
pub fn run(self, tiles: BTreeSet<TileCoords>) -> Result<Vec<TileCoordMap>> {
pub fn run(self, tiles: &[TileCoords]) -> Result<Vec<TileCoordMap>> {
let mut tile_stack = {
let mut tile_map = TileCoordMap::default();
for TileCoords { x, z } in tiles {
for &TileCoords { x, z } in tiles {
tile_map.0.entry(z).or_default().insert(x);
}

View file

@ -80,10 +80,10 @@ impl<'a> TileRenderer<'a> {
})
}
pub fn run(self, regions: impl IntoIterator<Item = TileCoords>) -> Result<()> {
pub fn run(self, regions: &[TileCoords]) -> Result<()> {
fs::create_dir_all(&self.config.tile_dir(TileKind::Map, 0))?;
for coords in regions {
for &coords in regions {
if let Err(err) = self.render_tile(coords) {
eprintln!("Failed to render tile {:?}: {:?}", coords, err);
}