add option to disable prop loading

This commit is contained in:
Robin Appelman 2023-12-20 17:48:44 +01:00
commit b00334b822
2 changed files with 12 additions and 7 deletions

View file

@ -9,12 +9,14 @@ use three_d::{CpuModel, Positions, Vec3};
use three_d_asset::{Geometry, Primitive, TriMesh};
use vbsp::{Bsp, Handle};
pub fn load_map(data: &[u8], loader: &mut Loader) -> Result<Vec<CpuModel>, Error> {
pub fn load_map(data: &[u8], loader: &mut Loader, props: bool) -> Result<Vec<CpuModel>, Error> {
let (world, bsp) = load_world(data, loader)?;
let props = load_props(loader, bsp.static_props())?;
let mut models = Vec::with_capacity(props.len() + 1);
let mut models = Vec::with_capacity(bsp.static_props().count() + 1);
models.push(world);
models.extend(props);
if props {
let props = load_props(loader, bsp.static_props())?;
models.extend(props);
}
Ok(models)
}

View file

@ -30,8 +30,11 @@ use vmt_parser::VdfError;
struct Args {
/// Path of the demo or map file
path: String,
/// Name of the player to follow
/// Name of the player to follow, when using a demo file
player: Option<String>,
/// Disable loading and showing props in the map
#[arg(long)]
no_props: bool,
}
#[derive(Debug, Error)]
@ -101,13 +104,13 @@ fn main() -> Result<(), Error> {
.load(&format!("maps/{}.bsp", demo.map))?
.ok_or(Error::ResourceNotFound(demo.map.clone()))?;
let models = load_map(&map, &mut loader)?;
let models = load_map(&map, &mut loader, !args.no_props)?;
play(window, DemoCamera::new(demo), models)
} else {
let mut loader = Loader::new()?;
let map = fs::read(args.path)?;
let models = load_map(&map, &mut loader)?;
let models = load_map(&map, &mut loader, !args.no_props)?;
play(window, FirstPerson::new(0.1), models)
}
}