diff --git a/lib/bsp_loader/src/brush.rs b/lib/bsp_loader/src/brush.rs index 8e53182..779e77b 100644 --- a/lib/bsp_loader/src/brush.rs +++ b/lib/bsp_loader/src/brush.rs @@ -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)) } diff --git a/lib/bsp_loader/src/bsp.rs b/lib/bsp_loader/src/bsp.rs index d64f5c2..cc10b98 100644 --- a/lib/bsp_loader/src/bsp.rs +++ b/lib/bsp_loader/src/bsp.rs @@ -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