46 lines
1.2 KiB
Rust
46 lines
1.2 KiB
Rust
mod core;
|
|
mod nodes;
|
|
|
|
use self::core::eventloop::EventLoop;
|
|
use anyhow::{ensure, Result};
|
|
use clap::Parser;
|
|
use stereokit_rs as sk;
|
|
use stereokit_rs::enums::DisplayMode;
|
|
use stereokit_rs::functions::*;
|
|
|
|
#[derive(Parser)]
|
|
#[clap(author, version, about, long_about = None)]
|
|
struct CliArgs {
|
|
/// Force flatscreen mode and use the mouse pointer as a 3D pointer
|
|
#[clap(short, action)]
|
|
flatscreen: bool,
|
|
}
|
|
|
|
fn main() -> Result<()> {
|
|
let cli_args = CliArgs::parse();
|
|
ctrlc::set_handler(sk_quit).expect("Error setting Ctrl-C handler");
|
|
|
|
let mut init_settings = SKSettings::default().app_name("Stardust XR");
|
|
if cli_args.flatscreen {
|
|
init_settings = init_settings.display_preference(DisplayMode::Flatscreen);
|
|
}
|
|
ensure!(init_settings.init(), "StereoKit failed to initialize");
|
|
|
|
let event_loop = EventLoop::new(None).expect("Couldn't create server socket");
|
|
println!("Stardust socket created at {}", event_loop.socket_path);
|
|
|
|
let mut previous_time = 0_f64;
|
|
sk_run(
|
|
&mut Box::new(&mut move || {
|
|
let current_time = unsafe { sk::sys::time_get() };
|
|
nodes::root::Root::logic_step(current_time - previous_time);
|
|
previous_time = current_time;
|
|
}),
|
|
&mut Box::new(&mut || {
|
|
println!("Shutting down...");
|
|
}),
|
|
);
|
|
|
|
Ok(())
|
|
}
|