Week 16 of 2024
Development log of Otterhide
17 items
- Prototype camera movement by pointer dragging
- Use a gizmo to show camera focus, allow to toggle
- Implement camera panning by world space dragging
- Implement scroll to zoom
- Implement horizontal scroll to rotate
- Implement shift + drag to rotate
- Implement continuous pan and rotate by dragging
- Prevent rotation very close to the pivot
- Make scroll sensitivity configurable
- Make the forest floor darker
- Fix a misaligned district model
- Account for more than 1000 parcels in districts
- Improve roads and districts models
- Prevent depth fighting artifacts on far objects
- When scrolling to zoom, consider pointer position
- Update Cargo dependencies
- Update Nix dependencies
Prototype camera movement by pointer dragging
On by
It's a very naive first implementation. It works by mapping pointer movement in screen space (x, y) to camera focus (with primary button pressed), zoom (with middle button) and rotation (with secondary button). There are some ad-hoc calculations to make the movements somewhat correspond to the size of things on screen, but we need something much better. Ideally dragging should be done in world space (3d).
The bevy_mod_picking crate is used to provide dragging information. In principle it should be possible to get a 3d dragging working with the APIs it provides.
index 20a548d..264dcd6 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -692,6 +692,30 @@ dependencies = [
= "encase_derive_impl",
=]
=
+[[package]]
+name = "bevy_eventlistener"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9d65c75b4f81818cacdc8a4302c5413910c5fb7727564deaf95e56e0dea4bd0"
+dependencies = [
+ "bevy_app",
+ "bevy_ecs",
+ "bevy_eventlistener_derive",
+ "bevy_hierarchy",
+ "bevy_utils",
+]
+
+[[package]]
+name = "bevy_eventlistener_derive"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa29be733a02a5d7ca4507ef15f294711c1a0884b9a9a2730640ff4e7d0200ab"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
=[[package]]
=name = "bevy_gilrs"
=version = "0.13.0"
@@ -889,6 +913,35 @@ dependencies = [
= "glam",
=]
=
+[[package]]
+name = "bevy_mod_picking"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d79f17a34025d95e2e3525207ec73090647c6f40c3136fc674f87e167a9ae6be"
+dependencies = [
+ "bevy_app",
+ "bevy_core",
+ "bevy_core_pipeline",
+ "bevy_ecs",
+ "bevy_egui",
+ "bevy_eventlistener",
+ "bevy_math",
+ "bevy_picking_core",
+ "bevy_picking_egui",
+ "bevy_picking_highlight",
+ "bevy_picking_input",
+ "bevy_picking_raycast",
+ "bevy_picking_selection",
+ "bevy_picking_sprite",
+ "bevy_picking_ui",
+ "bevy_reflect",
+ "bevy_render",
+ "bevy_text",
+ "bevy_ui",
+ "bevy_utils",
+ "bevy_window",
+]
+
=[[package]]
=name = "bevy_mod_raycast"
=version = "0.17.0"
@@ -935,6 +988,141 @@ dependencies = [
= "thread_local",
=]
=
+[[package]]
+name = "bevy_picking_core"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41c8cdca408508a7d006bf077c6cbb6660a65895323333f206b7cce7b801a8e2"
+dependencies = [
+ "bevy_app",
+ "bevy_derive",
+ "bevy_ecs",
+ "bevy_eventlistener",
+ "bevy_math",
+ "bevy_reflect",
+ "bevy_render",
+ "bevy_transform",
+ "bevy_utils",
+ "bevy_window",
+]
+
+[[package]]
+name = "bevy_picking_egui"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfc4196736e2a5d7ce709eab3e19ff4cf62e8f175f8a29d5e1a9ffe4ab6fe93b"
+dependencies = [
+ "bevy_app",
+ "bevy_ecs",
+ "bevy_egui",
+ "bevy_picking_core",
+ "bevy_picking_selection",
+ "bevy_reflect",
+ "bevy_render",
+]
+
+[[package]]
+name = "bevy_picking_highlight"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e684569b5f7dae06d1ff66e2287cee808b3862d9ae0d01dbe114d7d199d40cfd"
+dependencies = [
+ "bevy_app",
+ "bevy_asset",
+ "bevy_ecs",
+ "bevy_pbr",
+ "bevy_picking_core",
+ "bevy_picking_selection",
+ "bevy_reflect",
+ "bevy_render",
+ "bevy_sprite",
+]
+
+[[package]]
+name = "bevy_picking_input"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60182209f48943de6c8bc3305a70f52012a18ef26f92f460f9436441b8badf0b"
+dependencies = [
+ "bevy_app",
+ "bevy_ecs",
+ "bevy_hierarchy",
+ "bevy_input",
+ "bevy_math",
+ "bevy_picking_core",
+ "bevy_picking_selection",
+ "bevy_reflect",
+ "bevy_render",
+ "bevy_utils",
+ "bevy_window",
+]
+
+[[package]]
+name = "bevy_picking_raycast"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2677d0a3402fea3327a216649c104f969685a5c01d969d274c89facba86c164d"
+dependencies = [
+ "bevy_app",
+ "bevy_ecs",
+ "bevy_mod_raycast",
+ "bevy_picking_core",
+ "bevy_reflect",
+ "bevy_render",
+ "bevy_transform",
+ "bevy_window",
+]
+
+[[package]]
+name = "bevy_picking_selection"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbc986eefd38058918322418d1e6ae398e74d48730e623a55dc20be78d5ee24b"
+dependencies = [
+ "bevy_app",
+ "bevy_ecs",
+ "bevy_eventlistener",
+ "bevy_input",
+ "bevy_picking_core",
+ "bevy_reflect",
+ "bevy_utils",
+]
+
+[[package]]
+name = "bevy_picking_sprite"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ac5309026e8c7f5aed2afec3aa2f21fb0a0487e9bb3d851860377891459df75"
+dependencies = [
+ "bevy_app",
+ "bevy_asset",
+ "bevy_ecs",
+ "bevy_math",
+ "bevy_picking_core",
+ "bevy_render",
+ "bevy_sprite",
+ "bevy_transform",
+ "bevy_window",
+]
+
+[[package]]
+name = "bevy_picking_ui"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85ad6d40e33203115af38adc984341cf5637911baa940028b6a43a9917d64e79"
+dependencies = [
+ "bevy_app",
+ "bevy_ecs",
+ "bevy_hierarchy",
+ "bevy_math",
+ "bevy_picking_core",
+ "bevy_render",
+ "bevy_transform",
+ "bevy_ui",
+ "bevy_utils",
+ "bevy_window",
+]
+
=[[package]]
=name = "bevy_ptr"
=version = "0.13.1"
@@ -3404,6 +3592,7 @@ dependencies = [
= "bevy-inspector-egui",
= "bevy_args",
= "bevy_egui",
+ "bevy_mod_picking",
= "bevy_rts_camera",
= "clap",
= "derive_more",index 2cd8908..1fe7227 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -11,6 +11,7 @@ bevy = { version = "0.13", features = ["wayland", "serialize"] }
=bevy-inspector-egui = { git = "https://github.com/jakobhellermann/bevy-inspector-egui", rev = "1563fe9", version = "0.23.4" }
=bevy_args = "=1.3.0"
=bevy_egui = "0.25.0"
+bevy_mod_picking = { version = "0.18.2", features = ["backend_egui"] }
=bevy_rts_camera = "0.4.0"
=clap = { version = "4.5.4", features = ["derive"] }
=derive_more = "0.99.17"index 96c0ac0..8f95c58 100644
--- a/src/camera.rs
+++ b/src/camera.rs
@@ -2,7 +2,10 @@ use crate::major_state::MajorState;
=use crate::simulation;
=use crate::simulation::SimulationParameters;
=use bevy::prelude::*;
-use bevy_rts_camera::{RtsCamera, RtsCameraControls, RtsCameraPlugin};
+use bevy_mod_picking::events::{Drag, Pointer};
+use bevy_mod_picking::pointer::PointerButton;
+use bevy_rts_camera::{RtsCamera, RtsCameraPlugin};
+use std::ops::Add;
=
=pub struct CameraPlugin;
=
@@ -15,10 +18,41 @@ impl Plugin for CameraPlugin {
= .chain()
= .after(simulation::get_ready),
= )
+ .add_systems(Update, handle_drag)
= .add_systems(OnExit(MajorState::GettingReady), enable_camera);
= }
=}
=
+#[derive(Resource, Debug)]
+struct DragStartPosition(Vec3);
+
+fn handle_drag(mut dragging: EventReader<Pointer<Drag>>, mut camera: Query<&mut RtsCamera>) {
+ let Ok(mut camera) = camera.get_single_mut() else {
+ return;
+ };
+
+ for drag in dragging.read() {
+ if drag.button == PointerButton::Primary {
+ // The closer the camera, the slower the pan
+ let speed = 4.0 / (10.0 as f32).powf(camera.zoom);
+ let delta = camera.focus.rotation * drag.delta.extend(0.0).xzy();
+ camera.target_focus.translation -= delta * speed;
+ };
+
+ if drag.button == PointerButton::Middle {
+ camera.target_zoom = camera.target_zoom.add(drag.delta.y / 500.0).clamp(0.0, 1.0);
+ }
+
+ if drag.button == PointerButton::Secondary {
+ // The closer the camera, the slower the turn
+ // TODO: Calculate the angle around the center of the screen and rotate the camera the same angle in reverse
+ let speed = 0.002 / (10.0 as f32).powf(camera.zoom);
+
+ camera.target_focus.rotate_y(drag.delta.x * speed);
+ }
+ }
+}
+
=fn setup_camera(mut commands: Commands, parameters: Res<SimulationParameters>) {
= commands.spawn((
= Camera3dBundle::default(),
@@ -42,11 +76,6 @@ fn setup_camera(mut commands: Commands, parameters: Res<SimulationParameters>) {
= },
= ..default()
= },
- RtsCameraControls {
- pan_speed: 200.,
- edge_pan_width: 0.2,
- ..default()
- },
= ));
=}
=index 0d9813d..94f1f26 100644
--- a/src/ground.rs
+++ b/src/ground.rs
@@ -5,6 +5,7 @@ use bevy::ecs::system::SystemId;
=use bevy::gltf::Gltf;
=use bevy::math::bounding::{Aabb3d, IntersectsVolume};
=use bevy::prelude::*;
+use bevy_mod_picking::prelude::*;
=use bevy_rts_camera::Ground;
=use itertools::Itertools;
=use serde::{Deserialize, Serialize};
@@ -170,17 +171,18 @@ fn setup_ground(
= },
= Ground,
= Name::new("Ground"),
+ PickableBundle::default(),
= ));
=}
=
=#[derive(Component, Debug)]
-struct SnowGlobe;
+pub struct SnowGlobe;
=
=#[derive(Debug, Clone, Serialize, Deserialize)]
=pub struct GroundSnapshot;
=
=impl Snapshot for GroundSnapshot {
- fn capture(world: &mut World) -> Self {
+ fn capture(_world: &mut World) -> Self {
= Self
= }
=index b5b16bf..4725958 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -4,6 +4,7 @@ use bevy::utils::Uuid;
=use bevy_egui::EguiPlugin;
=#[cfg(debug_assertions)]
=use bevy_inspector_egui::quick::WorldInspectorPlugin;
+use bevy_mod_picking::prelude::*;
=use otterhide::buildings::BuildingsPlugin;
=use otterhide::camera::CameraPlugin;
=use otterhide::configuration::ConfigurationPlugin;
@@ -31,6 +32,7 @@ fn main() {
= ..default()
= }))
= .register_type::<Uuid>()
+ .add_plugins(DefaultPickingPlugins)
= .add_plugins(ConfigurationPlugin)
= .add_plugins(MajorStatePlugin)
= .add_plugins(SimulationLoadingPlugin)Use a gizmo to show camera focus, allow to toggle
On by
Gizmos can now be turned on and off with a configuration parameter. Also at runtime with the world inspector.
index 8f95c58..09a679a 100644
--- a/src/camera.rs
+++ b/src/camera.rs
@@ -26,11 +26,22 @@ impl Plugin for CameraPlugin {
=#[derive(Resource, Debug)]
=struct DragStartPosition(Vec3);
=
-fn handle_drag(mut dragging: EventReader<Pointer<Drag>>, mut camera: Query<&mut RtsCamera>) {
+fn handle_drag(
+ mut dragging: EventReader<Pointer<Drag>>,
+ mut camera: Query<&mut RtsCamera>,
+ mut gizmos: Gizmos,
+) {
= let Ok(mut camera) = camera.get_single_mut() else {
= return;
= };
=
+ // SEE: https://github.com/Plonq/bevy_rts_camera/issues/6
+ let ground_focus = camera.focus.translation.xz().extend(0.0).xzy();
+
+ debug!("Camera focused on the ground at {ground_focus:?}");
+ #[cfg(debug_assertions)]
+ gizmos.sphere(ground_focus, Quat::default(), 20.0, Color::BLUE);
+
= for drag in dragging.read() {
= if drag.button == PointerButton::Primary {
= // The closer the camera, the slower the panindex 4617f6e..d51d414 100644
--- a/src/configuration.rs
+++ b/src/configuration.rs
@@ -38,6 +38,10 @@ pub struct Configuration {
= /// First year of the simulation
= #[arg(long, default_value_t = DEFAULT_BEGINNING)]
= pub beginning: u16,
+
+ /// Should gizmos be drawn for visual debugging
+ #[arg(long, default_value_t = false)]
+ pub gizmos: bool,
=}
=
=impl Default for Configuration {
@@ -47,6 +51,7 @@ impl Default for Configuration {
= duration: DEFAULT_DURATION,
= inspect: None,
= load: None,
+ gizmos: false,
= }
= }
=}index 94f1f26..4c2a1cd 100644
--- a/src/ground.rs
+++ b/src/ground.rs
@@ -17,7 +17,6 @@ impl Plugin for GroundPlugin {
= fn build(&self, app: &mut App) {
= app.add_systems(Startup, register_ground_systems)
= .register_type::<Tree>()
- // .add_systems(Update, draw_gizmos)
= .add_systems(Startup, setup_assets)
= .add_systems(
= OnEnter(MajorState::GettingReady),
@@ -66,19 +65,6 @@ fn remove_obstacles(
= debug!("Removed {removed} obstacles. Left {left}.")
=}
=
-fn draw_gizmos(mut gizmos: Gizmos, trees: Query<&GlobalTransform, With<Tree>>) {
- for transform in trees.iter() {
- gizmos.cuboid(
- Transform::from_translation(transform.translation()).with_scale(Vec3 {
- x: 3.0,
- y: 20.0,
- z: 3.0,
- }),
- Color::GREEN,
- );
- }
-}
-
=#[derive(Resource)]
=struct SnowglobeAssetHandle(Handle<Gltf>);
=index 4725958..33e4079 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -7,7 +7,7 @@ use bevy_inspector_egui::quick::WorldInspectorPlugin;
=use bevy_mod_picking::prelude::*;
=use otterhide::buildings::BuildingsPlugin;
=use otterhide::camera::CameraPlugin;
-use otterhide::configuration::ConfigurationPlugin;
+use otterhide::configuration::{Configuration, ConfigurationPlugin};
=use otterhide::date::DatePlugin;
=use otterhide::districts::DistrictsPlugin;
=use otterhide::ground::GroundPlugin;
@@ -64,5 +64,11 @@ impl Plugin for DebugPlugin {
= app.add_plugins(WorldInspectorPlugin::new());
= #[cfg(not(debug_assertions))]
= app.add_plugins(EguiPlugin);
+
+ app.add_systems(Update, toggle_gizmos);
= }
=}
+
+fn toggle_gizmos(configuration: Res<Configuration>, mut gizmos: ResMut<GizmoConfigStore>) {
+ gizmos.config_mut::<DefaultGizmoConfigGroup>().0.enabled = configuration.gizmos;
+}index e093f4a..623f167 100644
--- a/src/roads.rs
+++ b/src/roads.rs
@@ -21,7 +21,7 @@ pub struct RoadsPlugin;
=impl Plugin for RoadsPlugin {
= fn build(&self, app: &mut App) {
= app.init_resource::<Roads>()
- // .add_systems(Update, draw_gizmos)
+ .add_systems(Update, draw_gizmos)
= .add_systems(Startup, setup_assets)
= .add_systems(Startup, register_road_systems)
= .add_systems(index 8fff634..94096de 100644
--- a/src/sun.rs
+++ b/src/sun.rs
@@ -26,8 +26,6 @@ struct Sun;
=
=fn draw_gizmos(mut gizmos: Gizmos, sun: Query<(&Transform, &DirectionalLight), With<Sun>>) {
= let (position, light) = sun.single();
-
- #[cfg(degug)]
= gizmos.sphere(position.translation, Quat::default(), 100., light.color);
=}
=Implement camera panning by world space dragging
On by
The camera will pan so that the same ground position remains under the pointer. For this I use bevy_mod_raycast to locate the position of the pointer projected on the xz plane. While dragging the camera is continuously moved in a direction from the current (dragged) pointer position to the starting position. So on every frame the pointer gets closer to where it started.
index 264dcd6..ae30573 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -3593,6 +3593,7 @@ dependencies = [
= "bevy_args",
= "bevy_egui",
= "bevy_mod_picking",
+ "bevy_mod_raycast",
= "bevy_rts_camera",
= "clap",
= "derive_more",index 1fe7227..0fc0899 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -12,6 +12,7 @@ bevy-inspector-egui = { git = "https://github.com/jakobhellermann/bevy-inspector
=bevy_args = "=1.3.0"
=bevy_egui = "0.25.0"
=bevy_mod_picking = { version = "0.18.2", features = ["backend_egui"] }
+bevy_mod_raycast = "0.17.0"
=bevy_rts_camera = "0.4.0"
=clap = { version = "4.5.4", features = ["derive"] }
=derive_more = "0.99.17"index 09a679a..feafd04 100644
--- a/src/camera.rs
+++ b/src/camera.rs
@@ -1,69 +1,42 @@
=use crate::major_state::MajorState;
=use crate::simulation;
=use crate::simulation::SimulationParameters;
+use bevy::input::common_conditions::{input_just_pressed, input_just_released, input_pressed};
=use bevy::prelude::*;
-use bevy_mod_picking::events::{Drag, Pointer};
-use bevy_mod_picking::pointer::PointerButton;
-use bevy_rts_camera::{RtsCamera, RtsCameraPlugin};
-use std::ops::Add;
+use bevy_mod_raycast::prelude::*;
+use bevy_rts_camera::{RtsCamera, RtsCameraPlugin, RtsCameraSystemSet};
=
=pub struct CameraPlugin;
=
=impl Plugin for CameraPlugin {
= fn build(&self, app: &mut App) {
= app.add_plugins(RtsCameraPlugin)
+ .add_plugins(DeferredRaycastingPlugin::<PointerRay>::default())
+ .insert_resource(RaycastPluginState::<PointerRay>::default().with_debug_cursor())
= .add_systems(
= OnEnter(MajorState::GettingReady),
= (setup_camera, disable_camera)
= .chain()
= .after(simulation::get_ready),
= )
- .add_systems(Update, handle_drag)
+ .add_systems(
+ Update,
+ record_drag_start_markers.run_if(input_just_pressed(MouseButton::Middle)),
+ )
+ .add_systems(
+ Update,
+ drop_drag_start_markers.run_if(input_just_released(MouseButton::Middle)),
+ )
+ .add_systems(
+ Update,
+ handle_drag
+ .run_if(input_pressed(MouseButton::Middle))
+ .before(RtsCameraSystemSet),
+ )
= .add_systems(OnExit(MajorState::GettingReady), enable_camera);
= }
=}
=
-#[derive(Resource, Debug)]
-struct DragStartPosition(Vec3);
-
-fn handle_drag(
- mut dragging: EventReader<Pointer<Drag>>,
- mut camera: Query<&mut RtsCamera>,
- mut gizmos: Gizmos,
-) {
- let Ok(mut camera) = camera.get_single_mut() else {
- return;
- };
-
- // SEE: https://github.com/Plonq/bevy_rts_camera/issues/6
- let ground_focus = camera.focus.translation.xz().extend(0.0).xzy();
-
- debug!("Camera focused on the ground at {ground_focus:?}");
- #[cfg(debug_assertions)]
- gizmos.sphere(ground_focus, Quat::default(), 20.0, Color::BLUE);
-
- for drag in dragging.read() {
- if drag.button == PointerButton::Primary {
- // The closer the camera, the slower the pan
- let speed = 4.0 / (10.0 as f32).powf(camera.zoom);
- let delta = camera.focus.rotation * drag.delta.extend(0.0).xzy();
- camera.target_focus.translation -= delta * speed;
- };
-
- if drag.button == PointerButton::Middle {
- camera.target_zoom = camera.target_zoom.add(drag.delta.y / 500.0).clamp(0.0, 1.0);
- }
-
- if drag.button == PointerButton::Secondary {
- // The closer the camera, the slower the turn
- // TODO: Calculate the angle around the center of the screen and rotate the camera the same angle in reverse
- let speed = 0.002 / (10.0 as f32).powf(camera.zoom);
-
- camera.target_focus.rotate_y(drag.delta.x * speed);
- }
- }
-}
-
=fn setup_camera(mut commands: Commands, parameters: Res<SimulationParameters>) {
= commands.spawn((
= Camera3dBundle::default(),
@@ -87,6 +60,7 @@ fn setup_camera(mut commands: Commands, parameters: Res<SimulationParameters>) {
= },
= ..default()
= },
+ RaycastSource::<PointerRay>::new_cursor(),
= ));
=}
=
@@ -99,3 +73,78 @@ fn enable_camera(mut cameras: Query<&mut Camera>) {
= let mut camera = cameras.single_mut();
= camera.is_active = true;
=}
+
+#[derive(Reflect, Debug)]
+pub struct PointerRay;
+
+/// This resource stores the position of the camera focus and the oointer at the start of dragging
+///
+/// The positions are projected onto an xz plane. The resource may not exist while not dragging.
+#[derive(Resource, Reflect, Debug)]
+pub struct DragStartMarker {
+ position: Vec2,
+}
+
+fn record_drag_start_markers(sources: Query<&RaycastSource<PointerRay>>, mut commands: Commands) {
+ info!("Looking for intersections to place drag start marker");
+
+ let Ok(source) = sources.get_single() else {
+ return;
+ };
+ let Some(intersection) = ground_intersection(source) else {
+ return;
+ };
+
+ info!("Intersection at {intersection:?}");
+ let position = intersection.position().xz();
+
+ commands.insert_resource(DragStartMarker { position });
+}
+
+fn drop_drag_start_markers(mut commands: Commands) {
+ info!("Dropping drag start marker");
+
+ commands.remove_resource::<DragStartMarker>();
+}
+
+fn handle_drag(
+ mut sources: Query<(&RaycastSource<PointerRay>, &mut RtsCamera)>,
+ mut gizmos: Gizmos,
+ marker: Option<Res<DragStartMarker>>,
+) {
+ let Some(start) = marker else {
+ warn!("Dragging, but there are no drag start markers!");
+ return;
+ };
+
+ let Ok((source, mut camera)) = sources.get_single_mut() else {
+ warn!("Dragging, but there is not a single camera!");
+ return;
+ };
+
+ let Some(intersection) = ground_intersection(source) else {
+ warn!("Cannot get ground intersection of the pointer ray to calculate camera drag.");
+ return;
+ };
+ let dragged_position = intersection.position().xz();
+
+ gizmos.arrow(
+ start.position.extend(20.).xzy(),
+ dragged_position.extend(20.).xzy(),
+ Color::ORANGE,
+ );
+
+ // Keep moving the camera until the dragged pointer is back at the starting position
+ let drag_delta = dragged_position - start.position;
+
+ // Slow down the motion and prevent overshooting and wobbling
+ const DUMPING_FACTOR: f32 = 4.0;
+ camera.target_focus.translation -= drag_delta.extend(0.0).xzy() / DUMPING_FACTOR;
+}
+
+fn ground_intersection(source: &RaycastSource<PointerRay>) -> Option<IntersectionData> {
+ source.intersect_primitive(bevy_mod_raycast::primitives::Primitive3d::Plane {
+ point: Vec3::ZERO,
+ normal: Vec3::Y,
+ })
+}index 4c2a1cd..7c869a0 100644
--- a/src/ground.rs
+++ b/src/ground.rs
@@ -5,7 +5,6 @@ use bevy::ecs::system::SystemId;
=use bevy::gltf::Gltf;
=use bevy::math::bounding::{Aabb3d, IntersectsVolume};
=use bevy::prelude::*;
-use bevy_mod_picking::prelude::*;
=use bevy_rts_camera::Ground;
=use itertools::Itertools;
=use serde::{Deserialize, Serialize};
@@ -157,7 +156,6 @@ fn setup_ground(
= },
= Ground,
= Name::new("Ground"),
- PickableBundle::default(),
= ));
=}
=index 33e4079..c5274c5 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -4,7 +4,6 @@ use bevy::utils::Uuid;
=use bevy_egui::EguiPlugin;
=#[cfg(debug_assertions)]
=use bevy_inspector_egui::quick::WorldInspectorPlugin;
-use bevy_mod_picking::prelude::*;
=use otterhide::buildings::BuildingsPlugin;
=use otterhide::camera::CameraPlugin;
=use otterhide::configuration::{Configuration, ConfigurationPlugin};
@@ -32,7 +31,6 @@ fn main() {
= ..default()
= }))
= .register_type::<Uuid>()
- .add_plugins(DefaultPickingPlugins)
= .add_plugins(ConfigurationPlugin)
= .add_plugins(MajorStatePlugin)
= .add_plugins(SimulationLoadingPlugin)Implement scroll to zoom
On by
index feafd04..57bdf7f 100644
--- a/src/camera.rs
+++ b/src/camera.rs
@@ -2,6 +2,7 @@ use crate::major_state::MajorState;
=use crate::simulation;
=use crate::simulation::SimulationParameters;
=use bevy::input::common_conditions::{input_just_pressed, input_just_released, input_pressed};
+use bevy::input::mouse::MouseWheel;
=use bevy::prelude::*;
=use bevy_mod_raycast::prelude::*;
=use bevy_rts_camera::{RtsCamera, RtsCameraPlugin, RtsCameraSystemSet};
@@ -33,6 +34,7 @@ impl Plugin for CameraPlugin {
= .run_if(input_pressed(MouseButton::Middle))
= .before(RtsCameraSystemSet),
= )
+ .add_systems(Update, handle_scroll.before(RtsCameraSystemSet))
= .add_systems(OnExit(MajorState::GettingReady), enable_camera);
= }
=}
@@ -142,6 +144,25 @@ fn handle_drag(
= camera.target_focus.translation -= drag_delta.extend(0.0).xzy() / DUMPING_FACTOR;
=}
=
+fn handle_scroll(mut scroll: EventReader<MouseWheel>, mut camera: Query<&mut RtsCamera>) {
+ use bevy::input::mouse::MouseScrollUnit;
+
+ let Ok(mut camera) = camera.get_single_mut() else {
+ return;
+ };
+
+ for event in scroll.read() {
+ match event.unit {
+ MouseScrollUnit::Line => {
+ camera.target_zoom = (camera.target_zoom + event.y / 20.0).clamp(0.0, 1.0)
+ }
+ MouseScrollUnit::Pixel => {
+ camera.target_zoom = (camera.target_zoom + event.y / 500.0).clamp(0.0, 1.0)
+ }
+ };
+ }
+}
+
=fn ground_intersection(source: &RaycastSource<PointerRay>) -> Option<IntersectionData> {
= source.intersect_primitive(bevy_mod_raycast::primitives::Primitive3d::Plane {
= point: Vec3::ZERO,Implement horizontal scroll to rotate
On by
Also tweak zoom settings a bit.
index 57bdf7f..ac9b43a 100644
--- a/src/camera.rs
+++ b/src/camera.rs
@@ -48,7 +48,7 @@ fn setup_camera(mut commands: Commands, parameters: Res<SimulationParameters>) {
= //
= // This value compensates for the logical "Ground" entity being
= // under the visual ground. See the ground.rs for more comments.
- height_min: 20.,
+ height_min: 30.,
=
= bounds: bevy::math::bounding::Aabb2d {
= min: Vec2 {
@@ -154,10 +154,12 @@ fn handle_scroll(mut scroll: EventReader<MouseWheel>, mut camera: Query<&mut Rts
= for event in scroll.read() {
= match event.unit {
= MouseScrollUnit::Line => {
- camera.target_zoom = (camera.target_zoom + event.y / 20.0).clamp(0.0, 1.0)
+ camera.target_zoom = (camera.target_zoom + event.y / 40.0).clamp(0.0, 1.0);
+ camera.target_focus.rotate_axis(Vec3::Y, event.x / -10.0);
= }
= MouseScrollUnit::Pixel => {
- camera.target_zoom = (camera.target_zoom + event.y / 500.0).clamp(0.0, 1.0)
+ camera.target_zoom = (camera.target_zoom + event.y / 500.0).clamp(0.0, 1.0);
+ camera.target_focus.rotate_axis(Vec3::Y, event.x / -500.0);
= }
= };
= }Implement shift + drag to rotate
On by
Rotation happens around the camera focus position, in a kind of turn-table style.
index ac9b43a..24a2587 100644
--- a/src/camera.rs
+++ b/src/camera.rs
@@ -22,7 +22,7 @@ impl Plugin for CameraPlugin {
= )
= .add_systems(
= Update,
- record_drag_start_markers.run_if(input_just_pressed(MouseButton::Middle)),
+ record_drag_start_marker.run_if(input_just_pressed(MouseButton::Middle)),
= )
= .add_systems(
= Update,
@@ -87,9 +87,7 @@ pub struct DragStartMarker {
= position: Vec2,
=}
=
-fn record_drag_start_markers(sources: Query<&RaycastSource<PointerRay>>, mut commands: Commands) {
- info!("Looking for intersections to place drag start marker");
-
+fn record_drag_start_marker(sources: Query<&RaycastSource<PointerRay>>, mut commands: Commands) {
= let Ok(source) = sources.get_single() else {
= return;
= };
@@ -97,7 +95,6 @@ fn record_drag_start_markers(sources: Query<&RaycastSource<PointerRay>>, mut com
= return;
= };
=
- info!("Intersection at {intersection:?}");
= let position = intersection.position().xz();
=
= commands.insert_resource(DragStartMarker { position });
@@ -105,13 +102,13 @@ fn record_drag_start_markers(sources: Query<&RaycastSource<PointerRay>>, mut com
=
=fn drop_drag_start_markers(mut commands: Commands) {
= info!("Dropping drag start marker");
-
= commands.remove_resource::<DragStartMarker>();
=}
=
=fn handle_drag(
= mut sources: Query<(&RaycastSource<PointerRay>, &mut RtsCamera)>,
= mut gizmos: Gizmos,
+ keys: Res<ButtonInput<KeyCode>>,
= marker: Option<Res<DragStartMarker>>,
=) {
= let Some(start) = marker else {
@@ -129,19 +126,43 @@ fn handle_drag(
= return;
= };
= let dragged_position = intersection.position().xz();
-
- gizmos.arrow(
- start.position.extend(20.).xzy(),
- dragged_position.extend(20.).xzy(),
- Color::ORANGE,
- );
-
- // Keep moving the camera until the dragged pointer is back at the starting position
- let drag_delta = dragged_position - start.position;
-
- // Slow down the motion and prevent overshooting and wobbling
- const DUMPING_FACTOR: f32 = 4.0;
- camera.target_focus.translation -= drag_delta.extend(0.0).xzy() / DUMPING_FACTOR;
+ let focus_position = camera.focus.translation.xz();
+
+ if keys.pressed(KeyCode::ShiftLeft) {
+ gizmos.arrow(
+ focus_position.extend(20.).xzy(),
+ dragged_position.extend(20.).xzy(),
+ Color::VIOLET,
+ );
+ gizmos.arrow(
+ focus_position.extend(20.).xzy(),
+ start.position.extend(20.).xzy(),
+ Color::CRIMSON,
+ );
+
+ let a = start.position - focus_position;
+ let b = dragged_position - focus_position;
+ let angle = a.angle_between(b);
+
+ // Slow down the rotation to prevent wobbling
+ const DAMPENING_FACTOR: f32 = 4.0;
+ camera
+ .target_focus
+ .rotate_axis(Vec3::Y, angle / DAMPENING_FACTOR);
+ } else {
+ gizmos.arrow(
+ start.position.extend(20.).xzy(),
+ dragged_position.extend(20.).xzy(),
+ Color::ORANGE,
+ );
+
+ // Keep moving the camera until the dragged pointer is back at the starting position
+ let drag_delta = dragged_position - start.position;
+
+ // Slow down the motion and prevent overshooting and wobbling
+ const DAMPENING_FACTOR: f32 = 4.0;
+ camera.target_focus.translation -= drag_delta.extend(0.0).xzy() / DAMPENING_FACTOR;
+ }
=}
=
=fn handle_scroll(mut scroll: EventReader<MouseWheel>, mut camera: Query<&mut RtsCamera>) {Implement continuous pan and rotate by dragging
On by
When a user toggles the shift key, the program should act as if dragging was restarted from whatever the current position of the pointer.
index 24a2587..3f5e147 100644
--- a/src/camera.rs
+++ b/src/camera.rs
@@ -110,6 +110,7 @@ fn handle_drag(
= mut gizmos: Gizmos,
= keys: Res<ButtonInput<KeyCode>>,
= marker: Option<Res<DragStartMarker>>,
+ mut commands: Commands,
=) {
= let Some(start) = marker else {
= warn!("Dragging, but there are no drag start markers!");
@@ -128,6 +129,11 @@ fn handle_drag(
= let dragged_position = intersection.position().xz();
= let focus_position = camera.focus.translation.xz();
=
+ if keys.just_pressed(KeyCode::ShiftLeft) || keys.just_released(KeyCode::ShiftLeft) {
+ commands.insert_resource(DragStartMarker {
+ position: dragged_position,
+ });
+ }
= if keys.pressed(KeyCode::ShiftLeft) {
= gizmos.arrow(
= focus_position.extend(20.).xzy(),Prevent rotation very close to the pivot
On by
to avoid rapid twists.
Also bring the gizmos closer to the ground so they are more useful when camera is low. I considered making them always on top with depth bias, but it created a lot of visual noise.
index 3f5e147..0d5247d 100644
--- a/src/camera.rs
+++ b/src/camera.rs
@@ -136,29 +136,47 @@ fn handle_drag(
= }
= if keys.pressed(KeyCode::ShiftLeft) {
= gizmos.arrow(
- focus_position.extend(20.).xzy(),
- dragged_position.extend(20.).xzy(),
+ focus_position.extend(5.).xzy(),
+ dragged_position.extend(5.).xzy(),
= Color::VIOLET,
= );
= gizmos.arrow(
- focus_position.extend(20.).xzy(),
- start.position.extend(20.).xzy(),
+ focus_position.extend(5.).xzy(),
+ start.position.extend(5.).xzy(),
= Color::CRIMSON,
= );
=
= let a = start.position - focus_position;
= let b = dragged_position - focus_position;
+
+ // Prevent rotation when pointer is very close to the pivot point
+ // to avoid rapid twists.
+ const DEAD_ZONE_RADIUS: f32 = 100.0;
+ let length = b.length();
+ let limit = DEAD_ZONE_RADIUS * (1.0 - camera.zoom.clamp(0.05, 0.95));
+ gizmos.circle(
+ focus_position.extend(5.0).xzy(),
+ Direction3d::Y,
+ limit,
+ Color::CRIMSON,
+ );
+ if length < limit {
+ commands.insert_resource(DragStartMarker {
+ position: dragged_position,
+ });
+ return;
+ }
= let angle = a.angle_between(b);
=
= // Slow down the rotation to prevent wobbling
- const DAMPENING_FACTOR: f32 = 4.0;
+ const DAMPING_FACTOR: f32 = 4.0;
= camera
= .target_focus
- .rotate_axis(Vec3::Y, angle / DAMPENING_FACTOR);
+ .rotate_axis(Vec3::Y, angle / DAMPING_FACTOR);
= } else {
= gizmos.arrow(
- start.position.extend(20.).xzy(),
- dragged_position.extend(20.).xzy(),
+ start.position.extend(5.).xzy(),
+ dragged_position.extend(5.).xzy(),
= Color::ORANGE,
= );
=
@@ -166,8 +184,8 @@ fn handle_drag(
= let drag_delta = dragged_position - start.position;
=
= // Slow down the motion and prevent overshooting and wobbling
- const DAMPENING_FACTOR: f32 = 4.0;
- camera.target_focus.translation -= drag_delta.extend(0.0).xzy() / DAMPENING_FACTOR;
+ const DAMPING_FACTOR: f32 = 4.0;
+ camera.target_focus.translation -= drag_delta.extend(0.0).xzy() / DAMPING_FACTOR;
= }
=}
=index c5274c5..d7b9207 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -68,5 +68,6 @@ impl Plugin for DebugPlugin {
=}
=
=fn toggle_gizmos(configuration: Res<Configuration>, mut gizmos: ResMut<GizmoConfigStore>) {
- gizmos.config_mut::<DefaultGizmoConfigGroup>().0.enabled = configuration.gizmos;
+ let gizmo_config = gizmos.config_mut::<DefaultGizmoConfigGroup>().0;
+ gizmo_config.enabled = configuration.gizmos;
=}Make scroll sensitivity configurable
On by
Apparently different platforms can report scrolling very differently. This is apparent in web browsers. In my case scrolling was way more sensitive than on my Linux desktop. I don't think we can find any values that will be guaranteed to work for everybody, so now there are two new configuration parameters:
--vertical-scroll-sensitivity ?vertical_scroll_sensitivity
and
--horizontal-scroll-sensitivity ?horizontal_scroll_sensitivity
They are in logarithmic scale. Values can be set to 0 (for 10 times less sensitive scrolling than default) and even negative, for example -1 gives 100 times less sensitive scrolling.
index 0d5247d..4720860 100644
--- a/src/camera.rs
+++ b/src/camera.rs
@@ -1,3 +1,4 @@
+use crate::configuration::Configuration;
=use crate::major_state::MajorState;
=use crate::simulation;
=use crate::simulation::SimulationParameters;
@@ -6,6 +7,7 @@ use bevy::input::mouse::MouseWheel;
=use bevy::prelude::*;
=use bevy_mod_raycast::prelude::*;
=use bevy_rts_camera::{RtsCamera, RtsCameraPlugin, RtsCameraSystemSet};
+use std::ops::{Div, Mul, Neg};
=
=pub struct CameraPlugin;
=
@@ -189,22 +191,35 @@ fn handle_drag(
= }
=}
=
-fn handle_scroll(mut scroll: EventReader<MouseWheel>, mut camera: Query<&mut RtsCamera>) {
+fn handle_scroll(
+ mut scroll: EventReader<MouseWheel>,
+ mut camera: Query<&mut RtsCamera>,
+ configuration: Res<Configuration>,
+) {
= use bevy::input::mouse::MouseScrollUnit;
=
= let Ok(mut camera) = camera.get_single_mut() else {
= return;
= };
=
+ let vertical_multiplier = (10.0_f32).powf(configuration.vertical_scroll_sensitivity);
+ let horizontal_multiplier = (10.0_f32).powf(configuration.horizontal_scroll_sensitivity);
+
= for event in scroll.read() {
= match event.unit {
= MouseScrollUnit::Line => {
+ debug!("Scrolling by lines {:03.3}", event.y);
= camera.target_zoom = (camera.target_zoom + event.y / 40.0).clamp(0.0, 1.0);
= camera.target_focus.rotate_axis(Vec3::Y, event.x / -10.0);
= }
= MouseScrollUnit::Pixel => {
- camera.target_zoom = (camera.target_zoom + event.y / 500.0).clamp(0.0, 1.0);
- camera.target_focus.rotate_axis(Vec3::Y, event.x / -500.0);
+ debug!("Scrolling by pixels {:03.3}", event.y);
+
+ let zoom_delta = event.y.mul(vertical_multiplier).div(10000.0);
+ let angle = event.x.mul(horizontal_multiplier).div(2500.0).neg();
+
+ camera.target_zoom = (camera.target_zoom + zoom_delta).clamp(0.0, 1.0);
+ camera.target_focus.rotate_axis(Vec3::Y, angle);
= }
= };
= }index d51d414..2b97bf0 100644
--- a/src/configuration.rs
+++ b/src/configuration.rs
@@ -13,11 +13,24 @@ impl Plugin for ConfigurationPlugin {
=}
=
=const DEFAULT_BEGINNING: u16 = 1840;
+
=#[cfg(debug_assertions)]
=const DEFAULT_DURATION: u16 = 10;
=#[cfg(not(debug_assertions))]
=const DEFAULT_DURATION: u16 = 150;
=
+// In web browsers the scrolling is reported differently than on desktop
+//
+// Those defaults work for my browser and laptop.
+#[cfg(not(target_arch = "wasm32"))]
+const DEFAULT_VERTICAL_SCROLL_SENSITIVITY: f32 = 1.0;
+#[cfg(not(target_arch = "wasm32"))]
+const DEFAULT_HORIZONTAL_SCROLL_SENSITIVITY: f32 = 1.0;
+#[cfg(target_arch = "wasm32")]
+const DEFAULT_VERTICAL_SCROLL_SENSITIVITY: f32 = 0.2;
+#[cfg(target_arch = "wasm32")]
+const DEFAULT_HORIZONTAL_SCROLL_SENSITIVITY: f32 = 0.2;
+
=#[derive(Resource, Clone, Debug, Serialize, Deserialize, Parser, Reflect)]
=#[reflect(Resource)]
=#[serde(default)]
@@ -42,6 +55,14 @@ pub struct Configuration {
= /// Should gizmos be drawn for visual debugging
= #[arg(long, default_value_t = false)]
= pub gizmos: bool,
+
+ /// Vertical scroll sensitivity
+ #[arg(long, default_value_t = DEFAULT_VERTICAL_SCROLL_SENSITIVITY)]
+ pub vertical_scroll_sensitivity: f32,
+
+ /// Horizontal scroll sensitivity
+ #[arg(long, default_value_t = DEFAULT_HORIZONTAL_SCROLL_SENSITIVITY)]
+ pub horizontal_scroll_sensitivity: f32,
=}
=
=impl Default for Configuration {
@@ -52,6 +73,8 @@ impl Default for Configuration {
= inspect: None,
= load: None,
= gizmos: false,
+ vertical_scroll_sensitivity: DEFAULT_VERTICAL_SCROLL_SENSITIVITY,
+ horizontal_scroll_sensitivity: DEFAULT_HORIZONTAL_SCROLL_SENSITIVITY,
= }
= }
=}Make the forest floor darker
On by
For better aesthetic effect.
index 2062eba..5ad1971 100644
Binary files a/art/snowglobe.blend and b/art/snowglobe.blend differindex e9096b1..d1dee4a 100644
Binary files a/assets/snowglobe.glb and b/assets/snowglobe.glb differFix a misaligned district model
On by
index f6ddc99..f037562 100644
Binary files a/art/districts.blend and b/art/districts.blend differindex 2b92be5..7ae30a9 100644
Binary files a/assets/districts.glb and b/assets/districts.glb differAccount for more than 1000 parcels in districts
On by
The regular expression used to detect parcels assumed 3 digits suffix, but we had more than 1000 parcels in districts.blend, so some of them had 4 digits. Now any number of digits is allowed.
index b1fcaaa..25a3f92 100644
--- a/src/buildings.rs
+++ b/src/buildings.rs
@@ -360,7 +360,7 @@ impl FromStr for BuildingVariant {
=
= fn from_str(s: &str) -> Result<Self, Self::Err> {
= // TODO: Make invalid regexp a compile time error
- let pattern = Regex::new(r"^building-(?<class>.+)\.(?<appearance>\d{3})$").unwrap();
+ let pattern = Regex::new(r"^building-(?<class>.+)\.(?<appearance>\d+)$").unwrap();
=
= pattern
= .captures(s)Improve roads and districts models
On by
- Darker asphalt.
- Pavement sticking 20cm up from the ground.
- Transparent water.
- Sloped banks of ponds.
- A sandy beach.
index f037562..7fa3d8d 100644
Binary files a/art/districts.blend and b/art/districts.blend differindex 8c9141e..9c5fb09 100644
Binary files a/art/roads.blend and b/art/roads.blend differindex 7ae30a9..2f39e4c 100644
Binary files a/assets/districts.glb and b/assets/districts.glb differindex c14c76f..b09a6c4 100644
Binary files a/assets/roads.glb and b/assets/roads.glb differPrevent depth fighting artifacts on far objects
On by
by increasing the far value of the camera projection
index 4720860..3eca72b 100644
--- a/src/camera.rs
+++ b/src/camera.rs
@@ -43,7 +43,14 @@ impl Plugin for CameraPlugin {
=
=fn setup_camera(mut commands: Commands, parameters: Res<SimulationParameters>) {
= commands.spawn((
- Camera3dBundle::default(),
+ Camera3dBundle {
+ projection: Projection::Perspective(PerspectiveProjection {
+ far: 5000.0,
+ near: 5.0,
+ ..default()
+ }),
+ ..default()
+ },
= RtsCamera {
= height_max: 3000.,
= // TODO: Lower the camera once ground position is back a 0When scrolling to zoom, consider pointer position
On by
When zooming in, move toward the pointer. When zooming out, away. So that the pointer remains roughly above the same place on the ground, the way it usually works in maps software. It doesn't stay exactly above the same place because of changing angle. But it's good enough.
index 3eca72b..cdc77fc 100644
--- a/src/camera.rs
+++ b/src/camera.rs
@@ -200,12 +200,12 @@ fn handle_drag(
=
=fn handle_scroll(
= mut scroll: EventReader<MouseWheel>,
- mut camera: Query<&mut RtsCamera>,
+ mut camera: Query<(&mut RtsCamera, &RaycastSource<PointerRay>)>,
= configuration: Res<Configuration>,
=) {
= use bevy::input::mouse::MouseScrollUnit;
=
- let Ok(mut camera) = camera.get_single_mut() else {
+ let Ok((mut camera, source)) = camera.get_single_mut() else {
= return;
= };
=
@@ -213,11 +213,13 @@ fn handle_scroll(
= let horizontal_multiplier = (10.0_f32).powf(configuration.horizontal_scroll_sensitivity);
=
= for event in scroll.read() {
- match event.unit {
+ let (zoom_delta, angle) = match event.unit {
= MouseScrollUnit::Line => {
= debug!("Scrolling by lines {:03.3}", event.y);
- camera.target_zoom = (camera.target_zoom + event.y / 40.0).clamp(0.0, 1.0);
- camera.target_focus.rotate_axis(Vec3::Y, event.x / -10.0);
+
+ let zoom_delta = event.y / 40.0;
+ let angle = event.x / -10.0;
+ (zoom_delta, angle)
= }
= MouseScrollUnit::Pixel => {
= debug!("Scrolling by pixels {:03.3}", event.y);
@@ -225,10 +227,21 @@ fn handle_scroll(
= let zoom_delta = event.y.mul(vertical_multiplier).div(10000.0);
= let angle = event.x.mul(horizontal_multiplier).div(2500.0).neg();
=
- camera.target_zoom = (camera.target_zoom + zoom_delta).clamp(0.0, 1.0);
- camera.target_focus.rotate_axis(Vec3::Y, angle);
+ (zoom_delta, angle)
= }
= };
+ camera.target_zoom = (camera.target_zoom + zoom_delta).clamp(0.0, 1.0);
+ camera.target_focus.rotate_axis(Vec3::Y, angle);
+
+ // Move focus toward the intersection
+ let Some(intersection) = ground_intersection(source) else {
+ warn!("Cannot get ground intersection of the pointer ray to calculate camera drag.");
+ return;
+ };
+
+ let focus_distance = intersection.position() - camera.focus.translation;
+ let current_zoom = camera.zoom;
+ camera.target_focus.translation += focus_distance * zoom_delta * (current_zoom + 1.0);
= }
=}
=Update Cargo dependencies
On by
index ae30573..5d70a4c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4,9 +4,9 @@ version = 3
=
=[[package]]
=name = "ab_glyph"
-version = "0.2.23"
+version = "0.2.25"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80179d7dd5d7e8c285d67c4a1e652972a92de7475beddfb92028c76463b13225"
+checksum = "6f90148830dac590fac7ccfe78ec4a8ea404c60f75a24e16407a71f0f40de775"
=dependencies = [
= "ab_glyph_rasterizer",
= "owned_ttf_parser",
@@ -102,18 +102,18 @@ dependencies = [
=
=[[package]]
=name = "aho-corasick"
-version = "1.1.2"
+version = "1.1.3"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
=dependencies = [
= "memchr",
=]
=
=[[package]]
=name = "allocator-api2"
-version = "0.2.16"
+version = "0.2.18"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
+checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"
=
=[[package]]
=name = "alsa"
@@ -122,7 +122,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "37fe60779335388a88c01ac6c3be40304d1e349de3ada3b15f7808bb90fa9dce"
=dependencies = [
= "alsa-sys",
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "libc",
=]
=
@@ -143,7 +143,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "ee91c0c2905bae44f84bfa4e044536541df26b7703fd0888deeb9060fcc44289"
=dependencies = [
= "android-properties",
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "cc",
= "cesu8",
= "jni",
@@ -228,9 +228,9 @@ dependencies = [
=
=[[package]]
=name = "anyhow"
-version = "1.0.81"
+version = "1.0.82"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247"
+checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519"
=
=[[package]]
=name = "approx"
@@ -299,24 +299,23 @@ dependencies = [
=
=[[package]]
=name = "async-channel"
-version = "2.2.0"
+version = "2.2.1"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3"
+checksum = "136d4d23bcc79e27423727b36823d86233aad06dfea531837b038394d11e9928"
=dependencies = [
= "concurrent-queue",
- "event-listener 5.2.0",
- "event-listener-strategy 0.5.0",
+ "event-listener 5.3.0",
+ "event-listener-strategy 0.5.1",
= "futures-core",
= "pin-project-lite",
=]
=
=[[package]]
=name = "async-executor"
-version = "1.8.0"
+version = "1.11.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c"
+checksum = "b10202063978b3351199d68f8b22c4e47e4b1b822f8d43fd862d5ea8c006b29a"
=dependencies = [
- "async-lock",
= "async-task",
= "concurrent-queue",
= "fastrand",
@@ -369,9 +368,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
=
=[[package]]
=name = "autocfg"
-version = "1.1.0"
+version = "1.2.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
=
=[[package]]
=name = "backtrace"
@@ -402,9 +401,9 @@ checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
=
=[[package]]
=name = "bevy"
-version = "0.13.0"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "611dd99f412e862610adb43e2243b16436c6d8009f6d9dbe8ce3d6d840b34029"
+checksum = "65b9eadaacf8fe971331bc3f250f35c18bc9dace3f96b483062f38ac07e3a1b4"
=dependencies = [
= "bevy_internal",
=]
@@ -444,14 +443,14 @@ source = "git+https://github.com/jakobhellermann/bevy-inspector-egui?rev=1563fe9
=dependencies = [
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]
=name = "bevy_a11y"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6192db480a04d4a0ad5d89a2fbd78ccca5ce902829a49ec2d1dbc213222ed8b1"
+checksum = "cd8ef2795f7f5c816a4eda04834083eb5a92e8fef603bc21d2091c6e3b63621a"
=dependencies = [
= "accesskit",
= "bevy_app",
@@ -461,9 +460,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_animation"
-version = "0.13.0"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa4ef4c35533df3f0c4e938cf6a831456ea563775bab799336f74331140c7665"
+checksum = "e553d68bc937586010ed2194ac66b751bc6238cf622b3ed5a86f4e1581e94509"
=dependencies = [
= "bevy_app",
= "bevy_asset",
@@ -480,9 +479,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_app"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b508824497f3a3a2fab8398dc3944a4d4adddcc30ee25cd6d45b0a57336549ce"
+checksum = "ab348a32e46d21c5d61794294a92d415a770d26c7ba8951830b127b40b53ccc4"
=dependencies = [
= "bevy_derive",
= "bevy_ecs",
@@ -511,9 +510,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_asset"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ccf224b57fb65e1cde921afe0b343c2d595531dbf882c41abad01bbc665a05c4"
+checksum = "50028e0d4f28a9f6aab48f61b688ba2793141188f88cdc9aa6c2bca2cc02ad35"
=dependencies = [
= "async-broadcast",
= "async-fs",
@@ -543,21 +542,21 @@ dependencies = [
=
=[[package]]
=name = "bevy_asset_macros"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "684c855651e7734740b76ada0e7daed116c46d393f9031cc45c4fe9ad5829548"
+checksum = "6617475908368418d815360148fdbb82f879dc255a70d2d7baa3766f0cd4bfd7"
=dependencies = [
= "bevy_macro_utils",
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]
=name = "bevy_audio"
-version = "0.13.0"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4fe7f952e5e0a343fbde43180db7b8e719ad78594480c91b26876623944a3a1"
+checksum = "b0f12495e230cd5cf59c6051cdd820c97d7fe4f0597d4d9c3240c62e9c65b485"
=dependencies = [
= "bevy_app",
= "bevy_asset",
@@ -567,15 +566,15 @@ dependencies = [
= "bevy_reflect",
= "bevy_transform",
= "bevy_utils",
- "oboe 0.5.0",
+ "cpal",
= "rodio",
=]
=
=[[package]]
=name = "bevy_core"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1a8f4722fb978d308b6311f3dd61f6885165055ad05ce3dfc1b2fd001bb017e"
+checksum = "12b0042f241ba7cd61487aadd8addfb56f7eeb662d713ac1577026704508fc6c"
=dependencies = [
= "bevy_app",
= "bevy_ecs",
@@ -589,9 +588,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_core_pipeline"
-version = "0.13.0"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "626a5aaadbdd69eae020c5856575d2d0113423ae1ae1351377e20956d940052c"
+checksum = "48b7a471cb8ba665f12f7a167faa5566c11386f5bfc77d2e10bfde22b179f7b3"
=dependencies = [
= "bevy_app",
= "bevy_asset",
@@ -604,27 +603,27 @@ dependencies = [
= "bevy_render",
= "bevy_transform",
= "bevy_utils",
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "radsort",
= "serde",
=]
=
=[[package]]
=name = "bevy_derive"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7de77523d154e220a740e568a89f52fac7de481374bdecbbbeb283a37580ba34"
+checksum = "f0e01f8343f391e2d6a63b368b82fb5b252ed43c8713fc87f9a8f2d59407dd00"
=dependencies = [
= "bevy_macro_utils",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]
=name = "bevy_diagnostic"
-version = "0.13.0"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01a104acfdc5280accd01a3524810daf3bda72924e3da0c8a9ec816a57eef4e3"
+checksum = "e1401cdccec7e49378d013dfb0ff62c251f85b3be19dcdf04cfd827f793d1ee9"
=dependencies = [
= "bevy_app",
= "bevy_core",
@@ -638,9 +637,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_ecs"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0a027175613f630a51273c0f8ae909dd54ea3ce72eb573f456056553f79918ac"
+checksum = "98e612a8e7962ead849e370f3a7e972b88df879ced05cd9dad6a0286d14650cf"
=dependencies = [
= "async-channel",
= "bevy_ecs_macros",
@@ -658,14 +657,14 @@ dependencies = [
=
=[[package]]
=name = "bevy_ecs_macros"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "55dbbb6300f08cef5983497970db8545d3cbda6ee4f410a6c6742b7b6bbfd3af"
+checksum = "807b5106c3410e58f4f523b55ea3c071e2a09e31e9510f3c22021c6a04732b5b"
=dependencies = [
= "bevy_macro_utils",
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]
@@ -684,9 +683,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_encase_derive"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df72ac1273fcdb8105736c42815442ae1291f1f577e34cb7e9d18f732103e2f0"
+checksum = "887087a5e522d9f20733a84dd7e6e9ca04cd8fdfac659220ed87d675eebc83a7"
=dependencies = [
= "bevy_macro_utils",
= "encase_derive_impl",
@@ -713,14 +712,14 @@ checksum = "fa29be733a02a5d7ca4507ef15f294711c1a0884b9a9a2730640ff4e7d0200ab"
=dependencies = [
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]
=name = "bevy_gilrs"
-version = "0.13.0"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96364a1875ee4545fcf825c78dc065ddb9a3b2a509083ef11142f9de0eb8aa17"
+checksum = "7d133c65ab756f130c65cf00f37dc293fb9a9336c891802baf006c63e300d0e2"
=dependencies = [
= "bevy_app",
= "bevy_ecs",
@@ -734,9 +733,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_gizmos"
-version = "0.13.0"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bdca80b7b4db340eb666d69374a0195b3935759120d0b990fcef8b27d0fb3680"
+checksum = "054df3550a9d423a961de65b459946ff23304f97f25af8a62c23f4259db8506d"
=dependencies = [
= "bevy_app",
= "bevy_asset",
@@ -756,21 +755,21 @@ dependencies = [
=
=[[package]]
=name = "bevy_gizmos_macros"
-version = "0.13.0"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a949eb8b4538a6e4d875321cda2b63dc0fb0317cf18c8245ca5a32f24f6d26d"
+checksum = "abdcaf74d8cd34aa5c3293527e7a012826840886ad3496c1b963ed8b66b1619f"
=dependencies = [
= "bevy_macro_utils",
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]
=name = "bevy_gltf"
-version = "0.13.0"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "031d0c2a7c0353bb9ac08a5130e58b9a2de3cdaa3c31b5da00b22a9e4732a155"
+checksum = "21ecf404295055deb7fe037495891bc135ca10d46bc5b6c55f9ab7b7ebc61d31"
=dependencies = [
= "base64",
= "bevy_animation",
@@ -798,9 +797,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_hierarchy"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b2999d1e5bb877b475c9b2d17643d5fb47fc4cc49ea48ba3ab5a6b00ed850a6"
+checksum = "bbb3dfad24866a6713dafa3065a91c5cf5e355f6e1b191c25d704ae54185246c"
=dependencies = [
= "bevy_app",
= "bevy_core",
@@ -812,9 +811,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_input"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c22481e4290e2eca68b0c1f5f0a826f185d8f5e40e05c86bb6044dcfe3a04b3"
+checksum = "47f2b2b3df168c6ef661d25e09abf5bd4fecaacd400f27e5db650df1c3fa3a3b"
=dependencies = [
= "bevy_app",
= "bevy_ecs",
@@ -828,9 +827,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_internal"
-version = "0.13.0"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7af89c7083830b1d65fcf0260c3d2537c397fe8ce871471b6e97198a4704f23e"
+checksum = "f58ec0ce77603df9474cde61f429126bfe06eb79094440e9141afb4217751c79"
=dependencies = [
= "bevy_a11y",
= "bevy_animation",
@@ -867,9 +866,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_log"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "20c7b4e2443654d68b6f8c54e5f1ce3a16c8a9af10f4832390dcae36c1323307"
+checksum = "a5eea6c527fd828b7fef8d0f518167f27f405b904a16f227b644687d3f46a809"
=dependencies = [
= "android_log-sys",
= "bevy_app",
@@ -883,22 +882,22 @@ dependencies = [
=
=[[package]]
=name = "bevy_macro_utils"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3bbbf88fc577a21ee9994feed2253ee9838b63fb976783b7a549edfbe07c6764"
+checksum = "eb270c98a96243b29465139ed10bda2f675d00a11904f6588a5f7fc4774119c7"
=dependencies = [
= "proc-macro2",
= "quote",
= "rustc-hash",
- "syn 2.0.52",
+ "syn 2.0.60",
= "toml_edit",
=]
=
=[[package]]
=name = "bevy_math"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d30721f36a0b5f9ad39deb140c50b85cbbaefebab8d10bd20d9de1c9572f968"
+checksum = "f06daa26ffb82d90ba772256c0ba286f6c305c392f6976c9822717974805837c"
=dependencies = [
= "glam",
= "serde",
@@ -906,9 +905,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_mikktspace"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc081a695c3513f09fdc640bf7f66cd73c47eb479da50312bf9710ee6927729d"
+checksum = "a0d7ef7f2a826d0b19f059035831ce00a5e930435cc53c61e045773d0483f67a"
=dependencies = [
= "glam",
=]
@@ -965,9 +964,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_pbr"
-version = "0.13.0"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c31c72bf12e50ff76c9ed9a7c51ceb88bfea9865d00f24d95b12344fffe1e270"
+checksum = "75b29c80269fa6db55c9e33701edd3ecb73d8866ca8cb814d49a9d3fb72531b6"
=dependencies = [
= "bevy_app",
= "bevy_asset",
@@ -980,7 +979,7 @@ dependencies = [
= "bevy_transform",
= "bevy_utils",
= "bevy_window",
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "bytemuck",
= "fixedbitset",
= "radsort",
@@ -1125,15 +1124,15 @@ dependencies = [
=
=[[package]]
=name = "bevy_ptr"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea003584000ef02b73800cc7cb62ee74792fff431e6a8df36863c43bf56fb491"
+checksum = "8050e2869fe341db6874203b5a01ff12673807a2c7c80cb829f6c7bea6997268"
=
=[[package]]
=name = "bevy_reflect"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1101dbd44ae35e5c66802e46cfba1182e49f6163c824bee380d4acab5b2f640"
+checksum = "ccbd7de21d586457a340a0962ad0747dc5098ff925eb6b27a918c4bdd8252f7b"
=dependencies = [
= "bevy_math",
= "bevy_ptr",
@@ -1149,22 +1148,22 @@ dependencies = [
=
=[[package]]
=name = "bevy_reflect_derive"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2a8791d5841a6db862571f709d7ee70c2a5eb1634c3a4329817d04f0e307c2d"
+checksum = "3ce33051bd49036d4a5a62aa3f2068672ec55f3ebe92aa0d003a341f15cc37ac"
=dependencies = [
= "bevy_macro_utils",
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
= "uuid",
=]
=
=[[package]]
=name = "bevy_render"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75bbb48471f8cd06f5253e271f9b793695f5b821fc9d39a875497905578d9867"
+checksum = "88b2c4b644c739c0b474b6f8f7b0bc68ac13d83b59688781e9a7753c52780177"
=dependencies = [
= "async-channel",
= "bevy_app",
@@ -1184,7 +1183,7 @@ dependencies = [
= "bevy_transform",
= "bevy_utils",
= "bevy_window",
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "bytemuck",
= "codespan-reporting",
= "downcast-rs",
@@ -1207,21 +1206,21 @@ dependencies = [
=
=[[package]]
=name = "bevy_render_macros"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ffd61a89e7a1b55c78a0aef1fcadd0247fe74a101c00f831791db73d63465051"
+checksum = "720b88406e786e378829b7d43c1ffb5300186912b99904d0d4d8ec6698a4f210"
=dependencies = [
= "bevy_macro_utils",
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]
=name = "bevy_rts_camera"
-version = "0.4.0"
+version = "0.4.1"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b52a24bd525131eae1f27f60b9434ed4f449714ff545bdabdaeeeae67c20ecd"
+checksum = "d7e1784c11a86508988e3db12a52109a3fe3436c13386bbbc8e60de5646e1033"
=dependencies = [
= "bevy",
= "bevy_mod_raycast",
@@ -1229,9 +1228,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_scene"
-version = "0.13.0"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c3c82eaff0b22949183a75a7e2d7fc4ece808235918b34c5b282aab52c3563a"
+checksum = "1f3d2caa1bfe7542dbe2c62e1bcc10791ba181fb744d2fe6711d1d373354da7c"
=dependencies = [
= "bevy_app",
= "bevy_asset",
@@ -1249,9 +1248,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_sprite"
-version = "0.13.0"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ea977d7d7c48fc4ba283d449f09528c4e70db17c9048e32e99ecd9890d72223"
+checksum = "8cad1b555161f50e5d62b7fdf7ebeef1b24338aae7a88e51985da9553cd60ddf"
=dependencies = [
= "bevy_app",
= "bevy_asset",
@@ -1264,7 +1263,7 @@ dependencies = [
= "bevy_render",
= "bevy_transform",
= "bevy_utils",
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "bytemuck",
= "fixedbitset",
= "guillotiere",
@@ -1275,9 +1274,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_tasks"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "40be36aeec06b8f0eb87894922c6a7fbd8f2a5c8e77dcb9dcbf77641046988c0"
+checksum = "f07fcc4969b357de143509925b39c9a2c56eaa8750828d97f319ca9ed41897cb"
=dependencies = [
= "async-channel",
= "async-executor",
@@ -1289,9 +1288,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_text"
-version = "0.13.0"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "006990d27551dbc339774178e833290952511621662fd5ca23a4e6e922ab2d9f"
+checksum = "c4e8456ae0bea7d6b7621e42c1c12bf66c0891381e62c948ab23920673ce611c"
=dependencies = [
= "ab_glyph",
= "bevy_app",
@@ -1311,9 +1310,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_time"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06fc48cf59acd2b1c52e61787b5bb3db1a0f923cc6ccc68c0d8ab2b5894cfd28"
+checksum = "38ea5ae9fe7f56f555dbb05a88d34931907873e3f0c7dc426591839eef72fe3e"
=dependencies = [
= "bevy_app",
= "bevy_ecs",
@@ -1326,9 +1325,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_transform"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b962ae4253f5413b64a839ab8e8d63bc3e3db45f41d06b6ddc7886acdcb5d0f5"
+checksum = "a0d51a1f332cc00939d2f19ed6b909e5ed7037e39c7e25cc86930d79d432163e"
=dependencies = [
= "bevy_app",
= "bevy_ecs",
@@ -1341,9 +1340,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_ui"
-version = "0.13.0"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fafe872906bac6d7fc8ecff166f56b4253465b2895ed88801499aa113548ccc6"
+checksum = "b6bbc30be39cfbfa3a073b541d22aea43ab14452dea12d7411ce201df17ff7b1"
=dependencies = [
= "bevy_a11y",
= "bevy_app",
@@ -1370,9 +1369,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_utils"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac758c2e8509a4a260b7a91f920be3beee6ab9e76e388494240ac5d672779159"
+checksum = "5a9f845a985c00e0ee8dc2d8af3f417be925fb52aad4bda5b96e2e58a2b4d2eb"
=dependencies = [
= "ahash",
= "bevy_utils_proc_macros",
@@ -1389,20 +1388,20 @@ dependencies = [
=
=[[package]]
=name = "bevy_utils_proc_macros"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "014c80f466ed01821a2e602d63cd5076915c1af5de5fa3c074cc4a9ca898ada7"
+checksum = "bef158627f30503d5c18c20c60b444829f698d343516eeaf6eeee078c9a45163"
=dependencies = [
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]
=name = "bevy_window"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa0c2a1e580b3b0ad0c928a5e250c8375c6a8a70d8b0f483b23d3bf5b670cc1a"
+checksum = "976202d2ed838176595b550ac654b15ae236e0178a6f19a94ca6d58f2a96ca60"
=dependencies = [
= "bevy_a11y",
= "bevy_app",
@@ -1418,9 +1417,9 @@ dependencies = [
=
=[[package]]
=name = "bevy_winit"
-version = "0.13.1"
+version = "0.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2c408d459172758a4cfa37e3452d4ea0898101ec2b6d92aa3eb698511bef389"
+checksum = "aa66539aa93d8522b146bf82de429714ea6370a6061fc1f1ff7bcacd4e64c6c4"
=dependencies = [
= "accesskit_winit",
= "approx",
@@ -1447,7 +1446,7 @@ version = "0.69.4"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "cexpr",
= "clang-sys",
= "itertools",
@@ -1458,7 +1457,7 @@ dependencies = [
= "regex",
= "rustc-hash",
= "shlex",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]
@@ -1484,9 +1483,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
=
=[[package]]
=name = "bitflags"
-version = "2.4.2"
+version = "2.5.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
+checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
=dependencies = [
= "serde",
=]
@@ -1534,7 +1533,7 @@ version = "0.2.1"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7"
=dependencies = [
- "objc-sys 0.3.2",
+ "objc-sys 0.3.3",
=]
=
=[[package]]
@@ -1575,9 +1574,9 @@ dependencies = [
=
=[[package]]
=name = "bumpalo"
-version = "3.15.4"
+version = "3.16.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa"
+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
=
=[[package]]
=name = "bytemuck"
@@ -1596,7 +1595,7 @@ checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60"
=dependencies = [
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]
@@ -1607,9 +1606,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
=
=[[package]]
=name = "bytes"
-version = "1.5.0"
+version = "1.6.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
=
=[[package]]
=name = "calloop"
@@ -1617,7 +1616,7 @@ version = "0.12.4"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "log",
= "polling",
= "rustix",
@@ -1639,9 +1638,9 @@ dependencies = [
=
=[[package]]
=name = "cc"
-version = "1.0.90"
+version = "1.0.94"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
+checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7"
=dependencies = [
= "jobserver",
= "libc",
@@ -1716,7 +1715,7 @@ dependencies = [
= "heck 0.5.0",
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]
@@ -1727,9 +1726,9 @@ checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
=
=[[package]]
=name = "clipboard-win"
-version = "5.2.0"
+version = "5.3.1"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12f9a0700e0127ba15d1d52dd742097f821cd9c65939303a44d970465040a297"
+checksum = "79f4473f5144e20d9aceaf2972478f06ddf687831eafeeb434fbaf0acc4144ad"
=dependencies = [
= "error-code",
=]
@@ -1789,9 +1788,9 @@ dependencies = [
=
=[[package]]
=name = "combine"
-version = "4.6.6"
+version = "4.6.7"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4"
+checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd"
=dependencies = [
= "bytes",
= "memchr",
@@ -1848,9 +1847,9 @@ checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2"
=
=[[package]]
=name = "constgebra"
-version = "0.1.3"
+version = "0.1.4"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "edd23e864550e6dafc1e41ac78ce4f1ccddc8672b40c403524a04ff3f0518420"
+checksum = "e1aaf9b65849a68662ac6c0810c8893a765c960b907dd7cfab9c4a50bf764fbc"
=dependencies = [
= "const_soft_float",
=]
@@ -1879,9 +1878,9 @@ checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
=
=[[package]]
=name = "core-graphics"
-version = "0.23.1"
+version = "0.23.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212"
+checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081"
=dependencies = [
= "bitflags 1.3.2",
= "core-foundation",
@@ -1937,7 +1936,7 @@ dependencies = [
= "mach2",
= "ndk",
= "ndk-context",
- "oboe 0.6.1",
+ "oboe",
= "wasm-bindgen",
= "wasm-bindgen-futures",
= "web-sys",
@@ -1955,9 +1954,9 @@ dependencies = [
=
=[[package]]
=name = "crc"
-version = "3.0.1"
+version = "3.2.1"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe"
+checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636"
=dependencies = [
= "crc-catalog",
=]
@@ -2023,7 +2022,7 @@ version = "0.19.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "libloading 0.8.3",
= "winapi",
=]
@@ -2042,9 +2041,9 @@ checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5"
=
=[[package]]
=name = "der"
-version = "0.7.8"
+version = "0.7.9"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c"
+checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0"
=dependencies = [
= "const-oid",
= "pem-rfc7468",
@@ -2099,9 +2098,9 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b"
=
=[[package]]
=name = "downcast-rs"
-version = "1.2.0"
+version = "1.2.1"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650"
+checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2"
=
=[[package]]
=name = "ecolor"
@@ -2125,9 +2124,9 @@ dependencies = [
=
=[[package]]
=name = "either"
-version = "1.10.0"
+version = "1.11.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a"
+checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2"
=dependencies = [
= "serde",
=]
@@ -2170,7 +2169,7 @@ checksum = "92959a9e8d13eaa13b8ae8c7b583c3bf1669ca7a8e7708a088d12587ba86effc"
=dependencies = [
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]
@@ -2258,9 +2257,9 @@ dependencies = [
=
=[[package]]
=name = "event-listener"
-version = "5.2.0"
+version = "5.3.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b5fb89194fa3cad959b833185b3063ba881dbfc7030680b314250779fb4cc91"
+checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24"
=dependencies = [
= "concurrent-queue",
= "parking",
@@ -2279,19 +2278,19 @@ dependencies = [
=
=[[package]]
=name = "event-listener-strategy"
-version = "0.5.0"
+version = "0.5.1"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291"
+checksum = "332f51cb23d20b0de8458b86580878211da09bcd4503cb579c225b3d124cabb3"
=dependencies = [
- "event-listener 5.2.0",
+ "event-listener 5.3.0",
= "pin-project-lite",
=]
=
=[[package]]
=name = "fastrand"
-version = "2.0.1"
+version = "2.0.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
+checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984"
=
=[[package]]
=name = "fdeflate"
@@ -2359,7 +2358,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
=dependencies = [
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]
@@ -2423,9 +2422,9 @@ checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
=
=[[package]]
=name = "futures-lite"
-version = "2.2.0"
+version = "2.3.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba"
+checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
=dependencies = [
= "fastrand",
= "futures-core",
@@ -2484,9 +2483,9 @@ dependencies = [
=
=[[package]]
=name = "getrandom"
-version = "0.2.12"
+version = "0.2.14"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
+checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c"
=dependencies = [
= "cfg-if",
= "js-sys",
@@ -2497,9 +2496,9 @@ dependencies = [
=
=[[package]]
=name = "gilrs"
-version = "0.10.5"
+version = "0.10.6"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0510502768c64b944bf4d1518ba36e2431c638ac996ebacb543a297b145f8300"
+checksum = "499067aa54af19f88732dc418f61f23d5912de1518665bb0eca034ca0d07574c"
=dependencies = [
= "fnv",
= "gilrs-core",
@@ -2630,7 +2629,7 @@ dependencies = [
= "inflections",
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]
@@ -2671,7 +2670,7 @@ version = "0.6.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "gpu-alloc-types",
=]
=
@@ -2681,7 +2680,7 @@ version = "0.3.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
=]
=
=[[package]]
@@ -2703,7 +2702,7 @@ version = "0.2.4"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "gpu-descriptor-types",
= "hashbrown",
=]
@@ -2714,7 +2713,7 @@ version = "0.1.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
=]
=
=[[package]]
@@ -2759,7 +2758,7 @@ version = "0.11.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "com",
= "libc",
= "libloading 0.8.3",
@@ -2783,6 +2782,12 @@ version = "0.5.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
=
+[[package]]
+name = "hermit-abi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
+
=[[package]]
=name = "hex"
=version = "0.4.3"
@@ -2869,9 +2874,9 @@ dependencies = [
=
=[[package]]
=name = "indexmap"
-version = "2.2.5"
+version = "2.2.6"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
=dependencies = [
= "equivalent",
= "hashbrown",
@@ -2905,9 +2910,9 @@ dependencies = [
=
=[[package]]
=name = "io-kit-sys"
-version = "0.4.0"
+version = "0.4.1"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4769cb30e5dcf1710fc6730d3e94f78c47723a014a567de385e113c737394640"
+checksum = "617ee6cf8e3f66f3b4ea67a4058564628cde41901316e19f559e14c7c72c5e7b"
=dependencies = [
= "core-foundation-sys",
= "mach2",
@@ -2924,9 +2929,9 @@ dependencies = [
=
=[[package]]
=name = "itoa"
-version = "1.0.10"
+version = "1.0.11"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
=
=[[package]]
=name = "jni"
@@ -2952,9 +2957,9 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
=
=[[package]]
=name = "jobserver"
-version = "0.1.28"
+version = "0.1.30"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6"
+checksum = "685a7d121ee3f65ae4fddd72b25a04bb36b6af81bc0828f7d5434c0fe60fa3a2"
=dependencies = [
= "libc",
=]
@@ -3049,7 +3054,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19"
=dependencies = [
= "cfg-if",
- "windows-targets 0.52.4",
+ "windows-targets 0.52.5",
=]
=
=[[package]]
@@ -3064,7 +3069,7 @@ version = "0.0.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "libc",
= "redox_syscall 0.4.1",
=]
@@ -3151,9 +3156,9 @@ dependencies = [
=
=[[package]]
=name = "memchr"
-version = "2.7.1"
+version = "2.7.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
+checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
=
=[[package]]
=name = "memmap2"
@@ -3170,7 +3175,7 @@ version = "0.27.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "block",
= "core-graphics-types",
= "foreign-types",
@@ -3197,9 +3202,9 @@ dependencies = [
=
=[[package]]
=name = "mio"
-version = "0.8.10"
+version = "0.8.11"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09"
+checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
=dependencies = [
= "libc",
= "wasi",
@@ -3213,7 +3218,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843"
=dependencies = [
= "bit-set",
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "codespan-reporting",
= "hexf-parse",
= "indexmap",
@@ -3240,7 +3245,7 @@ dependencies = [
= "naga",
= "once_cell",
= "regex",
- "regex-syntax 0.8.2",
+ "regex-syntax 0.8.3",
= "rustc-hash",
= "thiserror",
= "tracing",
@@ -3253,7 +3258,7 @@ version = "0.8.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "jni-sys",
= "log",
= "ndk-sys",
@@ -3283,7 +3288,7 @@ version = "0.28.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "cfg-if",
= "cfg_aliases",
= "libc",
@@ -3347,17 +3352,6 @@ dependencies = [
= "zeroize",
=]
=
-[[package]]
-name = "num-derive"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 1.0.109",
-]
-
=[[package]]
=name = "num-derive"
=version = "0.4.2"
@@ -3366,7 +3360,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
=dependencies = [
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]
@@ -3417,7 +3411,7 @@ dependencies = [
= "proc-macro-crate",
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]
@@ -3449,9 +3443,9 @@ checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7"
=
=[[package]]
=name = "objc-sys"
-version = "0.3.2"
+version = "0.3.3"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7c71324e4180d0899963fc83d9d241ac39e699609fc1025a850aadac8257459"
+checksum = "da284c198fb9b7b0603f8635185e85fbd5b64ee154b1ed406d489077de2d6d60"
=
=[[package]]
=name = "objc2"
@@ -3470,7 +3464,7 @@ version = "0.4.1"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d"
=dependencies = [
- "objc-sys 0.3.2",
+ "objc-sys 0.3.3",
= "objc2-encode 3.0.0",
=]
=
@@ -3516,17 +3510,6 @@ dependencies = [
= "memchr",
=]
=
-[[package]]
-name = "oboe"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8868cc237ee02e2d9618539a23a8d228b9bb3fc2e7a5b11eed3831de77c395d0"
-dependencies = [
- "num-derive 0.3.3",
- "num-traits",
- "oboe-sys 0.5.0",
-]
-
=[[package]]
=name = "oboe"
=version = "0.6.1"
@@ -3536,18 +3519,9 @@ dependencies = [
= "jni",
= "ndk",
= "ndk-context",
- "num-derive 0.4.2",
+ "num-derive",
= "num-traits",
- "oboe-sys 0.6.1",
-]
-
-[[package]]
-name = "oboe-sys"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f44155e7fb718d3cfddcf70690b2b51ac4412f347cd9e4fbe511abe9cd7b5f2"
-dependencies = [
- "cc",
+ "oboe-sys",
=]
=
=[[package]]
@@ -3690,9 +3664,9 @@ dependencies = [
=
=[[package]]
=name = "pin-project-lite"
-version = "0.2.13"
+version = "0.2.14"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
=
=[[package]]
=name = "pin-utils"
@@ -3753,12 +3727,13 @@ dependencies = [
=
=[[package]]
=name = "polling"
-version = "3.5.0"
+version = "3.6.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9"
+checksum = "e0c976a60b2d7e99d6f229e414670a9b85d13ac305cc6d1e9c134de58c5aaaf6"
=dependencies = [
= "cfg-if",
= "concurrent-queue",
+ "hermit-abi",
= "pin-project-lite",
= "rustix",
= "tracing",
@@ -3803,9 +3778,9 @@ dependencies = [
=
=[[package]]
=name = "proc-macro2"
-version = "1.0.79"
+version = "1.0.81"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
+checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba"
=dependencies = [
= "unicode-ident",
=]
@@ -3827,9 +3802,9 @@ dependencies = [
=
=[[package]]
=name = "quote"
-version = "1.0.35"
+version = "1.0.36"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
=dependencies = [
= "proc-macro2",
=]
@@ -3914,14 +3889,14 @@ dependencies = [
=
=[[package]]
=name = "regex"
-version = "1.10.3"
+version = "1.10.4"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
+checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
=dependencies = [
= "aho-corasick",
= "memchr",
= "regex-automata 0.4.6",
- "regex-syntax 0.8.2",
+ "regex-syntax 0.8.3",
=]
=
=[[package]]
@@ -3941,7 +3916,7 @@ checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
=dependencies = [
= "aho-corasick",
= "memchr",
- "regex-syntax 0.8.2",
+ "regex-syntax 0.8.3",
=]
=
=[[package]]
@@ -3952,9 +3927,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
=
=[[package]]
=name = "regex-syntax"
-version = "0.8.2"
+version = "0.8.3"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
=
=[[package]]
=name = "renderdoc-sys"
@@ -3979,7 +3954,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94"
=dependencies = [
= "base64",
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "serde",
= "serde_derive",
=]
@@ -4027,11 +4002,11 @@ dependencies = [
=
=[[package]]
=name = "rustix"
-version = "0.38.31"
+version = "0.38.32"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949"
+checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "errno",
= "libc",
= "linux-raw-sys",
@@ -4097,29 +4072,29 @@ checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
=
=[[package]]
=name = "serde"
-version = "1.0.197"
+version = "1.0.198"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
+checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc"
=dependencies = [
= "serde_derive",
=]
=
=[[package]]
=name = "serde_derive"
-version = "1.0.197"
+version = "1.0.198"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
+checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9"
=dependencies = [
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]
=name = "serde_json"
-version = "1.0.114"
+version = "1.0.116"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
+checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813"
=dependencies = [
= "itoa",
= "ryu",
@@ -4210,9 +4185,9 @@ dependencies = [
=
=[[package]]
=name = "smallvec"
-version = "1.13.1"
+version = "1.13.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
=dependencies = [
= "serde",
=]
@@ -4223,7 +4198,7 @@ version = "0.18.1"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "calloop",
= "calloop-wayland-source",
= "cursor-icon",
@@ -4282,7 +4257,7 @@ version = "0.3.0+sdk-1.3.268.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
=]
=
=[[package]]
@@ -4404,7 +4379,7 @@ checksum = "1ed31390216d20e538e447a7a9b959e06ed9fc51c37b514b46eb758016ecd418"
=dependencies = [
= "atoi",
= "base64",
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "byteorder",
= "bytes",
= "crc",
@@ -4446,7 +4421,7 @@ checksum = "7c824eb80b894f926f89a0b9da0c7f435d27cdd35b8c655b114e58223918577e"
=dependencies = [
= "atoi",
= "base64",
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "byteorder",
= "crc",
= "dotenvy",
@@ -4524,9 +4499,9 @@ dependencies = [
=
=[[package]]
=name = "strsim"
-version = "0.11.0"
+version = "0.11.1"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
=
=[[package]]
=name = "subtle"
@@ -4553,9 +4528,9 @@ dependencies = [
=
=[[package]]
=name = "syn"
-version = "2.0.52"
+version = "2.0.60"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07"
+checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3"
=dependencies = [
= "proc-macro2",
= "quote",
@@ -4564,9 +4539,9 @@ dependencies = [
=
=[[package]]
=name = "sysinfo"
-version = "0.30.7"
+version = "0.30.11"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c385888ef380a852a16209afc8cfad22795dd8873d69c9a14d2e2088f118d18"
+checksum = "87341a165d73787554941cd5ef55ad728011566fe714e987d1b976c15dbc3a83"
=dependencies = [
= "cfg-if",
= "core-foundation-sys",
@@ -4578,9 +4553,9 @@ dependencies = [
=
=[[package]]
=name = "taffy"
-version = "0.3.18"
+version = "0.3.19"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c2287b6d7f721ada4cddf61ade5e760b2c6207df041cac9bfaa192897362fd3"
+checksum = "b1315457ccd9c3def787a18fae91914e623e4dcff019b64ce39f5268ded53d3d"
=dependencies = [
= "arrayvec",
= "grid",
@@ -4626,7 +4601,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
=dependencies = [
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]
@@ -4714,14 +4689,14 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
=dependencies = [
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]
=name = "tokio-stream"
-version = "0.1.14"
+version = "0.1.15"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842"
+checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af"
=dependencies = [
= "futures-core",
= "pin-project-lite",
@@ -4765,7 +4740,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
=dependencies = [
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]
@@ -4921,9 +4896,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
=
=[[package]]
=name = "uuid"
-version = "1.7.0"
+version = "1.8.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a"
+checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0"
=dependencies = [
= "getrandom",
= "serde",
@@ -4996,7 +4971,7 @@ dependencies = [
= "once_cell",
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
= "wasm-bindgen-shared",
=]
=
@@ -5030,7 +5005,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
=dependencies = [
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
= "wasm-bindgen-backend",
= "wasm-bindgen-shared",
=]
@@ -5061,7 +5036,7 @@ version = "0.31.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "rustix",
= "wayland-backend",
= "wayland-scanner",
@@ -5073,7 +5048,7 @@ version = "0.3.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "cursor-icon",
= "wayland-backend",
=]
@@ -5095,7 +5070,7 @@ version = "0.31.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "wayland-backend",
= "wayland-client",
= "wayland-scanner",
@@ -5107,7 +5082,7 @@ version = "0.2.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "wayland-backend",
= "wayland-client",
= "wayland-protocols",
@@ -5120,7 +5095,7 @@ version = "0.2.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "wayland-backend",
= "wayland-client",
= "wayland-protocols",
@@ -5171,9 +5146,9 @@ dependencies = [
=
=[[package]]
=name = "webbrowser"
-version = "0.8.13"
+version = "0.8.15"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d1b04c569c83a9bb971dd47ec6fd48753315f4bf989b9b04a2e7ca4d7f0dc950"
+checksum = "db67ae75a9405634f5882791678772c94ff5f16a66535aae186e26aa0841fc8b"
=dependencies = [
= "core-foundation",
= "home",
@@ -5194,9 +5169,9 @@ checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082"
=
=[[package]]
=name = "wgpu"
-version = "0.19.3"
+version = "0.19.4"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4b1213b52478a7631d6e387543ed8f642bc02c578ef4e3b49aca2a29a7df0cb"
+checksum = "cbd7311dbd2abcfebaabf1841a2824ed7c8be443a0f29166e5d3c6a53a762c01"
=dependencies = [
= "arrayvec",
= "cfg-if",
@@ -5219,13 +5194,13 @@ dependencies = [
=
=[[package]]
=name = "wgpu-core"
-version = "0.19.3"
+version = "0.19.4"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9f6b033c2f00ae0bc8ea872c5989777c60bc241aac4e58b24774faa8b391f78"
+checksum = "28b94525fc99ba9e5c9a9e24764f2bc29bad0911a7446c12f446a8277369bf3a"
=dependencies = [
= "arrayvec",
= "bit-vec",
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "cfg_aliases",
= "codespan-reporting",
= "indexmap",
@@ -5245,15 +5220,15 @@ dependencies = [
=
=[[package]]
=name = "wgpu-hal"
-version = "0.19.3"
+version = "0.19.4"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49f972c280505ab52ffe17e94a7413d9d54b58af0114ab226b9fc4999a47082e"
+checksum = "fc1a4924366df7ab41a5d8546d6534f1f33231aa5b3f72b9930e300f254e39c3"
=dependencies = [
= "android_system_properties",
= "arrayvec",
= "ash",
= "bit-set",
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "block",
= "cfg_aliases",
= "core-graphics-types",
@@ -5294,7 +5269,7 @@ version = "0.19.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "js-sys",
= "web-sys",
=]
@@ -5311,9 +5286,9 @@ dependencies = [
=
=[[package]]
=name = "widestring"
-version = "1.0.2"
+version = "1.1.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8"
+checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311"
=
=[[package]]
=name = "winapi"
@@ -5364,7 +5339,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
=dependencies = [
= "windows-core 0.52.0",
- "windows-targets 0.52.4",
+ "windows-targets 0.52.5",
=]
=
=[[package]]
@@ -5374,7 +5349,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49"
=dependencies = [
= "windows-core 0.54.0",
- "windows-targets 0.52.4",
+ "windows-targets 0.52.5",
=]
=
=[[package]]
@@ -5383,7 +5358,7 @@ version = "0.52.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
=dependencies = [
- "windows-targets 0.52.4",
+ "windows-targets 0.52.5",
=]
=
=[[package]]
@@ -5393,7 +5368,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65"
=dependencies = [
= "windows-result",
- "windows-targets 0.52.4",
+ "windows-targets 0.52.5",
=]
=
=[[package]]
@@ -5420,11 +5395,11 @@ dependencies = [
=
=[[package]]
=name = "windows-result"
-version = "0.1.0"
+version = "0.1.1"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd19df78e5168dfb0aedc343d1d1b8d422ab2db6756d2dc3fef75035402a3f64"
+checksum = "749f0da9cc72d82e600d8d2e44cadd0b9eedb9038f71a1c58556ac1c5791813b"
=dependencies = [
- "windows-targets 0.52.4",
+ "windows-targets 0.52.5",
=]
=
=[[package]]
@@ -5451,7 +5426,7 @@ version = "0.52.0"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
=dependencies = [
- "windows-targets 0.52.4",
+ "windows-targets 0.52.5",
=]
=
=[[package]]
@@ -5486,17 +5461,18 @@ dependencies = [
=
=[[package]]
=name = "windows-targets"
-version = "0.52.4"
+version = "0.52.5"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
+checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
=dependencies = [
- "windows_aarch64_gnullvm 0.52.4",
- "windows_aarch64_msvc 0.52.4",
- "windows_i686_gnu 0.52.4",
- "windows_i686_msvc 0.52.4",
- "windows_x86_64_gnu 0.52.4",
- "windows_x86_64_gnullvm 0.52.4",
- "windows_x86_64_msvc 0.52.4",
+ "windows_aarch64_gnullvm 0.52.5",
+ "windows_aarch64_msvc 0.52.5",
+ "windows_i686_gnu 0.52.5",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc 0.52.5",
+ "windows_x86_64_gnu 0.52.5",
+ "windows_x86_64_gnullvm 0.52.5",
+ "windows_x86_64_msvc 0.52.5",
=]
=
=[[package]]
@@ -5513,9 +5489,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
=
=[[package]]
=name = "windows_aarch64_gnullvm"
-version = "0.52.4"
+version = "0.52.5"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
+checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
=
=[[package]]
=name = "windows_aarch64_msvc"
@@ -5531,9 +5507,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
=
=[[package]]
=name = "windows_aarch64_msvc"
-version = "0.52.4"
+version = "0.52.5"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
+checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
=
=[[package]]
=name = "windows_i686_gnu"
@@ -5549,9 +5525,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
=
=[[package]]
=name = "windows_i686_gnu"
-version = "0.52.4"
+version = "0.52.5"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
+checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
=
=[[package]]
=name = "windows_i686_msvc"
@@ -5567,9 +5549,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
=
=[[package]]
=name = "windows_i686_msvc"
-version = "0.52.4"
+version = "0.52.5"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
+checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
=
=[[package]]
=name = "windows_x86_64_gnu"
@@ -5585,9 +5567,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
=
=[[package]]
=name = "windows_x86_64_gnu"
-version = "0.52.4"
+version = "0.52.5"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
+checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
=
=[[package]]
=name = "windows_x86_64_gnullvm"
@@ -5603,9 +5585,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
=
=[[package]]
=name = "windows_x86_64_gnullvm"
-version = "0.52.4"
+version = "0.52.5"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
+checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
=
=[[package]]
=name = "windows_x86_64_msvc"
@@ -5621,20 +5603,20 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
=
=[[package]]
=name = "windows_x86_64_msvc"
-version = "0.52.4"
+version = "0.52.5"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
+checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
=
=[[package]]
=name = "winit"
-version = "0.29.14"
+version = "0.29.15"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7a3db69ffbe53a9babec7804da7a90f21020fcce1f2f5e5291e2311245b993d"
+checksum = "0d59ad965a635657faf09c8f062badd885748428933dad8e8bdd64064d92e5ca"
=dependencies = [
= "ahash",
= "android-activity",
= "atomic-waker",
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "bytemuck",
= "calloop",
= "cfg_aliases",
@@ -5732,7 +5714,7 @@ version = "0.4.2"
=source = "registry+https://github.com/rust-lang/crates.io-index"
=checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5"
=dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
= "dlib",
= "log",
= "once_cell",
@@ -5747,9 +5729,9 @@ checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621"
=
=[[package]]
=name = "xml-rs"
-version = "0.8.19"
+version = "0.8.20"
=source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a"
+checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193"
=
=[[package]]
=name = "zerocopy"
@@ -5768,7 +5750,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
=dependencies = [
= "proc-macro2",
= "quote",
- "syn 2.0.52",
+ "syn 2.0.60",
=]
=
=[[package]]Update Nix dependencies
On by
index 1e07b65..a07a714 100644
--- a/flake.lock
+++ b/flake.lock
@@ -38,11 +38,11 @@
= },
= "nixpkgs": {
= "locked": {
- "lastModified": 1710272261,
- "narHash": "sha256-g0bDwXFmTE7uGDOs9HcJsfLFhH7fOsASbAuOzDC+fhQ=",
+ "lastModified": 1713297878,
+ "narHash": "sha256-hOkzkhLT59wR8VaMbh1ESjtZLbGi+XNaBN6h49SPqEc=",
= "owner": "NixOS",
= "repo": "nixpkgs",
- "rev": "0ad13a6833440b8e238947e47bea7f11071dc2b2",
+ "rev": "66adc1e47f8784803f2deb6cacd5e07264ec2d5c",
= "type": "github"
= },
= "original": {
@@ -81,11 +81,11 @@
= "nixpkgs": "nixpkgs_2"
= },
= "locked": {
- "lastModified": 1710382258,
- "narHash": "sha256-2FW1q+o34VBweYQiEkRaSEkNMq3ecrn83VzETeGiVbY=",
+ "lastModified": 1713492869,
+ "narHash": "sha256-Zv+ZQq3X+EH6oogkXaJ8dGN8t1v26kPZgC5bki04GnM=",
= "owner": "oxalica",
= "repo": "rust-overlay",
- "rev": "8ce81e71ab04a7e906fae62da086d6ee5d6cfc21",
+ "rev": "1e9264d1214d3db00c795b41f75d55b5e153758e",
= "type": "github"
= },
= "original": {