use crate::sim::cell::materials::MaterialId; #[derive(Clone, Copy)] pub struct Cell { pub material: MaterialId, pub flags: u8, pub data: u16, } impl Cell { const FLAG_PARITY: u8 = 0b0000_0001; #[inline] pub fn parity(self) -> u8 { self.flags & Self::FLAG_PARITY } #[inline] pub fn flip_parity(&mut self) { self.flags ^= Self::FLAG_PARITY; } } impl Cell { pub fn void() -> Cell { Cell { material: MaterialId::Void, flags: 0, data: 0, } } pub fn from_material(material: MaterialId) -> Cell { Cell { material, flags: 0, data: 0, } } }