mod bsp; pub mod data; pub use data::Bsp; #[derive(Debug)] pub enum ReadError{ Bsp(vbsp::BspError), Io(std::io::Error), } impl std::fmt::Display for ReadError{ fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{ write!(f,"{self:?}") } } impl std::error::Error for ReadError{} pub fn read(mut input:R)->Result{ let mut s=Vec::new(); //TODO: mmap input.read_to_end(&mut s).map_err(ReadError::Io)?; vbsp::Bsp::read(s.as_slice()).map(Bsp::new).map_err(ReadError::Bsp) } pub fn convert( bsp:&Bsp, acquire_render_config_id:AcquireRenderConfigId, acquire_mesh_id:AcquireMeshId )->bsp::PartialMap1 where AcquireRenderConfigId:FnMut(Option<&str>)->strafesnet_common::model::RenderConfigId, AcquireMeshId:FnMut(&str)->strafesnet_common::model::MeshId, { bsp::convert_bsp(bsp.as_ref(),acquire_render_config_id,acquire_mesh_id) }