cleanup transform

This commit is contained in:
Robin Appelman 2022-03-19 14:44:50 +01:00
commit 422df74509
2 changed files with 4 additions and 20 deletions

1
Cargo.lock generated
View file

@ -2636,6 +2636,7 @@ dependencies = [
"binrw", "binrw",
"bitflags", "bitflags",
"bv", "bv",
"cgmath",
"lzma-rs", "lzma-rs",
"num_enum", "num_enum",
"static_assertions", "static_assertions",

View file

@ -2,7 +2,6 @@ mod camera;
mod loader; mod loader;
use camera::FirstPerson; use camera::FirstPerson;
use cgmath::Euler;
use itertools::Either; use itertools::Either;
use loader::Loader; use loader::Loader;
use std::env::args; use std::env::args;
@ -312,25 +311,9 @@ fn model_to_mesh(model: Handle<vbsp::data::Model>) -> CPUMesh {
fn load_prop(loader: &Loader, prop: Handle<StaticPropLump>) -> Result<CPUMesh, Error> { fn load_prop(loader: &Loader, prop: Handle<StaticPropLump>) -> Result<CPUMesh, Error> {
let mut mesh = load_prop_mesh(loader, prop.model())?; let mut mesh = load_prop_mesh(loader, prop.model())?;
let translation = Mat4::from_translation(map_coords(prop.origin).into()); let transform =
// manually do axis one by one as source seems to do roll, patch, yaw Mat4::from_translation(map_coords(prop.origin).into()) * Mat4::from(prop.rotation());
// while cgmath does yaw, pitch, roll (as directx does?) mesh.transform(&transform);
mesh.transform(&Mat4::from(Euler {
x: degrees(0.0),
y: degrees(0.0),
z: degrees(prop.angles[2]),
}));
mesh.transform(&Mat4::from(Euler {
x: degrees(prop.angles[0]),
y: degrees(0.0),
z: degrees(0.0),
}));
mesh.transform(&Mat4::from(Euler {
x: degrees(0.0),
y: degrees(prop.angles[1]),
z: degrees(0.0),
}));
mesh.transform(&translation);
Ok(mesh) Ok(mesh)
} }