scratchpad: show physics only

This commit is contained in:
Quaternions 2025-02-04 11:09:35 -08:00
parent 4fa0197120
commit 8e70e31e2e
2 changed files with 35 additions and 29 deletions
lib/bsp_loader/src

@ -253,7 +253,10 @@ pub fn brush_to_mesh(bsp:&vbsp::Bsp,brush:&vbsp::Brush)->Result<model::Mesh,Brus
let physics_groups=vec![model::IndexedPhysicsGroup{
groups:vec![model::PolygonGroupId::new(0)],
}];
let graphics_groups=vec![];
let graphics_groups=vec![model::IndexedGraphicsGroup{
render:model::RenderConfigId::new(0),
groups:vec![model::PolygonGroupId::new(0)],
}];
Ok(mb.build(polygon_groups,graphics_groups,physics_groups))
}

@ -46,24 +46,25 @@ pub fn convert<'a>(
const ATTRIBUTE_CONTACT_DEFAULT:gameplay_attributes::CollisionAttributesId=gameplay_attributes::CollisionAttributesId::new(1);
//declare all prop models to Loader
let prop_models=bsp.static_props().map(|prop|{
//get or create mesh_id
let mesh_id=mesh_deferred_loader.acquire_mesh_id(prop.model());
let placement=prop.as_prop_placement();
model::Model{
mesh:mesh_id,
attributes:ATTRIBUTE_DECORATION,
transform:integer::Planar64Affine3::new(
integer::mat3::try_from_f32_array_2d((
glam::Mat3A::from_diagonal(glam::Vec3::splat(placement.scale))
//TODO: figure this out
*glam::Mat3A::from_quat(glam::Quat::from_array(placement.rotation.into()))
).to_cols_array_2d()).unwrap(),
valve_transform(placement.origin.into()),
),
color:glam::Vec4::ONE,
}
}).collect();
let prop_models=Vec::new();
// let prop_models=bsp.static_props().map(|prop|{
// //get or create mesh_id
// let mesh_id=mesh_deferred_loader.acquire_mesh_id(prop.model());
// let placement=prop.as_prop_placement();
// model::Model{
// mesh:mesh_id,
// attributes:ATTRIBUTE_DECORATION,
// transform:integer::Planar64Affine3::new(
// integer::mat3::try_from_f32_array_2d((
// glam::Mat3A::from_diagonal(glam::Vec3::splat(placement.scale))
// //TODO: figure this out
// *glam::Mat3A::from_quat(glam::Quat::from_array(placement.rotation.into()))
// ).to_cols_array_2d()).unwrap(),
// valve_transform(placement.origin.into()),
// ),
// color:glam::Vec4::ONE,
// }
// }).collect();
//TODO: make the main map one single mesh with a bunch of different physics groups and graphics groups
@ -74,7 +75,7 @@ pub fn convert<'a>(
let color=mb.acquire_color_id(glam::Vec4::ONE);
let mut graphics_groups=Vec::new();
let mut render_id_to_graphics_group_id=std::collections::HashMap::new();
//let mut render_id_to_graphics_group_id=std::collections::HashMap::new();
let polygon_groups=world_model.faces().enumerate().map(|(polygon_group_id,face)|{
let polygon_group_id=model::PolygonGroupId::new(polygon_group_id as u32);
let face_texture=face.texture();
@ -104,15 +105,15 @@ pub fn convert<'a>(
//a render config for it, and then returns the id to that render config
let render_id=render_config_deferred_loader.acquire_render_config_id(Some(Cow::Borrowed(face_texture_data.name())));
//deduplicate graphics groups by render id
let graphics_group_id=*render_id_to_graphics_group_id.entry(render_id).or_insert_with(||{
let graphics_group_id=graphics_groups.len();
graphics_groups.push(model::IndexedGraphicsGroup{
render:render_id,
groups:vec![],
});
graphics_group_id
});
graphics_groups[graphics_group_id].groups.push(polygon_group_id);
// let graphics_group_id=*render_id_to_graphics_group_id.entry(render_id).or_insert_with(||{
// let graphics_group_id=graphics_groups.len();
// graphics_groups.push(model::IndexedGraphicsGroup{
// render:render_id,
// groups:vec![],
// });
// graphics_group_id
// });
// graphics_groups[graphics_group_id].groups.push(polygon_group_id);
}
model::PolygonGroup::PolygonList(model::PolygonList::new(polygon_list))
}).collect();
@ -128,6 +129,8 @@ pub fn convert<'a>(
Err(e)=>println!("Brush mesh error: {e}"),
}
}
println!("How many brush: {}",bsp.brushes.len());
println!("Generated brush models: {}",world_meshes.len()-brush_mesh_start_idx);
let world_models:Vec<model::Model>=
//one instance of the main world mesh