Crates.io | eq_wld |
lib.rs | eq_wld |
version | 0.2.1 |
source | src |
created_at | 2021-01-03 00:15:26.85036 |
updated_at | 2021-01-19 03:01:36.184426 |
description | An Everquest .wld file loader |
homepage | |
repository | https://github.com/cjab/eq_wld |
max_upload_size | |
id | 330794 |
size | 71,884 |
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.
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();
...
}
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.