diff --git a/editor.ron b/editor.ron index 5ec76bc..61f692c 100644 --- a/editor.ron +++ b/editor.ron @@ -1,6 +1,6 @@ { - "space_editor_core::hotkeys::HotkeySet": "{\"space_editor_core::hotkeys::HotkeySet\":(bindings:{Rotate:[R],Translate:[G],Scale:[S],Multiple:[ShiftLeft],Clone:[AltLeft],Delete:[X]},name:\"GizmoHotkey\")}", - "space_undo::ChangeChainSettings": "{\"space_undo::ChangeChainSettings\":(max_change_chain_size:200)}", "space_persistence::PersistenceSettings": "{\"space_persistence::PersistenceSettings\":(load_on_startup:true,save_on_close:true)}", "space_editor_ui::settings::NewWindowSettings": "{\"space_editor_ui::settings::NewWindowSettings\":(new_tab:SameNode)}", + "space_undo::ChangeChainSettings": "{\"space_undo::ChangeChainSettings\":(max_change_chain_size:200)}", + "space_editor_core::hotkeys::HotkeySet": "{\"space_editor_core::hotkeys::HotkeySet\":(bindings:{Rotate:[R],Translate:[G],Scale:[S],Multiple:[ShiftLeft],Clone:[AltLeft],Delete:[X]},name:\"GizmoHotkey\")}", } \ No newline at end of file diff --git a/studio/src/lib.rs b/studio/src/lib.rs index ddc51fb..6eff445 100644 --- a/studio/src/lib.rs +++ b/studio/src/lib.rs @@ -26,7 +26,7 @@ mod mixamo; mod path; mod persistance; mod remote; -mod scene; +pub mod scene; pub mod screenshot; mod skybox; mod ui; diff --git a/studio/src/main-headless.rs b/studio/src/main-headless.rs index 46cb0bd..b6fea33 100644 --- a/studio/src/main-headless.rs +++ b/studio/src/main-headless.rs @@ -20,11 +20,7 @@ enum Subcommands { Scene { scene_dir: String, #[arg(long)] - orbit: bool, - #[arg(long, value_parser = clap::value_parser!(f32))] - orbit_radius: Option, - #[arg(long, value_parser = clap::value_parser!(f32))] - orbit_speed: Option, + camera_motion : Option, #[arg(long, short)] output_dir: Option, #[arg(long)] @@ -73,9 +69,7 @@ fn main() { let mut app = match args.subcommand { Subcommands::Scene { scene_dir, - orbit, - orbit_speed, - orbit_radius, + camera_motion, skybox, output_dir, output_resolution, @@ -98,15 +92,22 @@ fn main() { frames, output_res, ); - let orbit_speed = orbit_speed.unwrap_or(1.0); - let orbit_radius = orbit_radius.unwrap_or(8.0); - if orbit { - app.insert_resource(OrbitSettings { - radius: orbit_radius, - speed: orbit_speed, - }) - .add_systems(Update, orbit_scene); + if let Some(camera_motion) = camera_motion { + match camera_motion.as_str() { + "orbit" => { + app.insert_resource(CameraMotion::Orbit); + } + "pan" => { + app.insert_resource(CameraMotion::Pan); + } + "zoom" => { + app.insert_resource(CameraMotion::Zoom); + } + _ => panic!("Unsupported camera motion type.") + } + + app.add_systems(Update, update_camera_motion); } app @@ -167,28 +168,59 @@ fn main() { } #[derive(Resource)] -struct OrbitSettings { - radius: f32, - speed: f32, +enum CameraMotion { + Orbit, + Pan, + Zoom, + Static } -fn orbit_scene( +pub(crate) fn update_camera_motion( mut camera: Query<&mut Transform, With>, - orbit_settings: Res, + camera_motion: Res, time: Res