Expand description
§World of Warcraft WMO (World Map Object) Parser
This library provides comprehensive support for parsing, editing, validating, and converting World of Warcraft WMO files across all game expansions from Classic to The War Within.
§Features
- Parsing: Read WMO root and group files with full chunk support
- Validation: Verify file integrity and format compliance
- Conversion: Convert between different WoW expansion formats
- Editing: Modify WMO properties, geometry, and metadata
- Export: Export to common 3D formats (OBJ/MTL)
- Type Safety: Strongly typed structures for all WMO components
§Quick Start
use std::fs::File;
use std::io::BufReader;
use wow_wmo::{parse_wmo, WmoVersion};
// Parse a WMO file
let file = File::open("example.wmo")?;
let mut reader = BufReader::new(file);
let wmo = parse_wmo(&mut reader)?;
// Access WMO data
println!("Version: {:?}", wmo.version);
println!("Groups: {}", wmo.groups.len());
println!("Materials: {}", wmo.materials.len());§Example: Validating a WMO File
use std::fs::File;
use std::io::BufReader;
use wow_wmo::{WmoParser, WmoValidator};
// Parse the WMO
let file = File::open("building.wmo")?;
let mut reader = BufReader::new(file);
let wmo = WmoParser::new().parse_root(&mut reader)?;
// Validate it
let validator = WmoValidator::new();
let report = validator.validate_root(&wmo)?;
if !report.errors.is_empty() {
println!("Validation errors found:");
for error in &report.errors {
println!(" - {:?}", error);
}
}
if !report.warnings.is_empty() {
println!("Validation warnings:");
for warning in &report.warnings {
println!(" - {:?}", warning);
}
}§Modules
chunk: Low-level chunk reading/writing functionalityparser: WMO root file parsergroup_parser: WMO group file parsertypes: Common data types (Vec3, Color, BoundingBox, etc.)wmo_types: WMO root file structureswmo_group_types: WMO group file structuresvalidator: File validation and integrity checkingconverter: Version conversion between expansionseditor: High-level editing APIwriter: Binary serializationvisualizer: 3D export functionalityversion: Version detection and feature supporterror: Error types and handling
§Supported Formats
This library supports WMO files from all World of Warcraft expansions:
- Classic (1.12)
- The Burning Crusade (2.4.3)
- Wrath of the Lich King (3.3.5)
- Cataclysm (4.3.4)
- Mists of Pandaria (5.4.8)
- Warlords of Draenor (6.2.4)
- Legion (7.3.5)
- Battle for Azeroth (8.3.7)
- Shadowlands (9.2.7)
- Dragonflight (10.2.0)
- The War Within (11.0+)
Re-exports§
pub use converter::WmoConverter;pub use editor::WmoEditor;pub use error::Result;pub use error::WmoError;pub use group_parser::WmoGroupParser;pub use parser::WmoParser;pub use parser::chunks;pub use types::BoundingBox;pub use types::ChunkId;pub use types::Color;pub use types::Vec3;pub use validator::ValidationError;pub use validator::ValidationReport;pub use validator::ValidationWarning;pub use validator::WmoValidator;pub use version::WmoFeature;pub use version::WmoVersion;pub use visualizer::WmoVisualizer;pub use wmo_types::WmoDoodadDef;pub use wmo_types::WmoDoodadSet;pub use wmo_types::WmoFlags;pub use wmo_types::WmoGroupInfo;pub use wmo_types::WmoHeader;pub use wmo_types::WmoLight;pub use wmo_types::WmoLightProperties;pub use wmo_types::WmoLightType;pub use wmo_types::WmoMaterial;pub use wmo_types::WmoMaterialFlags;pub use wmo_types::WmoPortal;pub use wmo_types::WmoPortalReference;pub use wmo_types::WmoRoot;pub use wmo_group_types::TexCoord;pub use wmo_group_types::WmoBatch;pub use wmo_group_types::WmoBspNode;pub use wmo_group_types::WmoGroup;pub use wmo_group_types::WmoGroupFlags;pub use wmo_group_types::WmoGroupHeader;pub use wmo_group_types::WmoLiquid;pub use wmo_group_types::WmoLiquidVertex;pub use wmo_group_types::WmoMaterialInfo;pub use wmo_group_types::WmoPlane;pub use writer::WmoWriter;pub use chunk::Chunk;pub use chunk::ChunkHeader;
Modules§
- chunk
- converter
- editor
- High-level WMO editing API
- error
- group_
parser - parser
- types
- validator
- version
- visualizer
- WMO visualization and 3D export functionality
- wmo_
group_ types - wmo_
types - writer
Functions§
- convert_
wmo - Convert a WMO file from one version to another
- convert_
wmo_ group - Convert a WMO group file from one version to another
- parse_
wmo - Parse a WMO root file from a reader
- parse_
wmo_ group - Parse a WMO group file from a reader
- validate_
wmo - Validate a WMO file from a reader
- validate_
wmo_ detailed - Perform detailed validation on a WMO root file
- validate_
wmo_ group_ detailed - Perform detailed validation on a WMO group file