veloren/common/src/terrain/mod.rs
2019-06-13 11:59:05 +01:00

65 lines
1.3 KiB
Rust

pub mod biome;
pub mod block;
pub mod chonk;
pub mod structure;
// Reexports
pub use self::{biome::BiomeKind, block::Block, structure::Structure};
use crate::{vol::VolSize, volumes::vol_map_2d::VolMap2d};
use serde_derive::{Deserialize, Serialize};
use vek::*;
// TerrainChunkSize
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TerrainChunkSize;
impl VolSize for TerrainChunkSize {
const SIZE: Vec3<u32> = Vec3 {
x: 32,
y: 32,
z: 32,
};
}
// TerrainChunkMeta
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TerrainChunkMeta {
name: Option<String>,
biome: BiomeKind,
}
impl TerrainChunkMeta {
pub fn new(name: Option<String>, biome: BiomeKind) -> Self {
Self {
name,
biome,
}
}
pub fn void() -> Self {
Self {
name: None,
biome: BiomeKind::Void,
}
}
pub fn name(&self) -> &str {
self.name
.as_ref()
.map(|s| s.as_str())
.unwrap_or("Wilderness")
}
pub fn biome(&self) -> BiomeKind {
self.biome
}
}
// Terrain type aliases
pub type TerrainChunk = chonk::Chonk; //Chunk<Block, TerrainChunkSize, TerrainChunkMeta>;
pub type TerrainMap = VolMap2d<TerrainChunk, TerrainChunkSize>;