Fixed LoD on test worlds

This commit is contained in:
Joshua Barretto 2022-05-11 19:06:41 +01:00
parent e02f8aee65
commit d530c29d98

View File

@ -1,18 +1,23 @@
#[cfg(not(feature = "worldgen"))]
use crate::test_world::{IndexRef, World};
use common::lod;
use hashbrown::HashMap;
use vek::*;
use world::World;
#[cfg(feature = "worldgen")]
use world::{IndexRef, World};
static EMPTY_ZONE: lod::Zone = lod::Zone {
objects: Vec::new(),
};
#[derive(Default)]
pub struct Lod {
pub zones: HashMap<Vec2<i32>, lod::Zone>,
}
impl Lod {
pub fn from_world(world: &World, index: world::IndexRef) -> Self {
#[cfg(feature = "worldgen")]
pub fn from_world(world: &World, index: IndexRef) -> Self {
let mut zones = HashMap::new();
let zone_sz = (world.sim().get_size() + lod::ZONE_SIZE - 1) / lod::ZONE_SIZE;
@ -27,6 +32,9 @@ impl Lod {
Self { zones }
}
#[cfg(not(feature = "worldgen"))]
pub fn from_world(world: &World, index: IndexRef) -> Self { Self::default() }
pub fn zone(&self, zone_pos: Vec2<i32>) -> &lod::Zone {
self.zones.get(&zone_pos).unwrap_or(&EMPTY_ZONE)
}