mirror of
https://codeberg.org/icewind/vbspview.git
synced 2026-06-03 18:24:09 +02:00
prop skin index
This commit is contained in:
parent
b4ebf00889
commit
d2a54cec8b
1 changed files with 14 additions and 2 deletions
16
src/bsp.rs
16
src/bsp.rs
|
|
@ -5,6 +5,7 @@ use three_d::{
|
||||||
Color, CpuMaterial, CpuMesh, CpuModel, CpuTexture, Indices, Mat4, Positions, TextureData, Vec2,
|
Color, CpuMaterial, CpuMesh, CpuModel, CpuTexture, Indices, Mat4, Positions, TextureData, Vec2,
|
||||||
Vec3,
|
Vec3,
|
||||||
};
|
};
|
||||||
|
use tracing::error;
|
||||||
use vbsp::{Bsp, Face, Handle, StaticPropLump};
|
use vbsp::{Bsp, Face, Handle, StaticPropLump};
|
||||||
use vmdl::mdl::Mdl;
|
use vmdl::mdl::Mdl;
|
||||||
use vmdl::vtx::Vtx;
|
use vmdl::vtx::Vtx;
|
||||||
|
|
@ -132,7 +133,11 @@ fn load_props<'a, I: Iterator<Item = Handle<'a, StaticPropLump>>>(
|
||||||
let model = load_prop(loader, prop.model())?;
|
let model = load_prop(loader, prop.model())?;
|
||||||
let transform =
|
let transform =
|
||||||
Mat4::from_translation(map_coords(prop.origin)) * Mat4::from(prop.rotation());
|
Mat4::from_translation(map_coords(prop.origin)) * Mat4::from(prop.rotation());
|
||||||
Ok(ModelData { model, transform })
|
Ok(ModelData {
|
||||||
|
model,
|
||||||
|
transform,
|
||||||
|
skin: prop.skin,
|
||||||
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
props
|
props
|
||||||
|
|
@ -152,6 +157,7 @@ fn load_prop(loader: &Loader, name: &str) -> Result<vmdl::Model, Error> {
|
||||||
struct ModelData {
|
struct ModelData {
|
||||||
model: vmdl::Model,
|
model: vmdl::Model,
|
||||||
transform: Mat4,
|
transform: Mat4,
|
||||||
|
skin: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn prop_to_model(prop: ModelData, loader: &Loader) -> CpuModel {
|
fn prop_to_model(prop: ModelData, loader: &Loader) -> CpuModel {
|
||||||
|
|
@ -159,7 +165,13 @@ fn prop_to_model(prop: ModelData, loader: &Loader) -> CpuModel {
|
||||||
let normal_transform = transform.invert().unwrap().transpose() * -1.0;
|
let normal_transform = transform.invert().unwrap().transpose() * -1.0;
|
||||||
let model = prop.model;
|
let model = prop.model;
|
||||||
|
|
||||||
let skin = model.skin_tables().next().unwrap();
|
let skin = match model.skin_tables().nth(prop.skin as usize) {
|
||||||
|
Some(skin) => skin,
|
||||||
|
None => {
|
||||||
|
error!(index = prop.skin, "invalid skin index");
|
||||||
|
model.skin_tables().next().unwrap()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
let geometries = model
|
let geometries = model
|
||||||
.meshes()
|
.meshes()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue