13 releases (8 breaking)
new 0.10.1 | Feb 13, 2025 |
---|---|
0.9.0 | Feb 12, 2025 |
0.2.0 | Jun 26, 2024 |
#1084 in Parser implementations
1,364 downloads per month
Used in quake_bspinfo
25KB
605 lines
bspparser

Parse Quake .bsp files
Usage
let file = &mut fs::File::open("tests/files/povdmm4.bsp")?;
let bsp = BspFile::parse(file)?;
println!("{:?}", bsp.entities);
[
{
"wad": "gfx/base.wad",
"worldtype": "2",
"sounds": "6",
"message": "The Abandoned Base",
"classname": "worldspawn"
},
{
"classname": "light_fluoro",
"origin": "264 -32 88"
}
// ...
]
Fields
pub struct BspFile {
pub version: BspVersion,
pub header: BspHeader,
pub edge_list: Vec<i32>,
pub edges: Vec<Edge>,
pub entities: Vec<HashMap<String, String>>,
pub faces: Vec<Face>,
pub lightmaps: Vec<u8>,
pub models: Vec<Model>,
pub planes: Vec<Plane>,
pub texture_info: Vec<TextureInfo>,
pub textures: Vec<Texture>,
pub vertices: Vec<Vertex>,
}
Helpers
pub fn get_face_texture(bsp: &BspFile, face: &Face) -> Texture
pub fn get_face_vertices(bsp: &BspFile, face: &Face) -> Vec<Vertex>
pub fn get_face_vertice_indexes(bsp: &BspFile, face: &Face) -> Vec<u32>
pub fn read_texture_image<R>( reader: &mut R, texture: &Texture, scale: TextureScale, ) -> Result<TextureImage>
Dependencies
~2MB
~47K SLoC