use glam::IVec3;
use crate::block::material::Material;
use crate::block;
use super::World;
impl World {
pub fn get_block_material(&self, pos: IVec3) -> Material {
self.get_block(pos).map(|(id, _)| block::material::get_material(id)).unwrap_or_default()
}
pub fn is_block_replaceable(&self, pos: IVec3) -> bool {
if let Some((id, _)) = self.get_block(pos) {
block::material::get_material(id).is_replaceable()
} else {
false
}
}
pub fn is_block_opaque_cube(&self, pos: IVec3) -> bool {
if let Some((id, _)) = self.get_block(pos) {
block::material::is_opaque_cube(id)
} else {
false
}
}
pub fn is_block_solid(&self, pos: IVec3) -> bool {
if let Some((id, _)) = self.get_block(pos) {
block::material::get_material(id).is_solid()
} else {
false
}
}
#[inline]
pub fn is_block_air(&self, pos: IVec3) -> bool {
if let Some((id, _)) = self.get_block(pos) {
id == block::AIR
} else {
true
}
}
#[inline]
pub fn is_block(&self, pos: IVec3, id: u8) -> bool {
if let Some((pos_id, _)) = self.get_block(pos) {
pos_id == id
} else {
false }
}
}