Crate wow_wmo

Source
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 functionality
  • parser: WMO root file parser
  • group_parser: WMO group file parser
  • types: Common data types (Vec3, Color, BoundingBox, etc.)
  • wmo_types: WMO root file structures
  • wmo_group_types: WMO group file structures
  • validator: File validation and integrity checking
  • converter: Version conversion between expansions
  • editor: High-level editing API
  • writer: Binary serialization
  • visualizer: 3D export functionality
  • version: Version detection and feature support
  • error: 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