fix rotation order, I hate my life

This commit is contained in:
Robin Appelman 2022-03-19 00:58:03 +01:00
commit 8860c38ae0

View file

@ -313,12 +313,23 @@ fn load_prop(loader: &Loader, prop: Handle<StaticPropLump>) -> Result<CPUMesh, E
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 translation = Mat4::from_translation(map_coords(prop.origin).into());
let rotation = Mat4::from(Euler { // manually do axis one by one as source seems to do roll, patch, yaw
x: degrees(prop.angles[0]), // while cgmath does yaw, pitch, roll (as directx does?)
y: degrees(prop.angles[1]), mesh.transform(&Mat4::from(Euler {
x: degrees(0.0),
y: degrees(0.0),
z: degrees(prop.angles[2]), z: degrees(prop.angles[2]),
}); }));
mesh.transform(&rotation); 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); mesh.transform(&translation);
Ok(mesh) Ok(mesh)
} }