use glam::IVec3;
use crate::rand::JavaRandom;
use crate::chunk::Chunk;
use crate::world::World;
pub mod math;
pub mod noise;
pub mod dungeon;
pub mod plant;
pub mod vein;
pub mod liquid;
pub mod tree;
pub mod cave;
mod overworld;
pub use overworld::OverworldGenerator;
pub trait ChunkGenerator {
type State: Default;
fn gen_biomes(&self, cx: i32, cz: i32, chunk: &mut Chunk, state: &mut Self::State);
fn gen_terrain(&self, cx: i32, cz: i32, chunk: &mut Chunk, state: &mut Self::State);
fn gen_features(&self, cx: i32, cz: i32, world: &mut World, state: &mut Self::State);
}
pub trait FeatureGenerator {
fn generate(&mut self, world: &mut World, pos: IVec3, rand: &mut JavaRandom) -> bool;
}