mirror of
https://codeberg.org/icewind/vbspview.git
synced 2026-06-03 18:24:09 +02:00
add both demo and map view mode
This commit is contained in:
parent
bc82d29c4f
commit
067e1f99df
2 changed files with 24 additions and 7 deletions
29
src/main.rs
29
src/main.rs
|
|
@ -4,10 +4,12 @@ mod demo;
|
||||||
mod loader;
|
mod loader;
|
||||||
mod renderer;
|
mod renderer;
|
||||||
mod ui;
|
mod ui;
|
||||||
|
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
use crate::bsp::load_map;
|
use crate::bsp::load_map;
|
||||||
use crate::control::DemoCamera;
|
use crate::control::{Control, DemoCamera};
|
||||||
use crate::demo::DemoInfo;
|
use crate::demo::DemoInfo;
|
||||||
use crate::renderer::Renderer;
|
use crate::renderer::Renderer;
|
||||||
use crate::ui::DebugUI;
|
use crate::ui::DebugUI;
|
||||||
|
|
@ -76,13 +78,28 @@ fn main() -> Result<(), Error> {
|
||||||
..Default::default()
|
..Default::default()
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
let demo = DemoInfo::new(args.path, &args.player)?;
|
if args.path.ends_with(".dem") {
|
||||||
let mut loader = Loader::new()?;
|
let demo = DemoInfo::new(args.path, &args.player)?;
|
||||||
let map = loader.load(&format!("maps/{}.bsp", demo.map))?;
|
let mut loader = Loader::new()?;
|
||||||
|
let map = loader.load(&format!("maps/{}.bsp", demo.map))?;
|
||||||
|
|
||||||
let mut renderer = Renderer::new(&window, DemoCamera::new(demo))?;
|
let meshes = load_map(&map, &mut loader)?;
|
||||||
|
play(window, DemoCamera::new(demo), meshes)
|
||||||
|
} else {
|
||||||
|
let mut loader = Loader::new()?;
|
||||||
|
let map = fs::read(args.path)?;
|
||||||
|
|
||||||
let meshes = load_map(&map, &mut loader)?;
|
let meshes = load_map(&map, &mut loader)?;
|
||||||
|
play(window, FirstPerson::new(0.1), meshes)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn play<C: Control + 'static>(
|
||||||
|
window: Window,
|
||||||
|
control: C,
|
||||||
|
meshes: Vec<CPUMesh>,
|
||||||
|
) -> Result<(), Error> {
|
||||||
|
let mut renderer = Renderer::new(&window, control)?;
|
||||||
let material = PhysicalMaterial {
|
let material = PhysicalMaterial {
|
||||||
albedo: Color {
|
albedo: Color {
|
||||||
r: 128,
|
r: 128,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::control::{Control, DebugToggle};
|
use crate::control::{Control, DebugToggle};
|
||||||
use crate::{DebugUI, FirstPerson};
|
use crate::DebugUI;
|
||||||
use three_d::*;
|
use three_d::*;
|
||||||
|
|
||||||
pub struct Renderer<C: Control> {
|
pub struct Renderer<C: Control> {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue