write a bunch of entities
This commit is contained in:
parent
8daff7bde3
commit
861ce57e63
@ -32,6 +32,32 @@ fn ingest_vertex(
|
||||
})
|
||||
}
|
||||
|
||||
fn add_brush<'a>(mesh_deferred_loader:&mut MeshDeferredLoader<&'a str>,world_models:&mut Vec<model::Model>,model:&'a str,origin:vbsp::Vector,rendercolor:vbsp::Color,attributes:gameplay_attributes::CollisionAttributesId){
|
||||
//The first character of brush.model is '*'
|
||||
let mesh=match model.split_at(1){
|
||||
("*",id_str)=>match id_str.parse(){
|
||||
Ok(mesh_id)=>model::MeshId::new(mesh_id),
|
||||
Err(e)=>{
|
||||
println!("Brush model int parse error: {e} model={model}");
|
||||
return;
|
||||
},
|
||||
},
|
||||
_=>mesh_deferred_loader.acquire_mesh_id(model),
|
||||
};
|
||||
world_models.push(model::Model{
|
||||
mesh,
|
||||
attributes,
|
||||
transform:integer::Planar64Affine3::from_translation(
|
||||
valve_transform(origin.into())
|
||||
),
|
||||
color:(glam::Vec3::from_array([
|
||||
rendercolor.r as f32,
|
||||
rendercolor.g as f32,
|
||||
rendercolor.b as f32
|
||||
])/255.0).extend(1.0),
|
||||
});
|
||||
}
|
||||
|
||||
pub fn convert<'a>(
|
||||
bsp:&'a crate::Bsp,
|
||||
render_config_deferred_loader:&mut RenderConfigDeferredLoader<Cow<'a,str>>,
|
||||
@ -134,34 +160,46 @@ pub fn convert<'a>(
|
||||
color:glam::Vec4::W,
|
||||
});
|
||||
|
||||
const WHITE:vbsp::Color=vbsp::Color{r:255,g:255,b:255};
|
||||
for raw_ent in bsp.entities.iter(){
|
||||
match raw_ent.parse(){
|
||||
// func_brush
|
||||
Ok(vbsp::css::Entity::FuncBrush(brush))=>{
|
||||
//The first character of brush.model is '*'
|
||||
match brush.model[1..].parse(){
|
||||
Ok(mesh_id)=>{
|
||||
world_models.push(model::Model{
|
||||
mesh:model::MeshId::new(mesh_id),
|
||||
attributes:ATTRIBUTE_DECORATION,
|
||||
transform:integer::Planar64Affine3::from_translation(
|
||||
valve_transform(brush.origin.into())
|
||||
),
|
||||
color:(glam::Vec3::from_array([
|
||||
brush.rendercolor.r as f32,
|
||||
brush.rendercolor.g as f32,
|
||||
brush.rendercolor.b as f32
|
||||
])/255.0).extend(1.0),
|
||||
});
|
||||
},
|
||||
Err(e)=>{
|
||||
println!("Brush model int parse error: {e}");
|
||||
},
|
||||
}
|
||||
},
|
||||
// func_illusionary
|
||||
// func_wall
|
||||
// func_wall_toggle
|
||||
Ok(vbsp::css::Entity::Cycler(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,brush.rendercolor,ATTRIBUTE_DECORATION),
|
||||
// Ok(vbsp::css::Entity::EnvSprite(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,brush.rendercolor,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::FuncBreakable(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,brush.rendercolor,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::FuncBrush(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,brush.rendercolor,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::FuncButton(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,brush.rendercolor,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::FuncDoor(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,brush.rendercolor,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::FuncDoorRotating(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,brush.rendercolor,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::FuncIllusionary(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,brush.rendercolor,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::FuncMonitor(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,brush.rendercolor,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::FuncMovelinear(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,brush.rendercolor,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::FuncPhysbox(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,brush.rendercolor,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::FuncPhysboxMultiplayer(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,brush.rendercolor,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::FuncRotButton(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,WHITE,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::FuncRotating(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,brush.rendercolor,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::FuncTracktrain(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,brush.rendercolor,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::FuncTrain(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,brush.rendercolor,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::FuncWall(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin.unwrap_or_default(),brush.rendercolor,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::FuncWallToggle(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin.unwrap_or_default(),brush.rendercolor,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::FuncWaterAnalog(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,brush.rendercolor.unwrap_or(WHITE),ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::PropDoorRotating(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,WHITE,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::PropDynamic(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,WHITE,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::PropDynamicOverride(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,WHITE,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::PropPhysics(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,WHITE,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::PropPhysicsMultiplayer(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,WHITE,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::PropPhysicsOverride(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,WHITE,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::PropRagdoll(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,WHITE,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::TriggerGravity(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,WHITE,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::TriggerHurt(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,WHITE,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::TriggerLook(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,WHITE,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::TriggerMultiple(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model.unwrap_or_default(),brush.origin,WHITE,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::TriggerOnce(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,WHITE,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::TriggerProximity(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,WHITE,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::TriggerPush(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,WHITE,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::TriggerSoundscape(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,WHITE,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::TriggerTeleport(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model.unwrap_or_default(),brush.origin,WHITE,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::TriggerVphysicsMotion(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,WHITE,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::TriggerWind(brush))=>add_brush(mesh_deferred_loader,&mut world_models,brush.model,brush.origin,WHITE,ATTRIBUTE_DECORATION),
|
||||
Ok(vbsp::css::Entity::InfoPlayerCounterterrorist(spawn))=>{
|
||||
found_spawn=Some(valve_transform(spawn.origin.into()));
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user