vmf-forge

vmf-forge is a Rust library for parsing, manipulating, and serializing Valve Map Format (VMF) files used in Source Engine games. This project is currently work in progress.
Features
- Parses VMF files into convenient Rust data structures.
- Allows modification of VMF data.
- Serializes the modified data back into a VMF file.
Installation
Add vmf-forge to your Cargo.toml:
[dependencies]
vmf-forge = "0.1.0"
Usage Example
use vmf_forge::prelude::*;
use std::fs::File;
fn main() -> Result<(), VmfError> {
let mut file = File::open("your_map.vmf")?;
let vmf_file = VmfFile::parse_file(&mut file)?;
println!("Map Version: {}", vmf_file.versioninfo.map_version);
if let Some(player_start) = vmf_file.entities.find_by_classname("info_player_start").next() {
println!("Found player start: {:?}", player_start);
}
let mut new_entity = Entity::default();
new_entity.key_values.insert("classname".to_string(), "prop_static".to_string());
new_entity.key_values.insert("model".to_string(), "models/props_foliage/urban_tree001a.mdl".to_string());
new_entity.key_values.insert("origin".to_string(), "0 0 0".to_string());
vmf_file.entities.push(new_entity);
vmf_file.save("modified_map.vmf")?;
Ok(())
}
Known Issues
Entity connections are not yet fully supported. The parsing and serialization of connections might produce incorrect results.
Contributing
Contributions are welcome! Please feel free to open issues or submit pull requests.
License
vmf-forge is distributed under the terms of either the MIT license.