refactor(main): pass args into stereokit loop

This commit is contained in:
Nova
2024-06-28 21:00:07 -04:00
parent 9c04b5710e
commit 2988ae3c28

View File

@@ -37,7 +37,7 @@ use tracing::{debug_span, error, info};
use tracing_subscriber::{fmt, prelude::*, EnvFilter}; use tracing_subscriber::{fmt, prelude::*, EnvFilter};
use zbus::Connection; use zbus::Connection;
#[derive(Parser)] #[derive(Debug, Clone, Parser)]
#[clap(author, version, about, long_about = None)] #[clap(author, version, about, long_about = None)]
struct CliArgs { struct CliArgs {
/// Force flatscreen mode and use the mouse pointer as a 3D pointer /// Force flatscreen mode and use the mouse pointer as a 3D pointer
@@ -81,7 +81,7 @@ async fn main() {
.with_filter(EnvFilter::from_default_env()); .with_filter(EnvFilter::from_default_env());
registry.with(log_layer).init(); registry.with(log_layer).init();
let cli_args = Arc::new(CliArgs::parse()); let cli_args = CliArgs::parse();
let socket_path = let socket_path =
server::get_free_socket_path().expect("Unable to find a free stardust socket path"); server::get_free_socket_path().expect("Unable to find a free stardust socket path");
@@ -128,15 +128,13 @@ async fn main() {
let stereokit_loop = tokio::task::spawn_blocking({ let stereokit_loop = tokio::task::spawn_blocking({
let sk_ready_notifier = sk_ready_notifier.clone(); let sk_ready_notifier = sk_ready_notifier.clone();
let project_dirs = project_dirs.clone(); let project_dirs = project_dirs.clone();
let flatscreen = cli_args.flatscreen; let cli_args = cli_args.clone();
let overlay_priority = cli_args.overlay_priority;
let dbus_connection = dbus_connection.clone(); let dbus_connection = dbus_connection.clone();
move || { move || {
stereokit_loop( stereokit_loop(
sk_ready_notifier, sk_ready_notifier,
project_dirs, project_dirs,
flatscreen, cli_args,
overlay_priority,
dbus_connection, dbus_connection,
hmd, hmd,
play_space, play_space,
@@ -167,15 +165,14 @@ async fn main() {
fn stereokit_loop( fn stereokit_loop(
sk_ready_notifier: Arc<Notify>, sk_ready_notifier: Arc<Notify>,
project_dirs: Option<ProjectDirs>, project_dirs: Option<ProjectDirs>,
intentional_flatscreen: bool, args: CliArgs,
overlay_priority: Option<u32>,
dbus_connection: Arc<Connection>, dbus_connection: Arc<Connection>,
hmd: Arc<Spatial>, hmd: Arc<Spatial>,
play_space: Arc<Spatial>, play_space: Arc<Spatial>,
) { ) {
let sk = SkSettings::default() let sk = SkSettings::default()
.app_name("Stardust XR") .app_name("Stardust XR")
.mode(if intentional_flatscreen { .mode(if args.flatscreen {
AppMode::Simulator AppMode::Simulator
} else { } else {
AppMode::XR AppMode::XR
@@ -191,8 +188,8 @@ fn stereokit_loop(
Some(LevelFilter::OFF) => LogLevel::None, Some(LevelFilter::OFF) => LogLevel::None,
None => LogLevel::Warning, None => LogLevel::Warning,
}) })
.overlay_app(overlay_priority.is_some()) .overlay_app(args.overlay_priority.is_some())
.overlay_priority(overlay_priority.unwrap_or(u32::MAX)) .overlay_priority(args.overlay_priority.unwrap_or(u32::MAX))
.disable_desktop_input_window(true) .disable_desktop_input_window(true)
.render_scaling(2.0) .render_scaling(2.0)
.init() .init()