3 unstable releases
| 0.6.1 | Mar 2, 2026 |
|---|---|
| 0.6.0 | Mar 2, 2026 |
| 0.5.2 | Feb 28, 2026 |
| 0.5.1 |
|
| 0.5.0 |
|
#6 in #quake
144 downloads per month
Used in bevy_trenchbroom
60KB
2K
SLoC
About
Library for parsing and writing Quake I and Quake II .map files.
Author
Seth "4LT" Rader
License
CC0 or MIT or Apache-2.0, your choice.
Additional Credits
- ad_heresp2.map - "Imhotep's Legacy"
- Map by Heresy, used here for macro-benchmarking
lib.rs:
Quake source map data structures, parsing, and writing
Example
#
#
#
#
use quake_map::{Entity, WriteError, TextParseError};
let mut map = quake_map::parse(&mut source).map_err(|err| match err {
TextParseError::Io(_) => String::from("Failed to read map"),
l_err@TextParseError::Lexer(_) => l_err.to_string(),
p_err@TextParseError::Parser(_) => p_err.to_string(),
})?;
let mut soldier = Entity::new();
soldier.edict.push((
CString::new("classname").unwrap(),
CString::new("monster_army").unwrap(),
));
soldier.edict.push((
CString::new("origin").unwrap(),
CString::new("128 -256 24").unwrap(),
));
map.entities.push(soldier);
map.write_to(&mut dest).map_err(|err| match err {
WriteError::Io(e) => e.to_string(),
WriteError::Validation(msg) => msg
})?;