3 unstable releases

0.2.1 Jan 19, 2021
0.1.1 Jan 3, 2021
0.1.0 Jan 3, 2021

#10 in #eq

MIT license

71KB
1.5K SLoC

Crates.io Docs.rs

eq_wld

An Everquest .wld file loader

This is a work in progress but already loads enough data from wld files to be able to do some basic rendering of models. The interface has been heavily influenced by the glTF crate. Parts of the wld file format are still not well understood and future understanding may influence the api of this crate.

Examples

let archive = eq_archive::read("gfaydark.s3d").unwrap();
let wld_data = archive.get("gfaydark.wld").unwrap();

let wld = eq_wld::load(&wld_data).unwrap();

// Iterate over meshes
for mesh in wld.meshes() {
    let name = mesh.name();
    let positions = mesh.positions();
    let normals = mesh.normals();
    let texture_coordinates = mesh.texture_coordinates();
    let indices = mesh.indices();
    let center = mesh.center();
    ...
}

// Iterate over materials
for material in wld.materials() {
    let name = material.name();
    let texture = material.base_color_texture();
    let texture_source = texture.source();
    ...
}

Acknowledgements

This project wouldn't have been possible without Windcatcher's WLD File Reference. Some documentation has been reproduced as comments within the parser module. Names of file fragments have been changed when another term from the glTF reference seemed like a better fit. The goal is that this will be usable in more modern engines and hopefully the names used are more familiar in that context.

Dependencies

~3–12MB
~118K SLoC