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