bsp_loader: define all entities

This commit is contained in:
Quaternions 2025-02-27 12:33:24 -08:00
parent dc588ea84d
commit 83a09703d3

@ -182,25 +182,134 @@ pub fn convert<'a>(
const ENTITY_TRIGGER_ATTRIBUTE:gameplay_attributes::CollisionAttributesId=ATTRIBUTE_INTERSECT_DEFAULT;
for raw_ent in &bsp.entities{
match raw_ent.parse(){
Ok(Entity::AmbientGeneric(ambient_generic))=>(),
Ok(Entity::Cycler(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,brush.rendercolor,ENTITY_ATTRIBUTE),
Ok(Entity::EnvBeam(env_beam))=>(),
Ok(Entity::EnvBubbles(env_bubbles))=>(),
Ok(Entity::EnvDetailController(env_detail_controller))=>(),
Ok(Entity::EnvEmbers(env_embers))=>(),
Ok(Entity::EnvEntityMaker(env_entity_maker))=>(),
Ok(Entity::EnvExplosion(env_explosion))=>(),
Ok(Entity::EnvFade(env_fade))=>(),
Ok(Entity::EnvFire(env_fire))=>(),
Ok(Entity::EnvFireTrail(env_fire_trail))=>(),
Ok(Entity::EnvFiresource(env_firesource))=>(),
Ok(Entity::EnvFogController(env_fog_controller))=>(),
Ok(Entity::EnvHudhint(env_hudhint))=>(),
Ok(Entity::EnvLaser(env_laser))=>(),
Ok(Entity::EnvLightglow(env_lightglow))=>(),
Ok(Entity::EnvPhysexplosion(env_physexplosion))=>(),
Ok(Entity::EnvProjectedtexture(env_projectedtexture))=>(),
Ok(Entity::EnvScreenoverlay(env_screenoverlay))=>(),
Ok(Entity::EnvShake(env_shake))=>(),
Ok(Entity::EnvShooter(env_shooter))=>(),
Ok(Entity::EnvSmokestack(env_smokestack))=>(),
Ok(Entity::EnvSoundscape(env_soundscape))=>(),
Ok(Entity::EnvSoundscapeProxy(env_soundscape_proxy))=>(),
Ok(Entity::EnvSoundscapeTriggerable(env_soundscape_triggerable))=>(),
Ok(Entity::EnvSpark(env_spark))=>(),
Ok(Entity::EnvSprite(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,brush.rendercolor.parse().unwrap_or(WHITE),ENTITY_ATTRIBUTE),
Ok(Entity::EnvSpritetrail(env_spritetrail))=>(),
Ok(Entity::EnvSteam(env_steam))=>(),
Ok(Entity::EnvSun(env_sun))=>(),
Ok(Entity::EnvTonemapController(env_tonemap_controller))=>(),
Ok(Entity::EnvWind(env_wind))=>(),
Ok(Entity::FilterActivatorClass(filter_activator_class))=>(),
Ok(Entity::FilterActivatorName(filter_activator_name))=>(),
Ok(Entity::FilterDamageType(filter_damage_type))=>(),
Ok(Entity::FilterMulti(filter_multi))=>(),
Ok(Entity::FuncAreaportal(func_areaportal))=>(),
Ok(Entity::FuncAreaportalwindow(func_areaportalwindow))=>(),
Ok(Entity::FuncBombTarget(func_bomb_target))=>(),
Ok(Entity::FuncBreakable(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,brush.rendercolor,ENTITY_ATTRIBUTE),
Ok(Entity::FuncBreakableSurf(func_breakable_surf))=>(),
Ok(Entity::FuncBrush(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,brush.rendercolor,ENTITY_ATTRIBUTE),
Ok(Entity::FuncButton(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,brush.rendercolor,ENTITY_ATTRIBUTE),
Ok(Entity::FuncBuyzone(func_buyzone))=>(),
Ok(Entity::FuncClipVphysics(func_clip_vphysics))=>(),
Ok(Entity::FuncConveyor(func_conveyor))=>(),
Ok(Entity::FuncDoor(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,brush.rendercolor,ENTITY_ATTRIBUTE),
Ok(Entity::FuncDoorRotating(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,brush.rendercolor,ENTITY_ATTRIBUTE),
Ok(Entity::FuncDustcloud(func_dustcloud))=>(),
Ok(Entity::FuncDustmotes(func_dustmotes))=>(),
Ok(Entity::FuncFishPool(func_fish_pool))=>(),
Ok(Entity::FuncFootstepControl(func_footstep_control))=>(),
Ok(Entity::FuncHostageRescue(func_hostage_rescue))=>(),
Ok(Entity::FuncIllusionary(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,brush.rendercolor,ENTITY_ATTRIBUTE),
Ok(Entity::FuncLod(func_lod))=>(),
Ok(Entity::FuncMonitor(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,brush.rendercolor,ENTITY_ATTRIBUTE),
Ok(Entity::FuncMovelinear(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,brush.rendercolor,ENTITY_ATTRIBUTE),
Ok(Entity::FuncOccluder(func_occluder))=>(),
Ok(Entity::FuncPhysbox(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,brush.rendercolor,ENTITY_ATTRIBUTE),
Ok(Entity::FuncPhysboxMultiplayer(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,brush.rendercolor,ENTITY_ATTRIBUTE),
Ok(Entity::FuncPrecipitation(func_precipitation))=>(),
Ok(Entity::FuncRotButton(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,WHITE,ENTITY_ATTRIBUTE),
Ok(Entity::FuncRotating(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,brush.rendercolor,ENTITY_ATTRIBUTE),
Ok(Entity::FuncSmokevolume(func_smokevolume))=>(),
Ok(Entity::FuncTracktrain(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,brush.rendercolor,ENTITY_ATTRIBUTE),
Ok(Entity::FuncTrain(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,brush.rendercolor,ENTITY_ATTRIBUTE),
Ok(Entity::FuncWall(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin.unwrap_or_default(),brush.rendercolor,ENTITY_ATTRIBUTE),
Ok(Entity::FuncWallToggle(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin.unwrap_or_default(),brush.rendercolor,ENTITY_ATTRIBUTE),
Ok(Entity::FuncWaterAnalog(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,brush.rendercolor.unwrap_or(WHITE),ENTITY_ATTRIBUTE),
Ok(Entity::GamePlayerEquip(game_player_equip))=>(),
Ok(Entity::GameText(game_text))=>(),
Ok(Entity::GameUi(game_ui))=>(),
Ok(Entity::GameWeaponManager(game_weapon_manager))=>(),
Ok(Entity::HostageEntity(hostage_entity))=>(),
Ok(Entity::InfoCameraLink(info_camera_link))=>(),
Ok(Entity::InfoLadder(info_ladder))=>(),
Ok(Entity::InfoLightingRelative(info_lighting_relative))=>(),
Ok(Entity::InfoMapParameters(info_map_parameters))=>(),
Ok(Entity::InfoNode(info_node))=>(),
Ok(Entity::InfoNodeHint(info_node_hint))=>(),
Ok(Entity::InfoParticleSystem(info_particle_system))=>(),
Ok(Entity::InfoPlayerCounterterrorist(spawn))=>{
found_spawn=Some(valve_transform(spawn.origin.into()));
},
Ok(Entity::InfoPlayerLogo(info_player_logo))=>(),
Ok(Entity::InfoPlayerStart(info_player_start))=>(),
Ok(Entity::InfoPlayerTerrorist(spawn))=>{
found_spawn=Some(valve_transform(spawn.origin.into()));
},
Ok(Entity::InfoTarget(info_target))=>(),
Ok(Entity::InfoTeleportDestination(info_teleport_destination))=>(),
Ok(Entity::Infodecal(infodecal))=>(),
Ok(Entity::KeyframeRope(keyframe_rope))=>(),
Ok(Entity::Light(light))=>(),
Ok(Entity::LightEnvironment(light_environment))=>(),
Ok(Entity::LightSpot(light_spot))=>(),
Ok(Entity::LogicAuto(logic_auto))=>(),
Ok(Entity::LogicBranch(logic_branch))=>(),
Ok(Entity::LogicCase(logic_case))=>(),
Ok(Entity::LogicCompare(logic_compare))=>(),
Ok(Entity::LogicMeasureMovement(logic_measure_movement))=>(),
Ok(Entity::LogicRelay(logic_relay))=>(),
Ok(Entity::LogicTimer(logic_timer))=>(),
Ok(Entity::MathCounter(math_counter))=>(),
Ok(Entity::MoveRope(move_rope))=>(),
Ok(Entity::PathTrack(path_track))=>(),
Ok(Entity::PhysBallsocket(phys_ballsocket))=>(),
Ok(Entity::PhysConstraint(phys_constraint))=>(),
Ok(Entity::PhysConstraintsystem(phys_constraintsystem))=>(),
Ok(Entity::PhysHinge(phys_hinge))=>(),
Ok(Entity::PhysKeepupright(phys_keepupright))=>(),
Ok(Entity::PhysLengthconstraint(phys_lengthconstraint))=>(),
Ok(Entity::PhysPulleyconstraint(phys_pulleyconstraint))=>(),
Ok(Entity::PhysRagdollconstraint(phys_ragdollconstraint))=>(),
Ok(Entity::PhysRagdollmagnet(phys_ragdollmagnet))=>(),
Ok(Entity::PhysThruster(phys_thruster))=>(),
Ok(Entity::PhysTorque(phys_torque))=>(),
Ok(Entity::PlayerSpeedmod(player_speedmod))=>(),
Ok(Entity::PlayerWeaponstrip(player_weaponstrip))=>(),
Ok(Entity::PointCamera(point_camera))=>(),
Ok(Entity::PointClientcommand(point_clientcommand))=>(),
Ok(Entity::PointDevshotCamera(point_devshot_camera))=>(),
Ok(Entity::PointServercommand(point_servercommand))=>(),
Ok(Entity::PointSpotlight(point_spotlight))=>(),
Ok(Entity::PointSurroundtest(point_surroundtest))=>(),
Ok(Entity::PointTemplate(point_template))=>(),
Ok(Entity::PointTesla(point_tesla))=>(),
Ok(Entity::PointViewcontrol(point_viewcontrol))=>(),
Ok(Entity::PropDoorRotating(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,WHITE,ENTITY_ATTRIBUTE),
Ok(Entity::PropDynamic(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,WHITE,ENTITY_ATTRIBUTE),
Ok(Entity::PropDynamicOverride(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,WHITE,ENTITY_ATTRIBUTE),
@ -208,6 +317,8 @@ pub fn convert<'a>(
Ok(Entity::PropPhysicsMultiplayer(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,WHITE,ENTITY_ATTRIBUTE),
Ok(Entity::PropPhysicsOverride(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,WHITE,ENTITY_ATTRIBUTE),
Ok(Entity::PropRagdoll(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,WHITE,ENTITY_ATTRIBUTE),
Ok(Entity::ShadowControl(shadow_control))=>(),
Ok(Entity::SkyCamera(sky_camera))=>(),
Ok(Entity::TriggerGravity(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,WHITE,ENTITY_TRIGGER_ATTRIBUTE),
Ok(Entity::TriggerHurt(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,WHITE,ENTITY_TRIGGER_ATTRIBUTE),
Ok(Entity::TriggerLook(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,WHITE,ENTITY_TRIGGER_ATTRIBUTE),
@ -219,12 +330,32 @@ pub fn convert<'a>(
Ok(Entity::TriggerTeleport(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model.unwrap_or_default(),brush.origin,WHITE,ENTITY_TRIGGER_ATTRIBUTE),
Ok(Entity::TriggerVphysicsMotion(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,WHITE,ENTITY_TRIGGER_ATTRIBUTE),
Ok(Entity::TriggerWind(brush))=>add_brush(mesh_deferred_loader,&mut world_models,&mut prop_models,brush.model,brush.origin,WHITE,ENTITY_TRIGGER_ATTRIBUTE),
Ok(Entity::InfoPlayerCounterterrorist(spawn))=>{
found_spawn=Some(valve_transform(spawn.origin.into()));
},
Ok(Entity::InfoPlayerTerrorist(spawn))=>{
found_spawn=Some(valve_transform(spawn.origin.into()));
},
Ok(Entity::WaterLodControl(water_lod_control))=>(),
Ok(Entity::WeaponAk47(weapon_ak47))=>(),
Ok(Entity::WeaponAwp(weapon_awp))=>(),
Ok(Entity::WeaponDeagle(weapon_deagle))=>(),
Ok(Entity::WeaponElite(weapon_elite))=>(),
Ok(Entity::WeaponFamas(weapon_famas))=>(),
Ok(Entity::WeaponFiveseven(weapon_fiveseven))=>(),
Ok(Entity::WeaponFlashbang(weapon_flashbang))=>(),
Ok(Entity::WeaponG3sg1(weapon_g3sg1))=>(),
Ok(Entity::WeaponGlock(weapon_glock))=>(),
Ok(Entity::WeaponHegrenade(weapon_hegrenade))=>(),
Ok(Entity::WeaponKnife(weapon_knife))=>(),
Ok(Entity::WeaponM249(weapon_m249))=>(),
Ok(Entity::WeaponM3(weapon_m3))=>(),
Ok(Entity::WeaponM4a1(weapon_m4a1))=>(),
Ok(Entity::WeaponMac10(weapon_mac10))=>(),
Ok(Entity::WeaponP228(weapon_p228))=>(),
Ok(Entity::WeaponP90(weapon_p90))=>(),
Ok(Entity::WeaponScout(weapon_scout))=>(),
Ok(Entity::WeaponSg550(weapon_sg550))=>(),
Ok(Entity::WeaponSmokegrenade(weapon_smokegrenade))=>(),
Ok(Entity::WeaponTmp(weapon_tmp))=>(),
Ok(Entity::WeaponUmp45(weapon_ump45))=>(),
Ok(Entity::WeaponUsp(weapon_usp))=>(),
Ok(Entity::WeaponXm1014(weapon_xm1014))=>(),
Ok(Entity::Worldspawn(worldspawn))=>(),
Err(e)=>{
println!("Bsp Entity parse error: {e}");
},