1 unstable release
0.1.0 | Dec 31, 2024 |
---|
#789 in Parser implementations
121 downloads per month
81KB
1.5K
SLoC
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)?;
// Access and modify the VMF data
println!("Map Version: {}", vmf_file.versioninfo.map_version);
// Find info_player_start entity
if let Some(player_start) = vmf_file.entities.find_by_classname("info_player_start").next() {
println!("Found player start: {:?}", player_start);
}
// Add a new entity
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);
// Save the modified VMF file
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.
Dependencies
~3–4.5MB
~84K SLoC