├── .gitignore ├── assets ├── 16x16.png ├── 32x32.png ├── 4x8.png ├── 8x8.png └── RobotoMono-Regular.ttf ├── images └── demo.gif ├── Cargo.toml ├── examples ├── cursor.rs ├── pixel.rs └── interactive.rs ├── README.md ├── src └── lib.rs └── Cargo.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /assets/16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sarkahn/bevy_tiled_camera/HEAD/assets/16x16.png -------------------------------------------------------------------------------- /assets/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sarkahn/bevy_tiled_camera/HEAD/assets/32x32.png -------------------------------------------------------------------------------- /assets/4x8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sarkahn/bevy_tiled_camera/HEAD/assets/4x8.png -------------------------------------------------------------------------------- /assets/8x8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sarkahn/bevy_tiled_camera/HEAD/assets/8x8.png -------------------------------------------------------------------------------- /images/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sarkahn/bevy_tiled_camera/HEAD/images/demo.gif -------------------------------------------------------------------------------- /assets/RobotoMono-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sarkahn/bevy_tiled_camera/HEAD/assets/RobotoMono-Regular.ttf -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "bevy_tiled_camera" 3 | edition = "2021" 4 | authors = ["sark"] 5 | description = "A camera for rendering low resolution pixel art in bevy." 6 | homepage = "https://github.com/sarkahn/bevy_tiled_camera" 7 | keywords = ["bevy", "2d", "camera", "pixels"] 8 | license = "MIT" 9 | readme = "README.md" 10 | version = "0.9.0" 11 | 12 | [features] 13 | dev = ["bevy/dynamic_linking"] 14 | 15 | [dependencies] 16 | sark_grids = { version = "0.5.9" } 17 | 18 | [dependencies.bevy] 19 | version = "0.13" 20 | default_features = false 21 | features = ["bevy_render", "bevy_core_pipeline"] 22 | 23 | [dev-dependencies] 24 | assert_approx_eq = "1.1.0" 25 | 26 | [dev-dependencies.bevy] 27 | version = "0.13" 28 | default-features = false 29 | features = [ 30 | "png", 31 | "bevy_core_pipeline", 32 | "bevy_asset", 33 | "bevy_render", 34 | "bevy_winit", 35 | "bevy_sprite", 36 | ] 37 | 38 | [target.'cfg(unix)'.dev-dependencies.bevy] 39 | version = "0.13" 40 | default-features = false 41 | features = [ 42 | "png", 43 | "bevy_core_pipeline", 44 | "bevy_asset", 45 | "bevy_render", 46 | "bevy_winit", 47 | "bevy_sprite", 48 | "x11", 49 | ] 50 | -------------------------------------------------------------------------------- /examples/cursor.rs: -------------------------------------------------------------------------------- 1 | use bevy::{prelude::*, window::PrimaryWindow}; 2 | use bevy_tiled_camera::*; 3 | 4 | fn main() { 5 | App::new() 6 | .add_plugins((DefaultPlugins, TiledCameraPlugin)) 7 | .add_systems(Update, test) 8 | .add_systems(Startup, setup) 9 | .run(); 10 | } 11 | 12 | fn setup(mut commands: Commands) { 13 | commands.spawn(TiledCameraBundle::new().with_tile_count([15, 15])); 14 | commands.spawn(SpriteBundle { 15 | sprite: Sprite { 16 | color: Color::BLUE, 17 | custom_size: Some(Vec2::splat(15.0)), 18 | ..Default::default() 19 | }, 20 | ..Default::default() 21 | }); 22 | } 23 | 24 | fn test( 25 | q_cam: Query<(&Camera, &TiledCamera, &GlobalTransform)>, 26 | primary_window: Query<&Window, With>, 27 | ) { 28 | if let Ok(window) = primary_window.get_single() { 29 | if let Some(cursor) = window.cursor_position() { 30 | if let Ok((cam, tcam, t)) = q_cam.get_single() { 31 | if let Some(cpos) = tcam.screen_to_world(cursor, cam, t) { 32 | println!("CPOS {}", cpos); 33 | } 34 | } 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /examples/pixel.rs: -------------------------------------------------------------------------------- 1 | use bevy::{prelude::*, sprite::Anchor}; 2 | use bevy_tiled_camera::*; 3 | 4 | fn main() { 5 | App::new() 6 | .add_plugins(( 7 | TiledCameraPlugin, 8 | DefaultPlugins.set(ImagePlugin::default_nearest()), 9 | )) 10 | .add_systems(Startup, setup) 11 | .run() 12 | } 13 | 14 | fn setup(mut commands: Commands, server: Res) { 15 | // Defaults to 8x8 pixels per tile 16 | commands.spawn(TiledCameraBundle::pixel_cam([10, 10])); 17 | 18 | commands.spawn(SpriteBundle { 19 | texture: server.load("8x8.png"), 20 | sprite: Sprite { 21 | anchor: Anchor::TopRight, 22 | ..default() 23 | }, 24 | ..default() 25 | }); 26 | 27 | commands.spawn(SpriteBundle { 28 | texture: server.load("16x16.png"), 29 | sprite: Sprite { 30 | anchor: Anchor::TopLeft, 31 | ..default() 32 | }, 33 | ..default() 34 | }); 35 | 36 | commands.spawn(SpriteBundle { 37 | texture: server.load("32x32.png"), 38 | sprite: Sprite { 39 | anchor: Anchor::BottomCenter, 40 | ..default() 41 | }, 42 | ..default() 43 | }); 44 | } 45 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) 2 | [![Crates.io](https://img.shields.io/crates/v/bevy_tiled_camera)](https://crates.io/crates/bevy_tiled_camera) 3 | [![docs](https://docs.rs/bevy_tiled_camera/badge.svg)](https://docs.rs/bevy_tiled_camera/) 4 | 5 | # `Bevy Tiled Camera` 6 | 7 | A camera for properly displaying low resolution pixel perfect 2D games in bevy. It works by adjusting the viewport to match a target resolution, which is defined by a tile count and the number of pixels per tile. 8 | 9 | ![](images/demo.gif) 10 | 11 | ## Example 12 | ```rust 13 | use bevy_tiled_camera::*; 14 | use bevy::prelude::*; 15 | 16 | fn setup(mut commands:Commands) { 17 | // Sets up a camera to display 80 x 35 tiles. 18 | // Defaults to 8 pixels per tile with WorldSpace::Units. 19 | let camera_bundle = TiledCameraBundle::unit_cam([80,35]); 20 | commands.spawn(camera_bundle); 21 | } 22 | fn main() { 23 | App::new() 24 | .add_plugins((DefaultPlugins, TiledCameraPlugin)) 25 | .add_systems(Startup, setup) 26 | .run(); 27 | } 28 | ``` 29 | 30 | # World Space 31 | Your world space defines how transforms and scaling is treated in your game. You either position everything in terms of world units, or in terms of pixels. The camera supports either via it's `world_space` functions. 32 | 33 | ## Versions 34 | | bevy | bevy_tiled_camera | 35 | | --- | --- | 36 | | 0.13 | 0.9.0 | 37 | | 0.12 | 0.8.0 | 38 | | 0.11 | 0.7.0 | 39 | | 0.10 | 0.6.0 | 40 | | 0.9 | 0.5.0 | 41 | | 0.8 | 0.4.0 | 42 | | 0.6 | 0.3.0 | 43 | | 0.5 | 0.2.4 | 44 | | 0.5 | 0.2.3 | 45 | 46 | ## Blurry sprites 47 | By default bevy will create all new images with linear image sampling. This is good for smaller, high resolution images but causes severe blurriness with low resolution images. To fix it you can manually set the image sampler to nearest when creating your images, or change the default to always spawn new images with nearest sampling: 48 | 49 | ```rust 50 | use bevy::prelude::*; 51 | use bevy_tiled_camera::*; 52 | 53 | App::new() 54 | .add_plugins((DefaultPlugins.set(ImagePlugin::default_nearest()), TiledCameraPlugin)) 55 | .run(); 56 | ``` 57 | -------------------------------------------------------------------------------- /examples/interactive.rs: -------------------------------------------------------------------------------- 1 | /// A simple interactive demo. Resize the window to see the viewport auto-adjust. 2 | /// 3 | /// # Controls: 4 | /// Spacebar - Toggle camera between centered or bottom-left origin 5 | /// Arrow Keys - Adjust the number of tiles 6 | /// Tab - Change the current tile textures 7 | use bevy::{prelude::*, utils::HashMap}; 8 | 9 | use bevy_tiled_camera::{TiledCamera, TiledCameraBundle, TiledCameraPlugin}; 10 | 11 | fn main() { 12 | App::new() 13 | .insert_resource(ClearColor(Color::rgb_u8(0, 68, 153))) 14 | .add_plugins(( 15 | TiledCameraPlugin, 16 | DefaultPlugins.set(ImagePlugin::default_nearest()), 17 | )) 18 | .add_systems(Startup, setup) 19 | .add_systems(Update, (handle_input, spawn_sprites)) 20 | .run(); 21 | } 22 | 23 | #[derive(Resource)] 24 | struct SpriteTextures { 25 | pub tex_4x8: Handle, 26 | pub tex_8x8: Handle, 27 | pub tex_16x16: Handle, 28 | pub tex_32x32: Handle, 29 | pub current: u32, 30 | } 31 | 32 | #[derive(Component)] 33 | struct GridSprite; 34 | 35 | #[derive(Component)] 36 | struct Cursor; 37 | 38 | #[derive(Resource)] 39 | struct GridEntities(HashMap); 40 | 41 | fn setup(mut commands: Commands, asset_server: Res) { 42 | let tile_count = [3, 3]; 43 | let cam_bundle = TiledCameraBundle::new() 44 | .with_pixels_per_tile([4, 8]) 45 | .with_tile_count(tile_count); 46 | 47 | commands.spawn(cam_bundle); 48 | 49 | let textures = SpriteTextures { 50 | tex_4x8: asset_server.load("4x8.png"), 51 | tex_8x8: asset_server.load("8x8.png"), 52 | tex_16x16: asset_server.load("16x16.png"), 53 | tex_32x32: asset_server.load("32x32.png"), 54 | current: 0, 55 | }; 56 | 57 | commands.insert_resource(textures); 58 | 59 | let grid = GridEntities(HashMap::default()); 60 | commands.insert_resource(grid); 61 | } 62 | 63 | fn handle_input( 64 | input: Res>, 65 | mut q_cam: Query<&mut TiledCamera>, 66 | mut sprite_textures: ResMut, 67 | ) { 68 | if input.just_pressed(KeyCode::ArrowUp) { 69 | q_cam.single_mut().tile_count.y += 1; 70 | } 71 | 72 | if input.just_pressed(KeyCode::ArrowDown) { 73 | let count = &mut q_cam.single_mut().tile_count; 74 | count.y = count.y.saturating_sub(1).max(1); 75 | } 76 | 77 | if input.just_pressed(KeyCode::ArrowLeft) { 78 | let count = &mut q_cam.single_mut().tile_count; 79 | count.x = count.x.saturating_sub(1).max(1); 80 | } 81 | 82 | if input.just_pressed(KeyCode::ArrowRight) { 83 | q_cam.single_mut().tile_count.x += 1; 84 | } 85 | 86 | if input.just_pressed(KeyCode::Tab) { 87 | sprite_textures.current = (sprite_textures.current + 1) % 4; 88 | q_cam.single_mut().pixels_per_tile = match sprite_textures.current { 89 | 1 => [16, 16].into(), 90 | 2 => [32, 32].into(), 91 | 3 => [8, 8].into(), 92 | _ => [4, 8].into(), 93 | }; 94 | } 95 | 96 | if input.just_pressed(KeyCode::KeyW) { 97 | let cam = q_cam.single_mut(); 98 | let space = cam.world_space(); 99 | q_cam.single_mut().set_world_space(space.other()); 100 | } 101 | } 102 | 103 | fn spawn_sprites( 104 | mut commands: Commands, 105 | mut grid: ResMut, 106 | q_camera_changed: Query<&TiledCamera, Changed>, 107 | q_camera: Query<(&GlobalTransform, &TiledCamera)>, 108 | sprites_query: Query, With)>, 109 | sprite_textures: Res, 110 | ) { 111 | if !q_camera_changed.is_empty() { 112 | for entity in sprites_query.iter() { 113 | commands.entity(entity).despawn(); 114 | } 115 | 116 | let (cam_transform, cam) = q_camera.single(); 117 | grid.0.clear(); 118 | 119 | for p in cam.tile_center_iter(cam_transform) { 120 | let sprite = Sprite { 121 | custom_size: cam.unit_size(), 122 | ..Default::default() 123 | }; 124 | let texture = match sprite_textures.current { 125 | 1 => sprite_textures.tex_16x16.clone(), 126 | 2 => sprite_textures.tex_32x32.clone(), 127 | 3 => sprite_textures.tex_8x8.clone(), 128 | _ => sprite_textures.tex_4x8.clone(), 129 | }; 130 | let bundle = SpriteBundle { 131 | sprite, 132 | texture, 133 | transform: Transform::from_translation(p.extend(0.0)), 134 | ..Default::default() 135 | }; 136 | commands.spawn((bundle, GridSprite)); 137 | } 138 | } 139 | } 140 | -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- 1 | //! [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) 2 | //! [![Crates.io](https://img.shields.io/crates/v/bevy_tiled_camera)](https://crates.io/crates/bevy_tiled_camera) 3 | //! [![docs](https://docs.rs/bevy_tiled_camera/badge.svg)](https://docs.rs/bevy_tiled_camera/) 4 | //! 5 | //! # `Bevy Tiled Camera` 6 | //! A camera for properly displaying low resolution pixel perfect 2D games in 7 | //! bevy. It works by adjusting the viewport to match a target resolution, which 8 | //! is defined by a tile count and the number of pixels per tile. 9 | //! 10 | //! ![](images/demo.gif) 11 | //! 12 | //! ## Example 13 | //! ```rust no_run 14 | //! use bevy_tiled_camera::*; 15 | //! use bevy::prelude::*; 16 | //! 17 | //! fn setup(mut commands:Commands) { 18 | //! // Sets up a camera to display 80 x 35 tiles. 19 | //! // Defaults to 8 pixels per tile. 20 | //! let camera_bundle = TiledCameraBundle::unit_cam([80,35]); 21 | //! 22 | //! commands.spawn(camera_bundle); 23 | //! } 24 | //! 25 | //! fn main() { 26 | //! App::new() 27 | //! .add_plugins((DefaultPlugins, TiledCameraPlugin)) 28 | //! .add_systems(Startup, setup) 29 | //! .run(); 30 | //! } 31 | //! ``` 32 | //! # World Space 33 | //! Your world space defines how transforms and scaling is treated in your game. 34 | //! You can choose between [WorldSpace::Units] or [WorldSpace::Pixels]. 35 | //! The camera supports either, and it's up to you to decide which you prefer. 36 | //! 37 | //! ## Versions 38 | //! | bevy | bevy_tiled_camera | 39 | //! | --- | --- | 40 | //! | 0.13 | 0.9.0 | 41 | //! | 0.12 | 0.8.0 | 42 | //! | 0.11 | 0.7.0 | 43 | //! | 0.10 | 0.6.0 | 44 | //! | 0.9 | 0.5.0 | 45 | //! | 0.8 | 0.4.0 | 46 | //! | 0.6 | 0.3.0 | 47 | //! | 0.5 | 0.2.4 | 48 | //! | 0.5 | 0.2.3 | 49 | //! 50 | //! ## Blurry sprites 51 | //! By default bevy will create all new images with linear image sampling. This 52 | //! is good for smaller, high resolution images but causes severe blurriness 53 | //! with low resolution images. To fix it you can manually set the image 54 | //! sampler to nearest when creating your images, or change the default to 55 | //! always spawn new images with nearest sampling: 56 | //! 57 | //! ```rust no_run 58 | //! use bevy::prelude::*; 59 | //! use bevy_tiled_camera::*; 60 | //! 61 | //! 62 | //! App::new() 63 | //! // Must be inserted during app initialization, before rendering plugins 64 | //! .add_plugins(( 65 | //! DefaultPlugins.set(ImagePlugin::default_nearest()), 66 | //! TiledCameraPlugin, 67 | //! )) 68 | //! .run(); 69 | //! 70 | //! ``` 71 | use bevy::{ 72 | ecs::prelude::*, 73 | math::{IVec2, Mat4, UVec2, Vec2, Vec3}, 74 | prelude::{ 75 | default, App, Camera, Camera2dBundle, Color, GlobalTransform, OrthographicProjection, 76 | Plugin, Update, 77 | }, 78 | render::camera::{ClearColorConfig, ScalingMode, Viewport}, 79 | window::{PrimaryWindow, Window, WindowResized}, 80 | }; 81 | use sark_grids::{ 82 | point::{Point2d, Size2d}, 83 | world_grid::WorldGrid, 84 | *, 85 | }; 86 | 87 | pub use sark_grids::world_grid::WorldSpace; 88 | 89 | pub struct TiledCameraPlugin; 90 | 91 | impl Plugin for TiledCameraPlugin { 92 | fn build(&self, app: &mut App) { 93 | app.add_systems(Update, (on_window_resized, on_camera_changed)); 94 | } 95 | } 96 | 97 | /// Component bundle with functions to specify how you want the camera set up. 98 | /// 99 | /// ## Example 100 | /// ```rust 101 | /// use bevy_tiled_camera::TiledCameraBundle; 102 | /// use bevy::prelude::Commands; 103 | /// fn setup(mut commands:Commands) { 104 | /// let camera_bundle = TiledCameraBundle::new() 105 | /// .with_pixels_per_tile([8,8]) 106 | /// .with_tile_count([80,45]); 107 | /// 108 | /// commands.spawn(camera_bundle); 109 | /// } 110 | /// ``` 111 | #[derive(Bundle)] 112 | pub struct TiledCameraBundle { 113 | cam2d_bundle: Camera2dBundle, 114 | tiled_camera: TiledCamera, 115 | } 116 | 117 | impl TiledCameraBundle { 118 | #[allow(clippy::new_without_default)] 119 | pub fn new() -> Self { 120 | Self { 121 | cam2d_bundle: Camera2dBundle { ..default() }, 122 | tiled_camera: default(), 123 | } 124 | } 125 | 126 | /// Construct a [`TiledCamera`] set to [`WorldSpace::Units`]. 127 | pub fn unit_cam(tile_count: impl Size2d) -> Self { 128 | Self::new() 129 | .with_world_space(WorldSpace::Units) 130 | .with_tile_count(tile_count) 131 | } 132 | 133 | /// Construct a [`TiledCamera`] set to [`WorldSpace::Pixels`]. 134 | pub fn pixel_cam(tile_count: impl Size2d) -> Self { 135 | Self::new() 136 | .with_world_space(WorldSpace::Pixels) 137 | .with_tile_count(tile_count) 138 | } 139 | 140 | /// Set the camera's [`WorldSpace`]. 141 | pub fn with_world_space(mut self, world_space: WorldSpace) -> Self { 142 | self.tiled_camera.set_world_space(world_space); 143 | self 144 | } 145 | 146 | /// Set the camera's clear color. 147 | pub fn with_clear_color(mut self, color: Color) -> Self { 148 | self.cam2d_bundle.camera.clear_color = ClearColorConfig::Custom(color); 149 | self 150 | } 151 | 152 | /// Set the camera's pixels per tile. 153 | /// 154 | /// This along with tile count and [`WorldSpace`] define how the camera 155 | /// sizes the viewport. 156 | pub fn with_pixels_per_tile(mut self, ppt: impl Size2d) -> Self { 157 | self.tiled_camera.pixels_per_tile = ppt.as_uvec2(); 158 | self.tiled_camera.grid.pixels_per_tile = ppt.as_uvec2(); 159 | self 160 | } 161 | 162 | /// Set the camera's tile count. 163 | /// 164 | /// This along with pixels per tile and [`WorldSpace`] define how the camera 165 | /// sizes the viewport. 166 | pub fn with_tile_count(mut self, tile_count: impl Size2d) -> Self { 167 | self.tiled_camera.tile_count = tile_count.as_uvec2(); 168 | self.tiled_camera.grid.tile_count = tile_count.as_uvec2(); 169 | self 170 | } 171 | 172 | /// Set the initial world position for the camera. 173 | pub fn with_camera_position(mut self, world_pos: impl Point2d) -> Self { 174 | let pos = &mut self.cam2d_bundle.transform.translation; 175 | *pos = world_pos.as_vec2().extend(pos.z); 176 | self 177 | } 178 | } 179 | 180 | /// A camera with a virtual grid for displaying low resolution pixel art. 181 | /// 182 | /// Contains various functions for translating points between world space and 183 | /// the camera's virtual grid tiles. 184 | #[derive(Component)] 185 | pub struct TiledCamera { 186 | /// Pixels per tile determines the size of your tiles/art, depending on 187 | /// the camera's [`WorldSpace`]. 188 | pub pixels_per_tile: UVec2, 189 | /// The number of virtual grid tiles in the camera's viewport. 190 | pub tile_count: UVec2, 191 | /// World grid used for transforming positions. 192 | grid: WorldGrid, 193 | /// Camera zoom from the last viewport update. 194 | zoom: u32, 195 | /// Viewport size from the last viewport update. 196 | vp_size: UVec2, 197 | /// Viewport position from the last viewport update. 198 | vp_pos: UVec2, 199 | /// Window resolution from the last viewport update. 200 | win_size: UVec2, 201 | ortho_size: f32, 202 | } 203 | 204 | impl TiledCamera { 205 | /// Creates a camera set to [`WorldSpace::Units`]. 206 | pub fn unit_cam(tile_count: impl Size2d, pixels_per_tile: impl Size2d) -> Self { 207 | let tile_count = tile_count.as_uvec2(); 208 | let pixels_per_tile = pixels_per_tile.as_uvec2(); 209 | Self { 210 | pixels_per_tile, 211 | tile_count, 212 | grid: WorldGrid::unit_grid(tile_count, pixels_per_tile), 213 | ..default() 214 | } 215 | } 216 | 217 | /// Creates a camera set to [`WorldSpace::Pixels`]. 218 | pub fn pixel_cam(tile_count: impl Size2d, pixels_per_tile: impl Size2d) -> Self { 219 | let tile_count = tile_count.as_uvec2(); 220 | let pixels_per_tile = pixels_per_tile.as_uvec2(); 221 | Self { 222 | pixels_per_tile, 223 | tile_count, 224 | grid: WorldGrid::pixel_grid(tile_count, pixels_per_tile), 225 | ..default() 226 | } 227 | } 228 | 229 | /// Retrieve the target resolution (in pixels) of the camera. 230 | pub fn target_resolution(&self) -> UVec2 { 231 | self.pixels_per_tile * self.tile_count 232 | } 233 | 234 | // Viewport size from the last viewport update 235 | pub fn viewport_size(&self) -> UVec2 { 236 | self.vp_size 237 | } 238 | 239 | // Viewport position from the last viewport update 240 | pub fn viewport_pos(&self) -> UVec2 { 241 | self.vp_pos 242 | } 243 | 244 | /// Window resolution from the last viewport update 245 | pub fn window_resolution(&self) -> UVec2 { 246 | self.win_size 247 | } 248 | 249 | /// The orthographic size of the camera from the last viewport update 250 | pub fn orthographic_size(&self) -> f32 { 251 | self.ortho_size 252 | } 253 | 254 | /// Returns an iterator that yields the center of the camera's virtual grid 255 | /// tiles in world space. 256 | pub fn tile_center_iter(&self, transform: &GlobalTransform) -> impl Iterator { 257 | let xy = transform.translation().truncate(); 258 | self.grid.tile_center_iter().map(move |p| p + xy) 259 | } 260 | 261 | /// Returns an iterator that yields the position of the camera's virtual 262 | /// grid tiles in world space. 263 | /// 264 | /// A tile's "position" refers to the bottom left corner of the tile. 265 | pub fn tile_pos_iter(&self, cam_transform: &GlobalTransform) -> impl Iterator { 266 | let xy = cam_transform.translation().truncate(); 267 | self.grid.tile_pos_iter().map(move |p| p + xy) 268 | } 269 | 270 | /// Transform from world space to camera-local space. 271 | pub fn world_to_local(&self, cam_transform: &GlobalTransform, world_pos: impl Point2d) -> Vec2 { 272 | world_pos.as_vec2() - cam_transform.translation().truncate() 273 | } 274 | 275 | /// Transform from camera-local space to world space. 276 | pub fn local_to_world(&self, cam_transform: &GlobalTransform, local_pos: impl Point2d) -> Vec2 { 277 | local_pos.as_vec2() + cam_transform.translation().truncate() 278 | } 279 | 280 | /// Convert a world position to it's virtual tile index. 281 | /// 282 | /// Tile indices are relative to the camera center. 283 | pub fn world_to_index( 284 | &self, 285 | cam_transform: &GlobalTransform, 286 | world_pos: impl Point2d, 287 | ) -> IVec2 { 288 | let local = self.world_to_local(cam_transform, world_pos); 289 | self.grid.pos_to_index(local) 290 | } 291 | 292 | /// Convert a world position to it's virtual tile position. 293 | /// 294 | /// A tile's "position" refers to the bottom left point of the tile. 295 | pub fn world_to_tile(&self, cam_transform: &GlobalTransform, world_pos: impl Point2d) -> Vec2 { 296 | let local = self.world_to_local(cam_transform, world_pos); 297 | self.grid.pos_to_tile_pos(local) 298 | } 299 | 300 | /// Convert a tile index to it's virtual tile position in world space. 301 | /// 302 | /// Tiles indices are relative to the camera center. 303 | /// 304 | /// A tile's "position" refers to the bottom left point of the tile. 305 | pub fn index_to_tile_pos(&self, cam_transform: &GlobalTransform, pos: impl GridPoint) -> Vec2 { 306 | let p = self.grid.index_to_pos(pos); 307 | self.local_to_world(cam_transform, p) 308 | } 309 | 310 | /// Return the world center of the virtual tile at the given tile index. 311 | /// 312 | /// Tile indices are relative to the camera center. 313 | pub fn index_to_tile_center( 314 | &self, 315 | cam_transform: &GlobalTransform, 316 | index: impl GridPoint, 317 | ) -> Vec2 { 318 | let p = self.grid.index_to_tile_center(index); 319 | self.local_to_world(cam_transform, p) 320 | } 321 | 322 | /// Change the camera's [`WorldSpace`]. 323 | pub fn set_world_space(&mut self, world_space: WorldSpace) { 324 | self.grid.world_space = world_space; 325 | } 326 | 327 | /// Get the camera's [`WorldSpace`]. 328 | pub fn world_space(&self) -> WorldSpace { 329 | self.grid.world_space 330 | } 331 | 332 | /// Get unit size or [`None`], depending on the camera's [`WorldSpace`]. 333 | /// 334 | /// This can be used for sizing spawned sprites. If the camera's [`WorldSpace`] 335 | /// is [`WorldSpace::Units`] then a unit sized sprite should be the size of 336 | /// a tile. 337 | /// Otherwise it should use the default sprite size, which is the pixel dimensions 338 | /// of the sprite's texture. 339 | pub fn unit_size(&self) -> Option { 340 | match self.grid.world_space { 341 | WorldSpace::Units => Some(self.grid.tile_size_world()), 342 | WorldSpace::Pixels => None, 343 | } 344 | } 345 | 346 | /// How much the camera view is scaled up, based on target resolution and window size. 347 | pub fn zoom(&self) -> u32 { 348 | self.zoom 349 | } 350 | 351 | // MIT License 352 | // Copyright (c) 2021 Aevyrie 353 | // https://github.com/aevyrie/bevy_mod_raycast 354 | /// Convert a screen position (IE: The mouse cursor position) to it's corresponding world position. 355 | pub fn screen_to_world( 356 | &self, 357 | screen_pos: Vec2, 358 | camera: &Camera, 359 | camera_transform: &GlobalTransform, 360 | ) -> Option { 361 | let screen_size = self.vp_size.as_vec2(); 362 | let screen_pos = (screen_pos - self.vp_pos.as_vec2()).round(); 363 | 364 | let view = camera_transform.compute_matrix(); 365 | let projection = camera.projection_matrix(); 366 | 367 | // 2D Normalized device coordinate cursor position from (-1, -1) to (1, 1) 368 | let cursor_ndc = (screen_pos / screen_size) * 2.0 - Vec2::from([1.0, 1.0]); 369 | let ndc_to_world: Mat4 = view * projection.inverse(); 370 | let world_to_ndc = projection * view; 371 | 372 | // Calculate the camera's near plane using the projection matrix 373 | let projection = projection.to_cols_array_2d(); 374 | let camera_near = (2.0 * projection[3][2]) / (2.0 * projection[2][2] - 2.0); 375 | 376 | // Compute the cursor position at the near plane. The bevy camera looks at -Z. 377 | let ndc_near = world_to_ndc.transform_point3(-Vec3::Z * camera_near).z; 378 | let cursor_pos_near = ndc_to_world.transform_point3(cursor_ndc.extend(ndc_near)); 379 | let tile_size = self.grid.tile_size_world(); 380 | let cursor_pos_near = cursor_pos_near.truncate() * tile_size; 381 | // Former viewport issue - had to flip y. Was fixed in 0.9 release 382 | //cursor_pos_near.y = -cursor_pos_near.y; 383 | Some(cursor_pos_near) 384 | } 385 | 386 | /// Converts a world position to a screen position (0..resolution) 387 | pub fn world_to_screen( 388 | &self, 389 | world_pos: impl Point2d, 390 | camera: &Camera, 391 | camera_transform: &GlobalTransform, 392 | ) -> Option { 393 | let window_size = self.vp_size.as_vec2(); 394 | 395 | // Build a transform to convert from world to NDC using camera data 396 | let world_to_ndc: Mat4 = 397 | camera.projection_matrix() * camera_transform.compute_matrix().inverse(); 398 | let ndc_space_coords: Vec3 = world_to_ndc.project_point3(world_pos.as_vec2().extend(0.0)); 399 | 400 | // NDC z-values outside of 0 < z < 1 are outside the camera frustum and are thus not in screen space 401 | if ndc_space_coords.z < 0.0 || ndc_space_coords.z > 1.0 { 402 | return None; 403 | } 404 | 405 | // Once in NDC space, we can discard the z element and rescale x/y to fit the screen 406 | let screen_space_coords = (ndc_space_coords.truncate() + Vec2::ONE) / 2.0 * window_size; 407 | if !screen_space_coords.is_nan() { 408 | Some((screen_space_coords + self.vp_pos.as_vec2()).round()) 409 | } else { 410 | None 411 | } 412 | } 413 | 414 | /// Retrieve the camera's [`WorldGrid`]. 415 | pub fn world_grid(&self) -> &WorldGrid { 416 | &self.grid 417 | } 418 | } 419 | 420 | impl Default for TiledCamera { 421 | fn default() -> Self { 422 | let pixels_per_tile = UVec2::new(8, 8); 423 | let tile_count = UVec2::new(80, 35); 424 | Self { 425 | pixels_per_tile, 426 | tile_count, 427 | grid: WorldGrid::unit_grid(tile_count, pixels_per_tile), 428 | zoom: 1, 429 | vp_size: UVec2::ONE, 430 | vp_pos: UVec2::ZERO, 431 | win_size: UVec2::ONE, 432 | ortho_size: 0.0, 433 | } 434 | } 435 | } 436 | 437 | fn on_window_resized( 438 | primary_window: Query<(Entity, &Window), With>, 439 | mut resize_events: EventReader, 440 | mut q_cam: Query<(&mut OrthographicProjection, &mut Camera, &mut TiledCamera)>, 441 | ) { 442 | // We need to dynamically resize the camera's viewports whenever the window 443 | // size changes. A resize_event is sent when the window is first created, 444 | // allowing us to reuse this system for initial setup. 445 | let (primary_window_entity, primary_window) = primary_window.single(); 446 | 447 | for resize_event in resize_events.read() { 448 | if resize_event.window == primary_window_entity { 449 | let wres = UVec2::new( 450 | primary_window.physical_width(), 451 | primary_window.physical_height(), 452 | ); 453 | 454 | if let Ok((mut proj, mut cam, mut tiled_cam)) = q_cam.get_single_mut() { 455 | update_viewport(&mut tiled_cam, wres, &mut proj, &mut cam); 456 | } 457 | } 458 | } 459 | } 460 | 461 | fn on_camera_changed( 462 | primary_window: Query<&Window, With>, 463 | mut q_cam: Query< 464 | (&mut OrthographicProjection, &mut Camera, &mut TiledCamera), 465 | Changed, 466 | >, 467 | ) { 468 | for (mut proj, mut cam, mut tiled_cam) in q_cam.iter_mut() { 469 | if let Ok(window) = primary_window.get_single() { 470 | let wres = UVec2::new(window.physical_width(), window.physical_height()); 471 | update_viewport(&mut tiled_cam, wres, &mut proj, &mut cam); 472 | } 473 | } 474 | } 475 | 476 | fn update_viewport( 477 | tiled_cam: &mut TiledCamera, 478 | wres: UVec2, 479 | proj: &mut OrthographicProjection, 480 | cam: &mut Camera, 481 | ) { 482 | let tres = tiled_cam.target_resolution().as_vec2(); 483 | let wres = wres.as_vec2(); 484 | let zoom = (wres / tres).floor().min_element().max(1.0); 485 | 486 | // The 'size' of the orthographic projection. 487 | // 488 | // For a `FixedVertical` projection this refers to the size of the 489 | // projection in vertical units. 490 | let ortho_size = match tiled_cam.world_space() { 491 | WorldSpace::Units => tiled_cam.tile_count.y as f32, 492 | WorldSpace::Pixels => tiled_cam.tile_count.y as f32 * tiled_cam.pixels_per_tile.y as f32, 493 | }; 494 | 495 | proj.scaling_mode = ScalingMode::FixedVertical(ortho_size); 496 | 497 | let vp_size = tres * zoom; 498 | let vp_pos = if wres.cmple(tres).any() { 499 | Vec2::ZERO 500 | } else { 501 | (wres / 2.0) - (vp_size / 2.0) 502 | } 503 | .floor(); 504 | 505 | cam.viewport = Some(Viewport { 506 | physical_position: vp_pos.as_uvec2(), 507 | physical_size: vp_size.as_uvec2(), 508 | ..default() 509 | }); 510 | 511 | // Camera values may have been changed manually - update grid values. 512 | tiled_cam.grid.tile_count = tiled_cam.tile_count; 513 | tiled_cam.grid.pixels_per_tile = tiled_cam.pixels_per_tile; 514 | tiled_cam.zoom = zoom as u32; 515 | tiled_cam.vp_pos = vp_pos.as_uvec2(); 516 | tiled_cam.vp_size = vp_size.as_uvec2(); 517 | tiled_cam.win_size = wres.as_uvec2(); 518 | tiled_cam.ortho_size = ortho_size; 519 | } 520 | 521 | #[cfg(test)] 522 | mod tests { 523 | use super::*; 524 | 525 | fn unit_cam(pos: impl Point2d, tile_count: impl Size2d) -> (GlobalTransform, TiledCamera) { 526 | ( 527 | GlobalTransform::from_translation(pos.as_vec2().extend(0.0)), 528 | TiledCamera::unit_cam(tile_count, [8, 8]), 529 | ) 530 | } 531 | 532 | fn make_pixel_cam( 533 | pos: impl Point2d, 534 | tile_count: impl Size2d, 535 | ) -> (GlobalTransform, TiledCamera) { 536 | ( 537 | GlobalTransform::from_translation(pos.as_vec2().extend(0.0)), 538 | TiledCamera::pixel_cam(tile_count, [8, 8]), 539 | ) 540 | } 541 | 542 | #[test] 543 | fn world_to_index() { 544 | let (t, cam) = unit_cam([5.0, 5.0], [3, 3]); 545 | let p = cam.world_to_index(&t, [4.5, 4.5]); 546 | assert_eq!([0, 0], p.to_array()); 547 | 548 | let (t, cam) = unit_cam([5.0, 5.0], [4, 4]); 549 | let p = cam.world_to_index(&t, [4.5, 4.5]); 550 | assert_eq!([-1, -1], p.to_array()); 551 | 552 | let (t, cam) = make_pixel_cam([16.0, 16.0], [3, 3]); 553 | let p = cam.world_to_index(&t, [12.0, 12.0]); 554 | assert_eq!([0, 0], p.to_array()); 555 | 556 | let (t, cam) = make_pixel_cam([16.0, 16.0], [4, 4]); 557 | let p = cam.world_to_index(&t, [12.0, 12.0]); 558 | assert_eq!([-1, -1], p.to_array()); 559 | } 560 | 561 | #[test] 562 | fn index_to_world() { 563 | let (t, cam) = make_pixel_cam([5, 5], [4, 4]); 564 | let p = cam.index_to_tile_pos(&t, [3, 3]); 565 | assert_eq!([29.0, 29.0], p.to_array()); 566 | 567 | let (t, cam) = unit_cam([5, 5], [4, 4]); 568 | let p = cam.index_to_tile_pos(&t, [3, 3]); 569 | assert_eq!([8.0, 8.0], p.to_array()); 570 | 571 | let (t, cam) = make_pixel_cam([16, 16], [3, 3]); 572 | let p = cam.index_to_tile_pos(&t, [3, 3]); 573 | assert_eq!([36.0, 36.0], p.to_array()); 574 | } 575 | 576 | #[test] 577 | fn new() { 578 | let cam = TiledCameraBundle::pixel_cam([5, 5]).tiled_camera; 579 | assert_eq!(cam.world_space(), WorldSpace::Pixels); 580 | 581 | let cam = TiledCameraBundle::unit_cam([5, 5]).tiled_camera; 582 | assert_eq!(cam.world_space(), WorldSpace::Units); 583 | } 584 | } 585 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "accesskit" 7 | version = "0.12.2" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "6cb10ed32c63247e4e39a8f42e8e30fb9442fbf7878c8e4a9849e7e381619bea" 10 | 11 | [[package]] 12 | name = "accesskit_consumer" 13 | version = "0.16.1" 14 | source = "registry+https://github.com/rust-lang/crates.io-index" 15 | checksum = "8c17cca53c09fbd7288667b22a201274b9becaa27f0b91bf52a526db95de45e6" 16 | dependencies = [ 17 | "accesskit", 18 | ] 19 | 20 | [[package]] 21 | name = "accesskit_macos" 22 | version = "0.10.1" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "cd3b6ae1eabbfbced10e840fd3fce8a93ae84f174b3e4ba892ab7bcb42e477a7" 25 | dependencies = [ 26 | "accesskit", 27 | "accesskit_consumer", 28 | "objc2 0.3.0-beta.3.patch-leaks.3", 29 | "once_cell", 30 | ] 31 | 32 | [[package]] 33 | name = "accesskit_windows" 34 | version = "0.15.1" 35 | source = "registry+https://github.com/rust-lang/crates.io-index" 36 | checksum = "afcae27ec0974fc7c3b0b318783be89fd1b2e66dd702179fe600166a38ff4a0b" 37 | dependencies = [ 38 | "accesskit", 39 | "accesskit_consumer", 40 | "once_cell", 41 | "paste", 42 | "static_assertions", 43 | "windows 0.48.0", 44 | ] 45 | 46 | [[package]] 47 | name = "accesskit_winit" 48 | version = "0.17.0" 49 | source = "registry+https://github.com/rust-lang/crates.io-index" 50 | checksum = "45f8f7c9f66d454d5fd8e344c8c8c7324b57194e1041b955519fc58a01e77a25" 51 | dependencies = [ 52 | "accesskit", 53 | "accesskit_macos", 54 | "accesskit_windows", 55 | "raw-window-handle", 56 | "winit", 57 | ] 58 | 59 | [[package]] 60 | name = "adler" 61 | version = "1.0.2" 62 | source = "registry+https://github.com/rust-lang/crates.io-index" 63 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 64 | 65 | [[package]] 66 | name = "ahash" 67 | version = "0.8.8" 68 | source = "registry+https://github.com/rust-lang/crates.io-index" 69 | checksum = "42cd52102d3df161c77a887b608d7a4897d7cc112886a9537b738a887a03aaff" 70 | dependencies = [ 71 | "cfg-if", 72 | "getrandom", 73 | "once_cell", 74 | "version_check", 75 | "zerocopy", 76 | ] 77 | 78 | [[package]] 79 | name = "aho-corasick" 80 | version = "1.1.2" 81 | source = "registry+https://github.com/rust-lang/crates.io-index" 82 | checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" 83 | dependencies = [ 84 | "memchr", 85 | ] 86 | 87 | [[package]] 88 | name = "allocator-api2" 89 | version = "0.2.16" 90 | source = "registry+https://github.com/rust-lang/crates.io-index" 91 | checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" 92 | 93 | [[package]] 94 | name = "android-activity" 95 | version = "0.5.2" 96 | source = "registry+https://github.com/rust-lang/crates.io-index" 97 | checksum = "ee91c0c2905bae44f84bfa4e044536541df26b7703fd0888deeb9060fcc44289" 98 | dependencies = [ 99 | "android-properties", 100 | "bitflags 2.4.2", 101 | "cc", 102 | "cesu8", 103 | "jni", 104 | "jni-sys", 105 | "libc", 106 | "log", 107 | "ndk", 108 | "ndk-context", 109 | "ndk-sys", 110 | "num_enum", 111 | "thiserror", 112 | ] 113 | 114 | [[package]] 115 | name = "android-properties" 116 | version = "0.2.2" 117 | source = "registry+https://github.com/rust-lang/crates.io-index" 118 | checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" 119 | 120 | [[package]] 121 | name = "android_log-sys" 122 | version = "0.3.1" 123 | source = "registry+https://github.com/rust-lang/crates.io-index" 124 | checksum = "5ecc8056bf6ab9892dcd53216c83d1597487d7dacac16c8df6b877d127df9937" 125 | 126 | [[package]] 127 | name = "android_system_properties" 128 | version = "0.1.5" 129 | source = "registry+https://github.com/rust-lang/crates.io-index" 130 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 131 | dependencies = [ 132 | "libc", 133 | ] 134 | 135 | [[package]] 136 | name = "approx" 137 | version = "0.5.1" 138 | source = "registry+https://github.com/rust-lang/crates.io-index" 139 | checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" 140 | dependencies = [ 141 | "num-traits", 142 | ] 143 | 144 | [[package]] 145 | name = "arrayref" 146 | version = "0.3.7" 147 | source = "registry+https://github.com/rust-lang/crates.io-index" 148 | checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" 149 | 150 | [[package]] 151 | name = "arrayvec" 152 | version = "0.7.4" 153 | source = "registry+https://github.com/rust-lang/crates.io-index" 154 | checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" 155 | 156 | [[package]] 157 | name = "as-raw-xcb-connection" 158 | version = "1.0.1" 159 | source = "registry+https://github.com/rust-lang/crates.io-index" 160 | checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" 161 | 162 | [[package]] 163 | name = "ash" 164 | version = "0.37.3+1.3.251" 165 | source = "registry+https://github.com/rust-lang/crates.io-index" 166 | checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" 167 | dependencies = [ 168 | "libloading 0.7.4", 169 | ] 170 | 171 | [[package]] 172 | name = "assert_approx_eq" 173 | version = "1.1.0" 174 | source = "registry+https://github.com/rust-lang/crates.io-index" 175 | checksum = "3c07dab4369547dbe5114677b33fbbf724971019f3818172d59a97a61c774ffd" 176 | 177 | [[package]] 178 | name = "async-broadcast" 179 | version = "0.5.1" 180 | source = "registry+https://github.com/rust-lang/crates.io-index" 181 | checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" 182 | dependencies = [ 183 | "event-listener 2.5.3", 184 | "futures-core", 185 | ] 186 | 187 | [[package]] 188 | name = "async-channel" 189 | version = "2.2.0" 190 | source = "registry+https://github.com/rust-lang/crates.io-index" 191 | checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3" 192 | dependencies = [ 193 | "concurrent-queue", 194 | "event-listener 5.0.0", 195 | "event-listener-strategy 0.5.0", 196 | "futures-core", 197 | "pin-project-lite", 198 | ] 199 | 200 | [[package]] 201 | name = "async-executor" 202 | version = "1.8.0" 203 | source = "registry+https://github.com/rust-lang/crates.io-index" 204 | checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" 205 | dependencies = [ 206 | "async-lock", 207 | "async-task", 208 | "concurrent-queue", 209 | "fastrand", 210 | "futures-lite", 211 | "slab", 212 | ] 213 | 214 | [[package]] 215 | name = "async-fs" 216 | version = "2.1.1" 217 | source = "registry+https://github.com/rust-lang/crates.io-index" 218 | checksum = "bc19683171f287921f2405677dd2ed2549c3b3bda697a563ebc3a121ace2aba1" 219 | dependencies = [ 220 | "async-lock", 221 | "blocking", 222 | "futures-lite", 223 | ] 224 | 225 | [[package]] 226 | name = "async-lock" 227 | version = "3.3.0" 228 | source = "registry+https://github.com/rust-lang/crates.io-index" 229 | checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" 230 | dependencies = [ 231 | "event-listener 4.0.3", 232 | "event-listener-strategy 0.4.0", 233 | "pin-project-lite", 234 | ] 235 | 236 | [[package]] 237 | name = "async-task" 238 | version = "4.7.0" 239 | source = "registry+https://github.com/rust-lang/crates.io-index" 240 | checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" 241 | 242 | [[package]] 243 | name = "atomic-waker" 244 | version = "1.1.2" 245 | source = "registry+https://github.com/rust-lang/crates.io-index" 246 | checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 247 | 248 | [[package]] 249 | name = "autocfg" 250 | version = "1.1.0" 251 | source = "registry+https://github.com/rust-lang/crates.io-index" 252 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 253 | 254 | [[package]] 255 | name = "base64" 256 | version = "0.21.7" 257 | source = "registry+https://github.com/rust-lang/crates.io-index" 258 | checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" 259 | 260 | [[package]] 261 | name = "bevy" 262 | version = "0.13.0" 263 | source = "registry+https://github.com/rust-lang/crates.io-index" 264 | checksum = "611dd99f412e862610adb43e2243b16436c6d8009f6d9dbe8ce3d6d840b34029" 265 | dependencies = [ 266 | "bevy_dylib", 267 | "bevy_internal", 268 | ] 269 | 270 | [[package]] 271 | name = "bevy_a11y" 272 | version = "0.13.0" 273 | source = "registry+https://github.com/rust-lang/crates.io-index" 274 | checksum = "5bf80cd6d0dca4073f9b34b16f1d187a4caa035fd841892519431783bbc9e287" 275 | dependencies = [ 276 | "accesskit", 277 | "bevy_app", 278 | "bevy_derive", 279 | "bevy_ecs", 280 | ] 281 | 282 | [[package]] 283 | name = "bevy_app" 284 | version = "0.13.0" 285 | source = "registry+https://github.com/rust-lang/crates.io-index" 286 | checksum = "8bce3544afc010ffed39c136f6d5a9322d20d38df1394d468ba9106caa0434cb" 287 | dependencies = [ 288 | "bevy_derive", 289 | "bevy_ecs", 290 | "bevy_reflect", 291 | "bevy_tasks", 292 | "bevy_utils", 293 | "downcast-rs", 294 | "wasm-bindgen", 295 | "web-sys", 296 | ] 297 | 298 | [[package]] 299 | name = "bevy_asset" 300 | version = "0.13.0" 301 | source = "registry+https://github.com/rust-lang/crates.io-index" 302 | checksum = "ac185d8e29c7eb0194f8aae7af3f7234f7ca7a448293be1d3d0d8fef435f65ec" 303 | dependencies = [ 304 | "async-broadcast", 305 | "async-fs", 306 | "async-lock", 307 | "bevy_app", 308 | "bevy_asset_macros", 309 | "bevy_ecs", 310 | "bevy_log", 311 | "bevy_reflect", 312 | "bevy_tasks", 313 | "bevy_utils", 314 | "bevy_winit", 315 | "blake3", 316 | "crossbeam-channel", 317 | "downcast-rs", 318 | "futures-io", 319 | "futures-lite", 320 | "js-sys", 321 | "parking_lot", 322 | "ron", 323 | "serde", 324 | "thiserror", 325 | "wasm-bindgen", 326 | "wasm-bindgen-futures", 327 | "web-sys", 328 | ] 329 | 330 | [[package]] 331 | name = "bevy_asset_macros" 332 | version = "0.13.0" 333 | source = "registry+https://github.com/rust-lang/crates.io-index" 334 | checksum = "cb82d1aac8251378c45a8d0ad788d1bf75f54db28c1750f84f1fd7c00127927a" 335 | dependencies = [ 336 | "bevy_macro_utils", 337 | "proc-macro2", 338 | "quote", 339 | "syn 2.0.49", 340 | ] 341 | 342 | [[package]] 343 | name = "bevy_core" 344 | version = "0.13.0" 345 | source = "registry+https://github.com/rust-lang/crates.io-index" 346 | checksum = "f7b1b340b8d08f48ecd51b97589d261f5023a7b073d25e300382c49146524103" 347 | dependencies = [ 348 | "bevy_app", 349 | "bevy_ecs", 350 | "bevy_math", 351 | "bevy_reflect", 352 | "bevy_tasks", 353 | "bevy_utils", 354 | "bytemuck", 355 | ] 356 | 357 | [[package]] 358 | name = "bevy_core_pipeline" 359 | version = "0.13.0" 360 | source = "registry+https://github.com/rust-lang/crates.io-index" 361 | checksum = "626a5aaadbdd69eae020c5856575d2d0113423ae1ae1351377e20956d940052c" 362 | dependencies = [ 363 | "bevy_app", 364 | "bevy_asset", 365 | "bevy_core", 366 | "bevy_derive", 367 | "bevy_ecs", 368 | "bevy_log", 369 | "bevy_math", 370 | "bevy_reflect", 371 | "bevy_render", 372 | "bevy_transform", 373 | "bevy_utils", 374 | "bitflags 2.4.2", 375 | "radsort", 376 | "serde", 377 | ] 378 | 379 | [[package]] 380 | name = "bevy_derive" 381 | version = "0.13.0" 382 | source = "registry+https://github.com/rust-lang/crates.io-index" 383 | checksum = "028ae2a34678055185d7f1beebb1ebe6a8dcf3733e139e4ee1383a7f29ae8ba6" 384 | dependencies = [ 385 | "bevy_macro_utils", 386 | "quote", 387 | "syn 2.0.49", 388 | ] 389 | 390 | [[package]] 391 | name = "bevy_diagnostic" 392 | version = "0.13.0" 393 | source = "registry+https://github.com/rust-lang/crates.io-index" 394 | checksum = "01a104acfdc5280accd01a3524810daf3bda72924e3da0c8a9ec816a57eef4e3" 395 | dependencies = [ 396 | "bevy_app", 397 | "bevy_core", 398 | "bevy_ecs", 399 | "bevy_log", 400 | "bevy_time", 401 | "bevy_utils", 402 | "const-fnv1a-hash", 403 | "sysinfo", 404 | ] 405 | 406 | [[package]] 407 | name = "bevy_dylib" 408 | version = "0.13.0" 409 | source = "registry+https://github.com/rust-lang/crates.io-index" 410 | checksum = "c3b3b76f0d7a4da8f944e5316f2d2d2af3bbb40d87508355993ea69afbc9411c" 411 | dependencies = [ 412 | "bevy_internal", 413 | ] 414 | 415 | [[package]] 416 | name = "bevy_ecs" 417 | version = "0.13.0" 418 | source = "registry+https://github.com/rust-lang/crates.io-index" 419 | checksum = "b85406d5febbbdbcac4444ef61cd9a816f2f025ed692a3fc5439a32153070304" 420 | dependencies = [ 421 | "async-channel", 422 | "bevy_ecs_macros", 423 | "bevy_ptr", 424 | "bevy_reflect", 425 | "bevy_tasks", 426 | "bevy_utils", 427 | "downcast-rs", 428 | "fixedbitset", 429 | "rustc-hash", 430 | "serde", 431 | "thiserror", 432 | "thread_local", 433 | ] 434 | 435 | [[package]] 436 | name = "bevy_ecs_macros" 437 | version = "0.13.0" 438 | source = "registry+https://github.com/rust-lang/crates.io-index" 439 | checksum = "9a3ce4b65d7c5f1990e729df75cec2ea6e2241b4a0c37b31c281a04c59c11b7b" 440 | dependencies = [ 441 | "bevy_macro_utils", 442 | "proc-macro2", 443 | "quote", 444 | "syn 2.0.49", 445 | ] 446 | 447 | [[package]] 448 | name = "bevy_encase_derive" 449 | version = "0.13.0" 450 | source = "registry+https://github.com/rust-lang/crates.io-index" 451 | checksum = "6c3d301922e76b16819e17c8cc43b34e92c13ccd06ad19dfa3e52a91a0e13e5c" 452 | dependencies = [ 453 | "bevy_macro_utils", 454 | "encase_derive_impl", 455 | ] 456 | 457 | [[package]] 458 | name = "bevy_gizmos" 459 | version = "0.13.0" 460 | source = "registry+https://github.com/rust-lang/crates.io-index" 461 | checksum = "bdca80b7b4db340eb666d69374a0195b3935759120d0b990fcef8b27d0fb3680" 462 | dependencies = [ 463 | "bevy_app", 464 | "bevy_asset", 465 | "bevy_core", 466 | "bevy_core_pipeline", 467 | "bevy_ecs", 468 | "bevy_gizmos_macros", 469 | "bevy_log", 470 | "bevy_math", 471 | "bevy_reflect", 472 | "bevy_render", 473 | "bevy_sprite", 474 | "bevy_transform", 475 | "bevy_utils", 476 | ] 477 | 478 | [[package]] 479 | name = "bevy_gizmos_macros" 480 | version = "0.13.0" 481 | source = "registry+https://github.com/rust-lang/crates.io-index" 482 | checksum = "2a949eb8b4538a6e4d875321cda2b63dc0fb0317cf18c8245ca5a32f24f6d26d" 483 | dependencies = [ 484 | "bevy_macro_utils", 485 | "proc-macro2", 486 | "quote", 487 | "syn 2.0.49", 488 | ] 489 | 490 | [[package]] 491 | name = "bevy_hierarchy" 492 | version = "0.13.0" 493 | source = "registry+https://github.com/rust-lang/crates.io-index" 494 | checksum = "a9f9f843e43d921f07658c24eae74285efc7a335c87998596f3f365155320c69" 495 | dependencies = [ 496 | "bevy_app", 497 | "bevy_core", 498 | "bevy_ecs", 499 | "bevy_log", 500 | "bevy_reflect", 501 | "bevy_utils", 502 | ] 503 | 504 | [[package]] 505 | name = "bevy_input" 506 | version = "0.13.0" 507 | source = "registry+https://github.com/rust-lang/crates.io-index" 508 | checksum = "a9cb5b2f3747ffb00cf7e3d6b52f7384476921cd31f0cfd3d1ddff31f83d9252" 509 | dependencies = [ 510 | "bevy_app", 511 | "bevy_ecs", 512 | "bevy_math", 513 | "bevy_reflect", 514 | "bevy_utils", 515 | "smol_str", 516 | "thiserror", 517 | ] 518 | 519 | [[package]] 520 | name = "bevy_internal" 521 | version = "0.13.0" 522 | source = "registry+https://github.com/rust-lang/crates.io-index" 523 | checksum = "7af89c7083830b1d65fcf0260c3d2537c397fe8ce871471b6e97198a4704f23e" 524 | dependencies = [ 525 | "bevy_a11y", 526 | "bevy_app", 527 | "bevy_asset", 528 | "bevy_core", 529 | "bevy_core_pipeline", 530 | "bevy_derive", 531 | "bevy_diagnostic", 532 | "bevy_ecs", 533 | "bevy_gizmos", 534 | "bevy_hierarchy", 535 | "bevy_input", 536 | "bevy_log", 537 | "bevy_math", 538 | "bevy_ptr", 539 | "bevy_reflect", 540 | "bevy_render", 541 | "bevy_scene", 542 | "bevy_sprite", 543 | "bevy_tasks", 544 | "bevy_time", 545 | "bevy_transform", 546 | "bevy_utils", 547 | "bevy_window", 548 | "bevy_winit", 549 | ] 550 | 551 | [[package]] 552 | name = "bevy_log" 553 | version = "0.13.0" 554 | source = "registry+https://github.com/rust-lang/crates.io-index" 555 | checksum = "cfd5bcc3531f8008897fb03cc8751b86d0d29ef94f8fd38b422f9603b7ae80d0" 556 | dependencies = [ 557 | "android_log-sys", 558 | "bevy_app", 559 | "bevy_ecs", 560 | "bevy_utils", 561 | "console_error_panic_hook", 562 | "tracing-log 0.1.4", 563 | "tracing-subscriber", 564 | "tracing-wasm", 565 | ] 566 | 567 | [[package]] 568 | name = "bevy_macro_utils" 569 | version = "0.13.0" 570 | source = "registry+https://github.com/rust-lang/crates.io-index" 571 | checksum = "ac4401c25b197e7c1455a4875a90b61bba047a9e8d290ce029082c818ab1a21c" 572 | dependencies = [ 573 | "proc-macro2", 574 | "quote", 575 | "rustc-hash", 576 | "syn 2.0.49", 577 | "toml_edit", 578 | ] 579 | 580 | [[package]] 581 | name = "bevy_math" 582 | version = "0.13.0" 583 | source = "registry+https://github.com/rust-lang/crates.io-index" 584 | checksum = "6f312b1b8aa6d3965b65040b08e33efac030db3071f20b44f9da9c4c3dfcaf76" 585 | dependencies = [ 586 | "glam", 587 | "serde", 588 | ] 589 | 590 | [[package]] 591 | name = "bevy_mikktspace" 592 | version = "0.13.0" 593 | source = "registry+https://github.com/rust-lang/crates.io-index" 594 | checksum = "3075c01f2b1799945892d5310fc1836e47c045dfe6af5878a304a475931a0c5f" 595 | dependencies = [ 596 | "glam", 597 | ] 598 | 599 | [[package]] 600 | name = "bevy_ptr" 601 | version = "0.13.0" 602 | source = "registry+https://github.com/rust-lang/crates.io-index" 603 | checksum = "86afa4a88ee06b10fe1e6f28a796ba2eedd16804717cbbb911df0cbb0cd6677b" 604 | 605 | [[package]] 606 | name = "bevy_reflect" 607 | version = "0.13.0" 608 | source = "registry+https://github.com/rust-lang/crates.io-index" 609 | checksum = "133dfab8d403d0575eeed9084e85780bbb449dcf75dd687448439117789b40a2" 610 | dependencies = [ 611 | "bevy_math", 612 | "bevy_ptr", 613 | "bevy_reflect_derive", 614 | "bevy_utils", 615 | "downcast-rs", 616 | "erased-serde", 617 | "glam", 618 | "serde", 619 | "smol_str", 620 | "thiserror", 621 | ] 622 | 623 | [[package]] 624 | name = "bevy_reflect_derive" 625 | version = "0.13.0" 626 | source = "registry+https://github.com/rust-lang/crates.io-index" 627 | checksum = "ce1679a4dfdb2c9ff24ca590914c3cec119d7c9e1b56fa637776913acc030386" 628 | dependencies = [ 629 | "bevy_macro_utils", 630 | "proc-macro2", 631 | "quote", 632 | "syn 2.0.49", 633 | "uuid", 634 | ] 635 | 636 | [[package]] 637 | name = "bevy_render" 638 | version = "0.13.0" 639 | source = "registry+https://github.com/rust-lang/crates.io-index" 640 | checksum = "d3b194b7029b7541ef9206ac3cb696d3cb37f70bd3260d293fc00d378547e892" 641 | dependencies = [ 642 | "async-channel", 643 | "bevy_app", 644 | "bevy_asset", 645 | "bevy_core", 646 | "bevy_derive", 647 | "bevy_ecs", 648 | "bevy_encase_derive", 649 | "bevy_hierarchy", 650 | "bevy_log", 651 | "bevy_math", 652 | "bevy_mikktspace", 653 | "bevy_reflect", 654 | "bevy_render_macros", 655 | "bevy_tasks", 656 | "bevy_time", 657 | "bevy_transform", 658 | "bevy_utils", 659 | "bevy_window", 660 | "bitflags 2.4.2", 661 | "bytemuck", 662 | "codespan-reporting", 663 | "downcast-rs", 664 | "encase", 665 | "futures-lite", 666 | "hexasphere", 667 | "image", 668 | "js-sys", 669 | "naga", 670 | "naga_oil", 671 | "serde", 672 | "thiserror", 673 | "thread_local", 674 | "wasm-bindgen", 675 | "web-sys", 676 | "wgpu", 677 | ] 678 | 679 | [[package]] 680 | name = "bevy_render_macros" 681 | version = "0.13.0" 682 | source = "registry+https://github.com/rust-lang/crates.io-index" 683 | checksum = "4aa6d99b50375bb7f63be2c3055dfe2f926f7b3c4db108bb0b1181b4f02766aa" 684 | dependencies = [ 685 | "bevy_macro_utils", 686 | "proc-macro2", 687 | "quote", 688 | "syn 2.0.49", 689 | ] 690 | 691 | [[package]] 692 | name = "bevy_scene" 693 | version = "0.13.0" 694 | source = "registry+https://github.com/rust-lang/crates.io-index" 695 | checksum = "2c3c82eaff0b22949183a75a7e2d7fc4ece808235918b34c5b282aab52c3563a" 696 | dependencies = [ 697 | "bevy_app", 698 | "bevy_asset", 699 | "bevy_derive", 700 | "bevy_ecs", 701 | "bevy_hierarchy", 702 | "bevy_reflect", 703 | "bevy_render", 704 | "bevy_transform", 705 | "bevy_utils", 706 | "serde", 707 | "thiserror", 708 | "uuid", 709 | ] 710 | 711 | [[package]] 712 | name = "bevy_sprite" 713 | version = "0.13.0" 714 | source = "registry+https://github.com/rust-lang/crates.io-index" 715 | checksum = "5ea977d7d7c48fc4ba283d449f09528c4e70db17c9048e32e99ecd9890d72223" 716 | dependencies = [ 717 | "bevy_app", 718 | "bevy_asset", 719 | "bevy_core_pipeline", 720 | "bevy_derive", 721 | "bevy_ecs", 722 | "bevy_log", 723 | "bevy_math", 724 | "bevy_reflect", 725 | "bevy_render", 726 | "bevy_transform", 727 | "bevy_utils", 728 | "bitflags 2.4.2", 729 | "bytemuck", 730 | "fixedbitset", 731 | "guillotiere", 732 | "radsort", 733 | "rectangle-pack", 734 | "thiserror", 735 | ] 736 | 737 | [[package]] 738 | name = "bevy_tasks" 739 | version = "0.13.0" 740 | source = "registry+https://github.com/rust-lang/crates.io-index" 741 | checksum = "b20f243f6fc4c4ba10c2dbff891e947ddae947bb20b263f43e023558b35294bd" 742 | dependencies = [ 743 | "async-channel", 744 | "async-executor", 745 | "async-task", 746 | "concurrent-queue", 747 | "futures-lite", 748 | "wasm-bindgen-futures", 749 | ] 750 | 751 | [[package]] 752 | name = "bevy_tiled_camera" 753 | version = "0.9.0" 754 | dependencies = [ 755 | "assert_approx_eq", 756 | "bevy", 757 | "sark_grids", 758 | ] 759 | 760 | [[package]] 761 | name = "bevy_time" 762 | version = "0.13.0" 763 | source = "registry+https://github.com/rust-lang/crates.io-index" 764 | checksum = "9738901b6b251d2c9250542af7002d6f671401fc3b74504682697c5ec822f210" 765 | dependencies = [ 766 | "bevy_app", 767 | "bevy_ecs", 768 | "bevy_reflect", 769 | "bevy_utils", 770 | "crossbeam-channel", 771 | "thiserror", 772 | ] 773 | 774 | [[package]] 775 | name = "bevy_transform" 776 | version = "0.13.0" 777 | source = "registry+https://github.com/rust-lang/crates.io-index" 778 | checksum = "ba73744a95bc4b8683e91cea3e79b1ad0844c1d677f31fbbc1814c79a5b4f8f0" 779 | dependencies = [ 780 | "bevy_app", 781 | "bevy_ecs", 782 | "bevy_hierarchy", 783 | "bevy_math", 784 | "bevy_reflect", 785 | "thiserror", 786 | ] 787 | 788 | [[package]] 789 | name = "bevy_utils" 790 | version = "0.13.0" 791 | source = "registry+https://github.com/rust-lang/crates.io-index" 792 | checksum = "94a06aca1c1863606416b892f4c79e300dbc6211b6690953269051a431c2cca0" 793 | dependencies = [ 794 | "ahash", 795 | "bevy_utils_proc_macros", 796 | "getrandom", 797 | "hashbrown", 798 | "nonmax", 799 | "petgraph", 800 | "smallvec", 801 | "thiserror", 802 | "tracing", 803 | "uuid", 804 | "web-time", 805 | ] 806 | 807 | [[package]] 808 | name = "bevy_utils_proc_macros" 809 | version = "0.13.0" 810 | source = "registry+https://github.com/rust-lang/crates.io-index" 811 | checksum = "31ae98e9c0c08b0f5c90e22cd713201f759b98d4fd570b99867a695f8641859a" 812 | dependencies = [ 813 | "proc-macro2", 814 | "quote", 815 | "syn 2.0.49", 816 | ] 817 | 818 | [[package]] 819 | name = "bevy_window" 820 | version = "0.13.0" 821 | source = "registry+https://github.com/rust-lang/crates.io-index" 822 | checksum = "cb627efd7622a61398ac0d3674f93c997cffe16f13c59fb8ae8a05c9e28de961" 823 | dependencies = [ 824 | "bevy_a11y", 825 | "bevy_app", 826 | "bevy_ecs", 827 | "bevy_input", 828 | "bevy_math", 829 | "bevy_reflect", 830 | "bevy_utils", 831 | "raw-window-handle", 832 | "smol_str", 833 | ] 834 | 835 | [[package]] 836 | name = "bevy_winit" 837 | version = "0.13.0" 838 | source = "registry+https://github.com/rust-lang/crates.io-index" 839 | checksum = "55105324a201941ae587790f83f6d9caa327e0baa0205558ec41e5ee05a1f703" 840 | dependencies = [ 841 | "accesskit_winit", 842 | "approx", 843 | "bevy_a11y", 844 | "bevy_app", 845 | "bevy_derive", 846 | "bevy_ecs", 847 | "bevy_hierarchy", 848 | "bevy_input", 849 | "bevy_math", 850 | "bevy_tasks", 851 | "bevy_utils", 852 | "bevy_window", 853 | "crossbeam-channel", 854 | "raw-window-handle", 855 | "wasm-bindgen", 856 | "web-sys", 857 | "winit", 858 | ] 859 | 860 | [[package]] 861 | name = "bit-set" 862 | version = "0.5.3" 863 | source = "registry+https://github.com/rust-lang/crates.io-index" 864 | checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" 865 | dependencies = [ 866 | "bit-vec", 867 | ] 868 | 869 | [[package]] 870 | name = "bit-vec" 871 | version = "0.6.3" 872 | source = "registry+https://github.com/rust-lang/crates.io-index" 873 | checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" 874 | 875 | [[package]] 876 | name = "bitflags" 877 | version = "1.3.2" 878 | source = "registry+https://github.com/rust-lang/crates.io-index" 879 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 880 | 881 | [[package]] 882 | name = "bitflags" 883 | version = "2.4.2" 884 | source = "registry+https://github.com/rust-lang/crates.io-index" 885 | checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" 886 | dependencies = [ 887 | "serde", 888 | ] 889 | 890 | [[package]] 891 | name = "blake3" 892 | version = "1.5.0" 893 | source = "registry+https://github.com/rust-lang/crates.io-index" 894 | checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" 895 | dependencies = [ 896 | "arrayref", 897 | "arrayvec", 898 | "cc", 899 | "cfg-if", 900 | "constant_time_eq", 901 | ] 902 | 903 | [[package]] 904 | name = "block" 905 | version = "0.1.6" 906 | source = "registry+https://github.com/rust-lang/crates.io-index" 907 | checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 908 | 909 | [[package]] 910 | name = "block-sys" 911 | version = "0.1.0-beta.1" 912 | source = "registry+https://github.com/rust-lang/crates.io-index" 913 | checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" 914 | dependencies = [ 915 | "objc-sys 0.2.0-beta.2", 916 | ] 917 | 918 | [[package]] 919 | name = "block-sys" 920 | version = "0.2.1" 921 | source = "registry+https://github.com/rust-lang/crates.io-index" 922 | checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7" 923 | dependencies = [ 924 | "objc-sys 0.3.2", 925 | ] 926 | 927 | [[package]] 928 | name = "block2" 929 | version = "0.2.0-alpha.6" 930 | source = "registry+https://github.com/rust-lang/crates.io-index" 931 | checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" 932 | dependencies = [ 933 | "block-sys 0.1.0-beta.1", 934 | "objc2-encode 2.0.0-pre.2", 935 | ] 936 | 937 | [[package]] 938 | name = "block2" 939 | version = "0.3.0" 940 | source = "registry+https://github.com/rust-lang/crates.io-index" 941 | checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68" 942 | dependencies = [ 943 | "block-sys 0.2.1", 944 | "objc2 0.4.1", 945 | ] 946 | 947 | [[package]] 948 | name = "blocking" 949 | version = "1.5.1" 950 | source = "registry+https://github.com/rust-lang/crates.io-index" 951 | checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" 952 | dependencies = [ 953 | "async-channel", 954 | "async-lock", 955 | "async-task", 956 | "fastrand", 957 | "futures-io", 958 | "futures-lite", 959 | "piper", 960 | "tracing", 961 | ] 962 | 963 | [[package]] 964 | name = "bumpalo" 965 | version = "3.15.0" 966 | source = "registry+https://github.com/rust-lang/crates.io-index" 967 | checksum = "d32a994c2b3ca201d9b263612a374263f05e7adde37c4707f693dcd375076d1f" 968 | 969 | [[package]] 970 | name = "bytemuck" 971 | version = "1.14.3" 972 | source = "registry+https://github.com/rust-lang/crates.io-index" 973 | checksum = "a2ef034f05691a48569bd920a96c81b9d91bbad1ab5ac7c4616c1f6ef36cb79f" 974 | dependencies = [ 975 | "bytemuck_derive", 976 | ] 977 | 978 | [[package]] 979 | name = "bytemuck_derive" 980 | version = "1.5.0" 981 | source = "registry+https://github.com/rust-lang/crates.io-index" 982 | checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" 983 | dependencies = [ 984 | "proc-macro2", 985 | "quote", 986 | "syn 2.0.49", 987 | ] 988 | 989 | [[package]] 990 | name = "byteorder" 991 | version = "1.5.0" 992 | source = "registry+https://github.com/rust-lang/crates.io-index" 993 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 994 | 995 | [[package]] 996 | name = "bytes" 997 | version = "1.5.0" 998 | source = "registry+https://github.com/rust-lang/crates.io-index" 999 | checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" 1000 | 1001 | [[package]] 1002 | name = "calloop" 1003 | version = "0.12.4" 1004 | source = "registry+https://github.com/rust-lang/crates.io-index" 1005 | checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" 1006 | dependencies = [ 1007 | "bitflags 2.4.2", 1008 | "log", 1009 | "polling", 1010 | "rustix", 1011 | "slab", 1012 | "thiserror", 1013 | ] 1014 | 1015 | [[package]] 1016 | name = "cc" 1017 | version = "1.0.83" 1018 | source = "registry+https://github.com/rust-lang/crates.io-index" 1019 | checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" 1020 | dependencies = [ 1021 | "jobserver", 1022 | "libc", 1023 | ] 1024 | 1025 | [[package]] 1026 | name = "cesu8" 1027 | version = "1.1.0" 1028 | source = "registry+https://github.com/rust-lang/crates.io-index" 1029 | checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 1030 | 1031 | [[package]] 1032 | name = "cfg-if" 1033 | version = "1.0.0" 1034 | source = "registry+https://github.com/rust-lang/crates.io-index" 1035 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 1036 | 1037 | [[package]] 1038 | name = "cfg_aliases" 1039 | version = "0.1.1" 1040 | source = "registry+https://github.com/rust-lang/crates.io-index" 1041 | checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" 1042 | 1043 | [[package]] 1044 | name = "codespan-reporting" 1045 | version = "0.11.1" 1046 | source = "registry+https://github.com/rust-lang/crates.io-index" 1047 | checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" 1048 | dependencies = [ 1049 | "termcolor", 1050 | "unicode-width", 1051 | ] 1052 | 1053 | [[package]] 1054 | name = "color_quant" 1055 | version = "1.1.0" 1056 | source = "registry+https://github.com/rust-lang/crates.io-index" 1057 | checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" 1058 | 1059 | [[package]] 1060 | name = "com" 1061 | version = "0.6.0" 1062 | source = "registry+https://github.com/rust-lang/crates.io-index" 1063 | checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" 1064 | dependencies = [ 1065 | "com_macros", 1066 | ] 1067 | 1068 | [[package]] 1069 | name = "com_macros" 1070 | version = "0.6.0" 1071 | source = "registry+https://github.com/rust-lang/crates.io-index" 1072 | checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" 1073 | dependencies = [ 1074 | "com_macros_support", 1075 | "proc-macro2", 1076 | "syn 1.0.109", 1077 | ] 1078 | 1079 | [[package]] 1080 | name = "com_macros_support" 1081 | version = "0.6.0" 1082 | source = "registry+https://github.com/rust-lang/crates.io-index" 1083 | checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" 1084 | dependencies = [ 1085 | "proc-macro2", 1086 | "quote", 1087 | "syn 1.0.109", 1088 | ] 1089 | 1090 | [[package]] 1091 | name = "combine" 1092 | version = "4.6.6" 1093 | source = "registry+https://github.com/rust-lang/crates.io-index" 1094 | checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" 1095 | dependencies = [ 1096 | "bytes", 1097 | "memchr", 1098 | ] 1099 | 1100 | [[package]] 1101 | name = "concurrent-queue" 1102 | version = "2.4.0" 1103 | source = "registry+https://github.com/rust-lang/crates.io-index" 1104 | checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" 1105 | dependencies = [ 1106 | "crossbeam-utils", 1107 | ] 1108 | 1109 | [[package]] 1110 | name = "console_error_panic_hook" 1111 | version = "0.1.7" 1112 | source = "registry+https://github.com/rust-lang/crates.io-index" 1113 | checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" 1114 | dependencies = [ 1115 | "cfg-if", 1116 | "wasm-bindgen", 1117 | ] 1118 | 1119 | [[package]] 1120 | name = "const-fnv1a-hash" 1121 | version = "1.1.0" 1122 | source = "registry+https://github.com/rust-lang/crates.io-index" 1123 | checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca" 1124 | 1125 | [[package]] 1126 | name = "const_panic" 1127 | version = "0.2.8" 1128 | source = "registry+https://github.com/rust-lang/crates.io-index" 1129 | checksum = "6051f239ecec86fde3410901ab7860d458d160371533842974fc61f96d15879b" 1130 | 1131 | [[package]] 1132 | name = "const_soft_float" 1133 | version = "0.1.4" 1134 | source = "registry+https://github.com/rust-lang/crates.io-index" 1135 | checksum = "87ca1caa64ef4ed453e68bb3db612e51cf1b2f5b871337f0fcab1c8f87cc3dff" 1136 | 1137 | [[package]] 1138 | name = "constant_time_eq" 1139 | version = "0.3.0" 1140 | source = "registry+https://github.com/rust-lang/crates.io-index" 1141 | checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" 1142 | 1143 | [[package]] 1144 | name = "constgebra" 1145 | version = "0.1.3" 1146 | source = "registry+https://github.com/rust-lang/crates.io-index" 1147 | checksum = "edd23e864550e6dafc1e41ac78ce4f1ccddc8672b40c403524a04ff3f0518420" 1148 | dependencies = [ 1149 | "const_soft_float", 1150 | ] 1151 | 1152 | [[package]] 1153 | name = "core-foundation" 1154 | version = "0.9.4" 1155 | source = "registry+https://github.com/rust-lang/crates.io-index" 1156 | checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 1157 | dependencies = [ 1158 | "core-foundation-sys", 1159 | "libc", 1160 | ] 1161 | 1162 | [[package]] 1163 | name = "core-foundation-sys" 1164 | version = "0.8.6" 1165 | source = "registry+https://github.com/rust-lang/crates.io-index" 1166 | checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" 1167 | 1168 | [[package]] 1169 | name = "core-graphics" 1170 | version = "0.23.1" 1171 | source = "registry+https://github.com/rust-lang/crates.io-index" 1172 | checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212" 1173 | dependencies = [ 1174 | "bitflags 1.3.2", 1175 | "core-foundation", 1176 | "core-graphics-types", 1177 | "foreign-types", 1178 | "libc", 1179 | ] 1180 | 1181 | [[package]] 1182 | name = "core-graphics-types" 1183 | version = "0.1.3" 1184 | source = "registry+https://github.com/rust-lang/crates.io-index" 1185 | checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" 1186 | dependencies = [ 1187 | "bitflags 1.3.2", 1188 | "core-foundation", 1189 | "libc", 1190 | ] 1191 | 1192 | [[package]] 1193 | name = "crc32fast" 1194 | version = "1.4.0" 1195 | source = "registry+https://github.com/rust-lang/crates.io-index" 1196 | checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" 1197 | dependencies = [ 1198 | "cfg-if", 1199 | ] 1200 | 1201 | [[package]] 1202 | name = "crossbeam-channel" 1203 | version = "0.5.11" 1204 | source = "registry+https://github.com/rust-lang/crates.io-index" 1205 | checksum = "176dc175b78f56c0f321911d9c8eb2b77a78a4860b9c19db83835fea1a46649b" 1206 | dependencies = [ 1207 | "crossbeam-utils", 1208 | ] 1209 | 1210 | [[package]] 1211 | name = "crossbeam-utils" 1212 | version = "0.8.19" 1213 | source = "registry+https://github.com/rust-lang/crates.io-index" 1214 | checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" 1215 | 1216 | [[package]] 1217 | name = "cursor-icon" 1218 | version = "1.1.0" 1219 | source = "registry+https://github.com/rust-lang/crates.io-index" 1220 | checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" 1221 | 1222 | [[package]] 1223 | name = "d3d12" 1224 | version = "0.19.0" 1225 | source = "registry+https://github.com/rust-lang/crates.io-index" 1226 | checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307" 1227 | dependencies = [ 1228 | "bitflags 2.4.2", 1229 | "libloading 0.8.1", 1230 | "winapi", 1231 | ] 1232 | 1233 | [[package]] 1234 | name = "data-encoding" 1235 | version = "2.5.0" 1236 | source = "registry+https://github.com/rust-lang/crates.io-index" 1237 | checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" 1238 | 1239 | [[package]] 1240 | name = "dispatch" 1241 | version = "0.2.0" 1242 | source = "registry+https://github.com/rust-lang/crates.io-index" 1243 | checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 1244 | 1245 | [[package]] 1246 | name = "dlib" 1247 | version = "0.5.2" 1248 | source = "registry+https://github.com/rust-lang/crates.io-index" 1249 | checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" 1250 | dependencies = [ 1251 | "libloading 0.8.1", 1252 | ] 1253 | 1254 | [[package]] 1255 | name = "downcast-rs" 1256 | version = "1.2.0" 1257 | source = "registry+https://github.com/rust-lang/crates.io-index" 1258 | checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" 1259 | 1260 | [[package]] 1261 | name = "either" 1262 | version = "1.10.0" 1263 | source = "registry+https://github.com/rust-lang/crates.io-index" 1264 | checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" 1265 | 1266 | [[package]] 1267 | name = "encase" 1268 | version = "0.7.0" 1269 | source = "registry+https://github.com/rust-lang/crates.io-index" 1270 | checksum = "95ed933078d2e659745df651f4c180511cd582e5b9414ff896e7d50d207e3103" 1271 | dependencies = [ 1272 | "const_panic", 1273 | "encase_derive", 1274 | "glam", 1275 | "thiserror", 1276 | ] 1277 | 1278 | [[package]] 1279 | name = "encase_derive" 1280 | version = "0.7.0" 1281 | source = "registry+https://github.com/rust-lang/crates.io-index" 1282 | checksum = "f4ce1449c7d19eba6cc0abd231150ad81620a8dce29601d7f8d236e5d431d72a" 1283 | dependencies = [ 1284 | "encase_derive_impl", 1285 | ] 1286 | 1287 | [[package]] 1288 | name = "encase_derive_impl" 1289 | version = "0.7.0" 1290 | source = "registry+https://github.com/rust-lang/crates.io-index" 1291 | checksum = "92959a9e8d13eaa13b8ae8c7b583c3bf1669ca7a8e7708a088d12587ba86effc" 1292 | dependencies = [ 1293 | "proc-macro2", 1294 | "quote", 1295 | "syn 2.0.49", 1296 | ] 1297 | 1298 | [[package]] 1299 | name = "equivalent" 1300 | version = "1.0.1" 1301 | source = "registry+https://github.com/rust-lang/crates.io-index" 1302 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 1303 | 1304 | [[package]] 1305 | name = "erased-serde" 1306 | version = "0.4.2" 1307 | source = "registry+https://github.com/rust-lang/crates.io-index" 1308 | checksum = "55d05712b2d8d88102bc9868020c9e5c7a1f5527c452b9b97450a1d006140ba7" 1309 | dependencies = [ 1310 | "serde", 1311 | ] 1312 | 1313 | [[package]] 1314 | name = "errno" 1315 | version = "0.3.8" 1316 | source = "registry+https://github.com/rust-lang/crates.io-index" 1317 | checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" 1318 | dependencies = [ 1319 | "libc", 1320 | "windows-sys 0.52.0", 1321 | ] 1322 | 1323 | [[package]] 1324 | name = "euclid" 1325 | version = "0.22.9" 1326 | source = "registry+https://github.com/rust-lang/crates.io-index" 1327 | checksum = "87f253bc5c813ca05792837a0ff4b3a580336b224512d48f7eda1d7dd9210787" 1328 | dependencies = [ 1329 | "num-traits", 1330 | ] 1331 | 1332 | [[package]] 1333 | name = "event-listener" 1334 | version = "2.5.3" 1335 | source = "registry+https://github.com/rust-lang/crates.io-index" 1336 | checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" 1337 | 1338 | [[package]] 1339 | name = "event-listener" 1340 | version = "4.0.3" 1341 | source = "registry+https://github.com/rust-lang/crates.io-index" 1342 | checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" 1343 | dependencies = [ 1344 | "concurrent-queue", 1345 | "parking", 1346 | "pin-project-lite", 1347 | ] 1348 | 1349 | [[package]] 1350 | name = "event-listener" 1351 | version = "5.0.0" 1352 | source = "registry+https://github.com/rust-lang/crates.io-index" 1353 | checksum = "b72557800024fabbaa2449dd4bf24e37b93702d457a4d4f2b0dd1f0f039f20c1" 1354 | dependencies = [ 1355 | "concurrent-queue", 1356 | "parking", 1357 | "pin-project-lite", 1358 | ] 1359 | 1360 | [[package]] 1361 | name = "event-listener-strategy" 1362 | version = "0.4.0" 1363 | source = "registry+https://github.com/rust-lang/crates.io-index" 1364 | checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" 1365 | dependencies = [ 1366 | "event-listener 4.0.3", 1367 | "pin-project-lite", 1368 | ] 1369 | 1370 | [[package]] 1371 | name = "event-listener-strategy" 1372 | version = "0.5.0" 1373 | source = "registry+https://github.com/rust-lang/crates.io-index" 1374 | checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291" 1375 | dependencies = [ 1376 | "event-listener 5.0.0", 1377 | "pin-project-lite", 1378 | ] 1379 | 1380 | [[package]] 1381 | name = "fastrand" 1382 | version = "2.0.1" 1383 | source = "registry+https://github.com/rust-lang/crates.io-index" 1384 | checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" 1385 | 1386 | [[package]] 1387 | name = "fdeflate" 1388 | version = "0.3.4" 1389 | source = "registry+https://github.com/rust-lang/crates.io-index" 1390 | checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" 1391 | dependencies = [ 1392 | "simd-adler32", 1393 | ] 1394 | 1395 | [[package]] 1396 | name = "fixedbitset" 1397 | version = "0.4.2" 1398 | source = "registry+https://github.com/rust-lang/crates.io-index" 1399 | checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" 1400 | 1401 | [[package]] 1402 | name = "flate2" 1403 | version = "1.0.28" 1404 | source = "registry+https://github.com/rust-lang/crates.io-index" 1405 | checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" 1406 | dependencies = [ 1407 | "crc32fast", 1408 | "miniz_oxide", 1409 | ] 1410 | 1411 | [[package]] 1412 | name = "foreign-types" 1413 | version = "0.5.0" 1414 | source = "registry+https://github.com/rust-lang/crates.io-index" 1415 | checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" 1416 | dependencies = [ 1417 | "foreign-types-macros", 1418 | "foreign-types-shared", 1419 | ] 1420 | 1421 | [[package]] 1422 | name = "foreign-types-macros" 1423 | version = "0.2.3" 1424 | source = "registry+https://github.com/rust-lang/crates.io-index" 1425 | checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" 1426 | dependencies = [ 1427 | "proc-macro2", 1428 | "quote", 1429 | "syn 2.0.49", 1430 | ] 1431 | 1432 | [[package]] 1433 | name = "foreign-types-shared" 1434 | version = "0.3.1" 1435 | source = "registry+https://github.com/rust-lang/crates.io-index" 1436 | checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" 1437 | 1438 | [[package]] 1439 | name = "futures-core" 1440 | version = "0.3.30" 1441 | source = "registry+https://github.com/rust-lang/crates.io-index" 1442 | checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" 1443 | 1444 | [[package]] 1445 | name = "futures-io" 1446 | version = "0.3.30" 1447 | source = "registry+https://github.com/rust-lang/crates.io-index" 1448 | checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" 1449 | 1450 | [[package]] 1451 | name = "futures-lite" 1452 | version = "2.2.0" 1453 | source = "registry+https://github.com/rust-lang/crates.io-index" 1454 | checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba" 1455 | dependencies = [ 1456 | "fastrand", 1457 | "futures-core", 1458 | "futures-io", 1459 | "parking", 1460 | "pin-project-lite", 1461 | ] 1462 | 1463 | [[package]] 1464 | name = "gethostname" 1465 | version = "0.4.3" 1466 | source = "registry+https://github.com/rust-lang/crates.io-index" 1467 | checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" 1468 | dependencies = [ 1469 | "libc", 1470 | "windows-targets 0.48.5", 1471 | ] 1472 | 1473 | [[package]] 1474 | name = "getrandom" 1475 | version = "0.2.12" 1476 | source = "registry+https://github.com/rust-lang/crates.io-index" 1477 | checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" 1478 | dependencies = [ 1479 | "cfg-if", 1480 | "js-sys", 1481 | "libc", 1482 | "wasi", 1483 | "wasm-bindgen", 1484 | ] 1485 | 1486 | [[package]] 1487 | name = "gl_generator" 1488 | version = "0.14.0" 1489 | source = "registry+https://github.com/rust-lang/crates.io-index" 1490 | checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" 1491 | dependencies = [ 1492 | "khronos_api", 1493 | "log", 1494 | "xml-rs", 1495 | ] 1496 | 1497 | [[package]] 1498 | name = "glam" 1499 | version = "0.25.0" 1500 | source = "registry+https://github.com/rust-lang/crates.io-index" 1501 | checksum = "151665d9be52f9bb40fc7966565d39666f2d1e69233571b71b87791c7e0528b3" 1502 | dependencies = [ 1503 | "bytemuck", 1504 | "serde", 1505 | ] 1506 | 1507 | [[package]] 1508 | name = "glow" 1509 | version = "0.13.1" 1510 | source = "registry+https://github.com/rust-lang/crates.io-index" 1511 | checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" 1512 | dependencies = [ 1513 | "js-sys", 1514 | "slotmap", 1515 | "wasm-bindgen", 1516 | "web-sys", 1517 | ] 1518 | 1519 | [[package]] 1520 | name = "glutin_wgl_sys" 1521 | version = "0.5.0" 1522 | source = "registry+https://github.com/rust-lang/crates.io-index" 1523 | checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead" 1524 | dependencies = [ 1525 | "gl_generator", 1526 | ] 1527 | 1528 | [[package]] 1529 | name = "gpu-alloc" 1530 | version = "0.6.0" 1531 | source = "registry+https://github.com/rust-lang/crates.io-index" 1532 | checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" 1533 | dependencies = [ 1534 | "bitflags 2.4.2", 1535 | "gpu-alloc-types", 1536 | ] 1537 | 1538 | [[package]] 1539 | name = "gpu-alloc-types" 1540 | version = "0.3.0" 1541 | source = "registry+https://github.com/rust-lang/crates.io-index" 1542 | checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" 1543 | dependencies = [ 1544 | "bitflags 2.4.2", 1545 | ] 1546 | 1547 | [[package]] 1548 | name = "gpu-allocator" 1549 | version = "0.25.0" 1550 | source = "registry+https://github.com/rust-lang/crates.io-index" 1551 | checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884" 1552 | dependencies = [ 1553 | "log", 1554 | "presser", 1555 | "thiserror", 1556 | "winapi", 1557 | "windows 0.52.0", 1558 | ] 1559 | 1560 | [[package]] 1561 | name = "gpu-descriptor" 1562 | version = "0.2.4" 1563 | source = "registry+https://github.com/rust-lang/crates.io-index" 1564 | checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" 1565 | dependencies = [ 1566 | "bitflags 2.4.2", 1567 | "gpu-descriptor-types", 1568 | "hashbrown", 1569 | ] 1570 | 1571 | [[package]] 1572 | name = "gpu-descriptor-types" 1573 | version = "0.1.2" 1574 | source = "registry+https://github.com/rust-lang/crates.io-index" 1575 | checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" 1576 | dependencies = [ 1577 | "bitflags 2.4.2", 1578 | ] 1579 | 1580 | [[package]] 1581 | name = "guillotiere" 1582 | version = "0.6.2" 1583 | source = "registry+https://github.com/rust-lang/crates.io-index" 1584 | checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" 1585 | dependencies = [ 1586 | "euclid", 1587 | "svg_fmt", 1588 | ] 1589 | 1590 | [[package]] 1591 | name = "hashbrown" 1592 | version = "0.14.3" 1593 | source = "registry+https://github.com/rust-lang/crates.io-index" 1594 | checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" 1595 | dependencies = [ 1596 | "ahash", 1597 | "allocator-api2", 1598 | "serde", 1599 | ] 1600 | 1601 | [[package]] 1602 | name = "hassle-rs" 1603 | version = "0.11.0" 1604 | source = "registry+https://github.com/rust-lang/crates.io-index" 1605 | checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" 1606 | dependencies = [ 1607 | "bitflags 2.4.2", 1608 | "com", 1609 | "libc", 1610 | "libloading 0.8.1", 1611 | "thiserror", 1612 | "widestring", 1613 | "winapi", 1614 | ] 1615 | 1616 | [[package]] 1617 | name = "hexasphere" 1618 | version = "10.0.0" 1619 | source = "registry+https://github.com/rust-lang/crates.io-index" 1620 | checksum = "f33ddb7f7143d9e703c072e88b98cd8b9719f174137a671429351bd2ee43c02a" 1621 | dependencies = [ 1622 | "constgebra", 1623 | "glam", 1624 | ] 1625 | 1626 | [[package]] 1627 | name = "hexf-parse" 1628 | version = "0.2.1" 1629 | source = "registry+https://github.com/rust-lang/crates.io-index" 1630 | checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" 1631 | 1632 | [[package]] 1633 | name = "icrate" 1634 | version = "0.0.4" 1635 | source = "registry+https://github.com/rust-lang/crates.io-index" 1636 | checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319" 1637 | dependencies = [ 1638 | "block2 0.3.0", 1639 | "dispatch", 1640 | "objc2 0.4.1", 1641 | ] 1642 | 1643 | [[package]] 1644 | name = "image" 1645 | version = "0.24.8" 1646 | source = "registry+https://github.com/rust-lang/crates.io-index" 1647 | checksum = "034bbe799d1909622a74d1193aa50147769440040ff36cb2baa947609b0a4e23" 1648 | dependencies = [ 1649 | "bytemuck", 1650 | "byteorder", 1651 | "color_quant", 1652 | "num-traits", 1653 | "png", 1654 | ] 1655 | 1656 | [[package]] 1657 | name = "indexmap" 1658 | version = "2.2.3" 1659 | source = "registry+https://github.com/rust-lang/crates.io-index" 1660 | checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177" 1661 | dependencies = [ 1662 | "equivalent", 1663 | "hashbrown", 1664 | ] 1665 | 1666 | [[package]] 1667 | name = "itertools" 1668 | version = "0.12.1" 1669 | source = "registry+https://github.com/rust-lang/crates.io-index" 1670 | checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" 1671 | dependencies = [ 1672 | "either", 1673 | ] 1674 | 1675 | [[package]] 1676 | name = "jni" 1677 | version = "0.21.1" 1678 | source = "registry+https://github.com/rust-lang/crates.io-index" 1679 | checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" 1680 | dependencies = [ 1681 | "cesu8", 1682 | "cfg-if", 1683 | "combine", 1684 | "jni-sys", 1685 | "log", 1686 | "thiserror", 1687 | "walkdir", 1688 | "windows-sys 0.45.0", 1689 | ] 1690 | 1691 | [[package]] 1692 | name = "jni-sys" 1693 | version = "0.3.0" 1694 | source = "registry+https://github.com/rust-lang/crates.io-index" 1695 | checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" 1696 | 1697 | [[package]] 1698 | name = "jobserver" 1699 | version = "0.1.28" 1700 | source = "registry+https://github.com/rust-lang/crates.io-index" 1701 | checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6" 1702 | dependencies = [ 1703 | "libc", 1704 | ] 1705 | 1706 | [[package]] 1707 | name = "js-sys" 1708 | version = "0.3.68" 1709 | source = "registry+https://github.com/rust-lang/crates.io-index" 1710 | checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" 1711 | dependencies = [ 1712 | "wasm-bindgen", 1713 | ] 1714 | 1715 | [[package]] 1716 | name = "khronos-egl" 1717 | version = "6.0.0" 1718 | source = "registry+https://github.com/rust-lang/crates.io-index" 1719 | checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" 1720 | dependencies = [ 1721 | "libc", 1722 | "libloading 0.8.1", 1723 | "pkg-config", 1724 | ] 1725 | 1726 | [[package]] 1727 | name = "khronos_api" 1728 | version = "3.1.0" 1729 | source = "registry+https://github.com/rust-lang/crates.io-index" 1730 | checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" 1731 | 1732 | [[package]] 1733 | name = "lazy_static" 1734 | version = "1.4.0" 1735 | source = "registry+https://github.com/rust-lang/crates.io-index" 1736 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1737 | 1738 | [[package]] 1739 | name = "libc" 1740 | version = "0.2.153" 1741 | source = "registry+https://github.com/rust-lang/crates.io-index" 1742 | checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" 1743 | 1744 | [[package]] 1745 | name = "libloading" 1746 | version = "0.7.4" 1747 | source = "registry+https://github.com/rust-lang/crates.io-index" 1748 | checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" 1749 | dependencies = [ 1750 | "cfg-if", 1751 | "winapi", 1752 | ] 1753 | 1754 | [[package]] 1755 | name = "libloading" 1756 | version = "0.8.1" 1757 | source = "registry+https://github.com/rust-lang/crates.io-index" 1758 | checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" 1759 | dependencies = [ 1760 | "cfg-if", 1761 | "windows-sys 0.48.0", 1762 | ] 1763 | 1764 | [[package]] 1765 | name = "libredox" 1766 | version = "0.0.2" 1767 | source = "registry+https://github.com/rust-lang/crates.io-index" 1768 | checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" 1769 | dependencies = [ 1770 | "bitflags 2.4.2", 1771 | "libc", 1772 | "redox_syscall 0.4.1", 1773 | ] 1774 | 1775 | [[package]] 1776 | name = "linux-raw-sys" 1777 | version = "0.4.13" 1778 | source = "registry+https://github.com/rust-lang/crates.io-index" 1779 | checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" 1780 | 1781 | [[package]] 1782 | name = "lock_api" 1783 | version = "0.4.11" 1784 | source = "registry+https://github.com/rust-lang/crates.io-index" 1785 | checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" 1786 | dependencies = [ 1787 | "autocfg", 1788 | "scopeguard", 1789 | ] 1790 | 1791 | [[package]] 1792 | name = "log" 1793 | version = "0.4.20" 1794 | source = "registry+https://github.com/rust-lang/crates.io-index" 1795 | checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" 1796 | 1797 | [[package]] 1798 | name = "malloc_buf" 1799 | version = "0.0.6" 1800 | source = "registry+https://github.com/rust-lang/crates.io-index" 1801 | checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 1802 | dependencies = [ 1803 | "libc", 1804 | ] 1805 | 1806 | [[package]] 1807 | name = "matchers" 1808 | version = "0.1.0" 1809 | source = "registry+https://github.com/rust-lang/crates.io-index" 1810 | checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" 1811 | dependencies = [ 1812 | "regex-automata 0.1.10", 1813 | ] 1814 | 1815 | [[package]] 1816 | name = "memchr" 1817 | version = "2.7.1" 1818 | source = "registry+https://github.com/rust-lang/crates.io-index" 1819 | checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" 1820 | 1821 | [[package]] 1822 | name = "metal" 1823 | version = "0.27.0" 1824 | source = "registry+https://github.com/rust-lang/crates.io-index" 1825 | checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" 1826 | dependencies = [ 1827 | "bitflags 2.4.2", 1828 | "block", 1829 | "core-graphics-types", 1830 | "foreign-types", 1831 | "log", 1832 | "objc", 1833 | "paste", 1834 | ] 1835 | 1836 | [[package]] 1837 | name = "miniz_oxide" 1838 | version = "0.7.2" 1839 | source = "registry+https://github.com/rust-lang/crates.io-index" 1840 | checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" 1841 | dependencies = [ 1842 | "adler", 1843 | "simd-adler32", 1844 | ] 1845 | 1846 | [[package]] 1847 | name = "naga" 1848 | version = "0.19.0" 1849 | source = "registry+https://github.com/rust-lang/crates.io-index" 1850 | checksum = "8878eb410fc90853da3908aebfe61d73d26d4437ef850b70050461f939509899" 1851 | dependencies = [ 1852 | "bit-set", 1853 | "bitflags 2.4.2", 1854 | "codespan-reporting", 1855 | "hexf-parse", 1856 | "indexmap", 1857 | "log", 1858 | "num-traits", 1859 | "pp-rs", 1860 | "rustc-hash", 1861 | "spirv", 1862 | "termcolor", 1863 | "thiserror", 1864 | "unicode-xid", 1865 | ] 1866 | 1867 | [[package]] 1868 | name = "naga_oil" 1869 | version = "0.13.0" 1870 | source = "registry+https://github.com/rust-lang/crates.io-index" 1871 | checksum = "c0ea62ae0f2787456afca7209ca180522b41f00cbe159ee369eba1e07d365cd1" 1872 | dependencies = [ 1873 | "bit-set", 1874 | "codespan-reporting", 1875 | "data-encoding", 1876 | "indexmap", 1877 | "naga", 1878 | "once_cell", 1879 | "regex", 1880 | "regex-syntax 0.8.2", 1881 | "rustc-hash", 1882 | "thiserror", 1883 | "tracing", 1884 | "unicode-ident", 1885 | ] 1886 | 1887 | [[package]] 1888 | name = "ndk" 1889 | version = "0.8.0" 1890 | source = "registry+https://github.com/rust-lang/crates.io-index" 1891 | checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" 1892 | dependencies = [ 1893 | "bitflags 2.4.2", 1894 | "jni-sys", 1895 | "log", 1896 | "ndk-sys", 1897 | "num_enum", 1898 | "raw-window-handle", 1899 | "thiserror", 1900 | ] 1901 | 1902 | [[package]] 1903 | name = "ndk-context" 1904 | version = "0.1.1" 1905 | source = "registry+https://github.com/rust-lang/crates.io-index" 1906 | checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" 1907 | 1908 | [[package]] 1909 | name = "ndk-sys" 1910 | version = "0.5.0+25.2.9519653" 1911 | source = "registry+https://github.com/rust-lang/crates.io-index" 1912 | checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" 1913 | dependencies = [ 1914 | "jni-sys", 1915 | ] 1916 | 1917 | [[package]] 1918 | name = "nonmax" 1919 | version = "0.5.5" 1920 | source = "registry+https://github.com/rust-lang/crates.io-index" 1921 | checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51" 1922 | 1923 | [[package]] 1924 | name = "ntapi" 1925 | version = "0.4.1" 1926 | source = "registry+https://github.com/rust-lang/crates.io-index" 1927 | checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" 1928 | dependencies = [ 1929 | "winapi", 1930 | ] 1931 | 1932 | [[package]] 1933 | name = "nu-ansi-term" 1934 | version = "0.46.0" 1935 | source = "registry+https://github.com/rust-lang/crates.io-index" 1936 | checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" 1937 | dependencies = [ 1938 | "overload", 1939 | "winapi", 1940 | ] 1941 | 1942 | [[package]] 1943 | name = "num-traits" 1944 | version = "0.2.18" 1945 | source = "registry+https://github.com/rust-lang/crates.io-index" 1946 | checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" 1947 | dependencies = [ 1948 | "autocfg", 1949 | ] 1950 | 1951 | [[package]] 1952 | name = "num_enum" 1953 | version = "0.7.2" 1954 | source = "registry+https://github.com/rust-lang/crates.io-index" 1955 | checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" 1956 | dependencies = [ 1957 | "num_enum_derive", 1958 | ] 1959 | 1960 | [[package]] 1961 | name = "num_enum_derive" 1962 | version = "0.7.2" 1963 | source = "registry+https://github.com/rust-lang/crates.io-index" 1964 | checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" 1965 | dependencies = [ 1966 | "proc-macro-crate", 1967 | "proc-macro2", 1968 | "quote", 1969 | "syn 2.0.49", 1970 | ] 1971 | 1972 | [[package]] 1973 | name = "objc" 1974 | version = "0.2.7" 1975 | source = "registry+https://github.com/rust-lang/crates.io-index" 1976 | checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 1977 | dependencies = [ 1978 | "malloc_buf", 1979 | "objc_exception", 1980 | ] 1981 | 1982 | [[package]] 1983 | name = "objc-sys" 1984 | version = "0.2.0-beta.2" 1985 | source = "registry+https://github.com/rust-lang/crates.io-index" 1986 | checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" 1987 | 1988 | [[package]] 1989 | name = "objc-sys" 1990 | version = "0.3.2" 1991 | source = "registry+https://github.com/rust-lang/crates.io-index" 1992 | checksum = "c7c71324e4180d0899963fc83d9d241ac39e699609fc1025a850aadac8257459" 1993 | 1994 | [[package]] 1995 | name = "objc2" 1996 | version = "0.3.0-beta.3.patch-leaks.3" 1997 | source = "registry+https://github.com/rust-lang/crates.io-index" 1998 | checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468" 1999 | dependencies = [ 2000 | "block2 0.2.0-alpha.6", 2001 | "objc-sys 0.2.0-beta.2", 2002 | "objc2-encode 2.0.0-pre.2", 2003 | ] 2004 | 2005 | [[package]] 2006 | name = "objc2" 2007 | version = "0.4.1" 2008 | source = "registry+https://github.com/rust-lang/crates.io-index" 2009 | checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d" 2010 | dependencies = [ 2011 | "objc-sys 0.3.2", 2012 | "objc2-encode 3.0.0", 2013 | ] 2014 | 2015 | [[package]] 2016 | name = "objc2-encode" 2017 | version = "2.0.0-pre.2" 2018 | source = "registry+https://github.com/rust-lang/crates.io-index" 2019 | checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" 2020 | dependencies = [ 2021 | "objc-sys 0.2.0-beta.2", 2022 | ] 2023 | 2024 | [[package]] 2025 | name = "objc2-encode" 2026 | version = "3.0.0" 2027 | source = "registry+https://github.com/rust-lang/crates.io-index" 2028 | checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666" 2029 | 2030 | [[package]] 2031 | name = "objc_exception" 2032 | version = "0.1.2" 2033 | source = "registry+https://github.com/rust-lang/crates.io-index" 2034 | checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" 2035 | dependencies = [ 2036 | "cc", 2037 | ] 2038 | 2039 | [[package]] 2040 | name = "once_cell" 2041 | version = "1.19.0" 2042 | source = "registry+https://github.com/rust-lang/crates.io-index" 2043 | checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" 2044 | 2045 | [[package]] 2046 | name = "orbclient" 2047 | version = "0.3.47" 2048 | source = "registry+https://github.com/rust-lang/crates.io-index" 2049 | checksum = "52f0d54bde9774d3a51dcf281a5def240c71996bc6ca05d2c847ec8b2b216166" 2050 | dependencies = [ 2051 | "libredox", 2052 | ] 2053 | 2054 | [[package]] 2055 | name = "overload" 2056 | version = "0.1.1" 2057 | source = "registry+https://github.com/rust-lang/crates.io-index" 2058 | checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" 2059 | 2060 | [[package]] 2061 | name = "parking" 2062 | version = "2.2.0" 2063 | source = "registry+https://github.com/rust-lang/crates.io-index" 2064 | checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" 2065 | 2066 | [[package]] 2067 | name = "parking_lot" 2068 | version = "0.12.1" 2069 | source = "registry+https://github.com/rust-lang/crates.io-index" 2070 | checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" 2071 | dependencies = [ 2072 | "lock_api", 2073 | "parking_lot_core", 2074 | ] 2075 | 2076 | [[package]] 2077 | name = "parking_lot_core" 2078 | version = "0.9.9" 2079 | source = "registry+https://github.com/rust-lang/crates.io-index" 2080 | checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" 2081 | dependencies = [ 2082 | "cfg-if", 2083 | "libc", 2084 | "redox_syscall 0.4.1", 2085 | "smallvec", 2086 | "windows-targets 0.48.5", 2087 | ] 2088 | 2089 | [[package]] 2090 | name = "paste" 2091 | version = "1.0.14" 2092 | source = "registry+https://github.com/rust-lang/crates.io-index" 2093 | checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" 2094 | 2095 | [[package]] 2096 | name = "percent-encoding" 2097 | version = "2.3.1" 2098 | source = "registry+https://github.com/rust-lang/crates.io-index" 2099 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 2100 | 2101 | [[package]] 2102 | name = "petgraph" 2103 | version = "0.6.4" 2104 | source = "registry+https://github.com/rust-lang/crates.io-index" 2105 | checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" 2106 | dependencies = [ 2107 | "fixedbitset", 2108 | "indexmap", 2109 | ] 2110 | 2111 | [[package]] 2112 | name = "pin-project-lite" 2113 | version = "0.2.13" 2114 | source = "registry+https://github.com/rust-lang/crates.io-index" 2115 | checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" 2116 | 2117 | [[package]] 2118 | name = "piper" 2119 | version = "0.2.1" 2120 | source = "registry+https://github.com/rust-lang/crates.io-index" 2121 | checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" 2122 | dependencies = [ 2123 | "atomic-waker", 2124 | "fastrand", 2125 | "futures-io", 2126 | ] 2127 | 2128 | [[package]] 2129 | name = "pkg-config" 2130 | version = "0.3.30" 2131 | source = "registry+https://github.com/rust-lang/crates.io-index" 2132 | checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" 2133 | 2134 | [[package]] 2135 | name = "png" 2136 | version = "0.17.12" 2137 | source = "registry+https://github.com/rust-lang/crates.io-index" 2138 | checksum = "78c2378060fb13acff3ba0325b83442c1d2c44fbb76df481160ddc1687cce160" 2139 | dependencies = [ 2140 | "bitflags 1.3.2", 2141 | "crc32fast", 2142 | "fdeflate", 2143 | "flate2", 2144 | "miniz_oxide", 2145 | ] 2146 | 2147 | [[package]] 2148 | name = "polling" 2149 | version = "3.4.0" 2150 | source = "registry+https://github.com/rust-lang/crates.io-index" 2151 | checksum = "30054e72317ab98eddd8561db0f6524df3367636884b7b21b703e4b280a84a14" 2152 | dependencies = [ 2153 | "cfg-if", 2154 | "concurrent-queue", 2155 | "pin-project-lite", 2156 | "rustix", 2157 | "tracing", 2158 | "windows-sys 0.52.0", 2159 | ] 2160 | 2161 | [[package]] 2162 | name = "pp-rs" 2163 | version = "0.2.1" 2164 | source = "registry+https://github.com/rust-lang/crates.io-index" 2165 | checksum = "bb458bb7f6e250e6eb79d5026badc10a3ebb8f9a15d1fff0f13d17c71f4d6dee" 2166 | dependencies = [ 2167 | "unicode-xid", 2168 | ] 2169 | 2170 | [[package]] 2171 | name = "presser" 2172 | version = "0.3.1" 2173 | source = "registry+https://github.com/rust-lang/crates.io-index" 2174 | checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" 2175 | 2176 | [[package]] 2177 | name = "proc-macro-crate" 2178 | version = "3.1.0" 2179 | source = "registry+https://github.com/rust-lang/crates.io-index" 2180 | checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" 2181 | dependencies = [ 2182 | "toml_edit", 2183 | ] 2184 | 2185 | [[package]] 2186 | name = "proc-macro2" 2187 | version = "1.0.78" 2188 | source = "registry+https://github.com/rust-lang/crates.io-index" 2189 | checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" 2190 | dependencies = [ 2191 | "unicode-ident", 2192 | ] 2193 | 2194 | [[package]] 2195 | name = "profiling" 2196 | version = "1.0.15" 2197 | source = "registry+https://github.com/rust-lang/crates.io-index" 2198 | checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" 2199 | 2200 | [[package]] 2201 | name = "quote" 2202 | version = "1.0.35" 2203 | source = "registry+https://github.com/rust-lang/crates.io-index" 2204 | checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" 2205 | dependencies = [ 2206 | "proc-macro2", 2207 | ] 2208 | 2209 | [[package]] 2210 | name = "radsort" 2211 | version = "0.1.0" 2212 | source = "registry+https://github.com/rust-lang/crates.io-index" 2213 | checksum = "17fd96390ed3feda12e1dfe2645ed587e0bea749e319333f104a33ff62f77a0b" 2214 | 2215 | [[package]] 2216 | name = "range-alloc" 2217 | version = "0.1.3" 2218 | source = "registry+https://github.com/rust-lang/crates.io-index" 2219 | checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab" 2220 | 2221 | [[package]] 2222 | name = "raw-window-handle" 2223 | version = "0.6.0" 2224 | source = "registry+https://github.com/rust-lang/crates.io-index" 2225 | checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544" 2226 | 2227 | [[package]] 2228 | name = "rectangle-pack" 2229 | version = "0.4.2" 2230 | source = "registry+https://github.com/rust-lang/crates.io-index" 2231 | checksum = "a0d463f2884048e7153449a55166f91028d5b0ea53c79377099ce4e8cf0cf9bb" 2232 | 2233 | [[package]] 2234 | name = "redox_syscall" 2235 | version = "0.3.5" 2236 | source = "registry+https://github.com/rust-lang/crates.io-index" 2237 | checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" 2238 | dependencies = [ 2239 | "bitflags 1.3.2", 2240 | ] 2241 | 2242 | [[package]] 2243 | name = "redox_syscall" 2244 | version = "0.4.1" 2245 | source = "registry+https://github.com/rust-lang/crates.io-index" 2246 | checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" 2247 | dependencies = [ 2248 | "bitflags 1.3.2", 2249 | ] 2250 | 2251 | [[package]] 2252 | name = "regex" 2253 | version = "1.10.3" 2254 | source = "registry+https://github.com/rust-lang/crates.io-index" 2255 | checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" 2256 | dependencies = [ 2257 | "aho-corasick", 2258 | "memchr", 2259 | "regex-automata 0.4.5", 2260 | "regex-syntax 0.8.2", 2261 | ] 2262 | 2263 | [[package]] 2264 | name = "regex-automata" 2265 | version = "0.1.10" 2266 | source = "registry+https://github.com/rust-lang/crates.io-index" 2267 | checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" 2268 | dependencies = [ 2269 | "regex-syntax 0.6.29", 2270 | ] 2271 | 2272 | [[package]] 2273 | name = "regex-automata" 2274 | version = "0.4.5" 2275 | source = "registry+https://github.com/rust-lang/crates.io-index" 2276 | checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" 2277 | dependencies = [ 2278 | "aho-corasick", 2279 | "memchr", 2280 | "regex-syntax 0.8.2", 2281 | ] 2282 | 2283 | [[package]] 2284 | name = "regex-syntax" 2285 | version = "0.6.29" 2286 | source = "registry+https://github.com/rust-lang/crates.io-index" 2287 | checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" 2288 | 2289 | [[package]] 2290 | name = "regex-syntax" 2291 | version = "0.8.2" 2292 | source = "registry+https://github.com/rust-lang/crates.io-index" 2293 | checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" 2294 | 2295 | [[package]] 2296 | name = "renderdoc-sys" 2297 | version = "1.0.0" 2298 | source = "registry+https://github.com/rust-lang/crates.io-index" 2299 | checksum = "216080ab382b992234dda86873c18d4c48358f5cfcb70fd693d7f6f2131b628b" 2300 | 2301 | [[package]] 2302 | name = "ron" 2303 | version = "0.8.1" 2304 | source = "registry+https://github.com/rust-lang/crates.io-index" 2305 | checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" 2306 | dependencies = [ 2307 | "base64", 2308 | "bitflags 2.4.2", 2309 | "serde", 2310 | "serde_derive", 2311 | ] 2312 | 2313 | [[package]] 2314 | name = "rustc-hash" 2315 | version = "1.1.0" 2316 | source = "registry+https://github.com/rust-lang/crates.io-index" 2317 | checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 2318 | 2319 | [[package]] 2320 | name = "rustix" 2321 | version = "0.38.31" 2322 | source = "registry+https://github.com/rust-lang/crates.io-index" 2323 | checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" 2324 | dependencies = [ 2325 | "bitflags 2.4.2", 2326 | "errno", 2327 | "libc", 2328 | "linux-raw-sys", 2329 | "windows-sys 0.52.0", 2330 | ] 2331 | 2332 | [[package]] 2333 | name = "same-file" 2334 | version = "1.0.6" 2335 | source = "registry+https://github.com/rust-lang/crates.io-index" 2336 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 2337 | dependencies = [ 2338 | "winapi-util", 2339 | ] 2340 | 2341 | [[package]] 2342 | name = "sark_grids" 2343 | version = "0.5.9" 2344 | source = "registry+https://github.com/rust-lang/crates.io-index" 2345 | checksum = "2b9e1548a31ab2cd9f278fbff74fdb344ab027811e16ea82b725278fc7a1d3ae" 2346 | dependencies = [ 2347 | "glam", 2348 | "itertools", 2349 | ] 2350 | 2351 | [[package]] 2352 | name = "scopeguard" 2353 | version = "1.2.0" 2354 | source = "registry+https://github.com/rust-lang/crates.io-index" 2355 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 2356 | 2357 | [[package]] 2358 | name = "serde" 2359 | version = "1.0.196" 2360 | source = "registry+https://github.com/rust-lang/crates.io-index" 2361 | checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" 2362 | dependencies = [ 2363 | "serde_derive", 2364 | ] 2365 | 2366 | [[package]] 2367 | name = "serde_derive" 2368 | version = "1.0.196" 2369 | source = "registry+https://github.com/rust-lang/crates.io-index" 2370 | checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" 2371 | dependencies = [ 2372 | "proc-macro2", 2373 | "quote", 2374 | "syn 2.0.49", 2375 | ] 2376 | 2377 | [[package]] 2378 | name = "sharded-slab" 2379 | version = "0.1.7" 2380 | source = "registry+https://github.com/rust-lang/crates.io-index" 2381 | checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 2382 | dependencies = [ 2383 | "lazy_static", 2384 | ] 2385 | 2386 | [[package]] 2387 | name = "simd-adler32" 2388 | version = "0.3.7" 2389 | source = "registry+https://github.com/rust-lang/crates.io-index" 2390 | checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" 2391 | 2392 | [[package]] 2393 | name = "slab" 2394 | version = "0.4.9" 2395 | source = "registry+https://github.com/rust-lang/crates.io-index" 2396 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 2397 | dependencies = [ 2398 | "autocfg", 2399 | ] 2400 | 2401 | [[package]] 2402 | name = "slotmap" 2403 | version = "1.0.7" 2404 | source = "registry+https://github.com/rust-lang/crates.io-index" 2405 | checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" 2406 | dependencies = [ 2407 | "version_check", 2408 | ] 2409 | 2410 | [[package]] 2411 | name = "smallvec" 2412 | version = "1.13.1" 2413 | source = "registry+https://github.com/rust-lang/crates.io-index" 2414 | checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" 2415 | dependencies = [ 2416 | "serde", 2417 | ] 2418 | 2419 | [[package]] 2420 | name = "smol_str" 2421 | version = "0.2.1" 2422 | source = "registry+https://github.com/rust-lang/crates.io-index" 2423 | checksum = "e6845563ada680337a52d43bb0b29f396f2d911616f6573012645b9e3d048a49" 2424 | dependencies = [ 2425 | "serde", 2426 | ] 2427 | 2428 | [[package]] 2429 | name = "spirv" 2430 | version = "0.3.0+sdk-1.3.268.0" 2431 | source = "registry+https://github.com/rust-lang/crates.io-index" 2432 | checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" 2433 | dependencies = [ 2434 | "bitflags 2.4.2", 2435 | ] 2436 | 2437 | [[package]] 2438 | name = "static_assertions" 2439 | version = "1.1.0" 2440 | source = "registry+https://github.com/rust-lang/crates.io-index" 2441 | checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 2442 | 2443 | [[package]] 2444 | name = "svg_fmt" 2445 | version = "0.4.1" 2446 | source = "registry+https://github.com/rust-lang/crates.io-index" 2447 | checksum = "8fb1df15f412ee2e9dfc1c504260fa695c1c3f10fe9f4a6ee2d2184d7d6450e2" 2448 | 2449 | [[package]] 2450 | name = "syn" 2451 | version = "1.0.109" 2452 | source = "registry+https://github.com/rust-lang/crates.io-index" 2453 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 2454 | dependencies = [ 2455 | "proc-macro2", 2456 | "quote", 2457 | "unicode-ident", 2458 | ] 2459 | 2460 | [[package]] 2461 | name = "syn" 2462 | version = "2.0.49" 2463 | source = "registry+https://github.com/rust-lang/crates.io-index" 2464 | checksum = "915aea9e586f80826ee59f8453c1101f9d1c4b3964cd2460185ee8e299ada496" 2465 | dependencies = [ 2466 | "proc-macro2", 2467 | "quote", 2468 | "unicode-ident", 2469 | ] 2470 | 2471 | [[package]] 2472 | name = "sysinfo" 2473 | version = "0.30.5" 2474 | source = "registry+https://github.com/rust-lang/crates.io-index" 2475 | checksum = "1fb4f3438c8f6389c864e61221cbc97e9bca98b4daf39a5beb7bea660f528bb2" 2476 | dependencies = [ 2477 | "cfg-if", 2478 | "core-foundation-sys", 2479 | "libc", 2480 | "ntapi", 2481 | "once_cell", 2482 | "windows 0.52.0", 2483 | ] 2484 | 2485 | [[package]] 2486 | name = "termcolor" 2487 | version = "1.4.1" 2488 | source = "registry+https://github.com/rust-lang/crates.io-index" 2489 | checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" 2490 | dependencies = [ 2491 | "winapi-util", 2492 | ] 2493 | 2494 | [[package]] 2495 | name = "thiserror" 2496 | version = "1.0.57" 2497 | source = "registry+https://github.com/rust-lang/crates.io-index" 2498 | checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" 2499 | dependencies = [ 2500 | "thiserror-impl", 2501 | ] 2502 | 2503 | [[package]] 2504 | name = "thiserror-impl" 2505 | version = "1.0.57" 2506 | source = "registry+https://github.com/rust-lang/crates.io-index" 2507 | checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" 2508 | dependencies = [ 2509 | "proc-macro2", 2510 | "quote", 2511 | "syn 2.0.49", 2512 | ] 2513 | 2514 | [[package]] 2515 | name = "thread_local" 2516 | version = "1.1.7" 2517 | source = "registry+https://github.com/rust-lang/crates.io-index" 2518 | checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" 2519 | dependencies = [ 2520 | "cfg-if", 2521 | "once_cell", 2522 | ] 2523 | 2524 | [[package]] 2525 | name = "toml_datetime" 2526 | version = "0.6.5" 2527 | source = "registry+https://github.com/rust-lang/crates.io-index" 2528 | checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" 2529 | 2530 | [[package]] 2531 | name = "toml_edit" 2532 | version = "0.21.1" 2533 | source = "registry+https://github.com/rust-lang/crates.io-index" 2534 | checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" 2535 | dependencies = [ 2536 | "indexmap", 2537 | "toml_datetime", 2538 | "winnow", 2539 | ] 2540 | 2541 | [[package]] 2542 | name = "tracing" 2543 | version = "0.1.40" 2544 | source = "registry+https://github.com/rust-lang/crates.io-index" 2545 | checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" 2546 | dependencies = [ 2547 | "pin-project-lite", 2548 | "tracing-attributes", 2549 | "tracing-core", 2550 | ] 2551 | 2552 | [[package]] 2553 | name = "tracing-attributes" 2554 | version = "0.1.27" 2555 | source = "registry+https://github.com/rust-lang/crates.io-index" 2556 | checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" 2557 | dependencies = [ 2558 | "proc-macro2", 2559 | "quote", 2560 | "syn 2.0.49", 2561 | ] 2562 | 2563 | [[package]] 2564 | name = "tracing-core" 2565 | version = "0.1.32" 2566 | source = "registry+https://github.com/rust-lang/crates.io-index" 2567 | checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" 2568 | dependencies = [ 2569 | "once_cell", 2570 | "valuable", 2571 | ] 2572 | 2573 | [[package]] 2574 | name = "tracing-log" 2575 | version = "0.1.4" 2576 | source = "registry+https://github.com/rust-lang/crates.io-index" 2577 | checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" 2578 | dependencies = [ 2579 | "log", 2580 | "once_cell", 2581 | "tracing-core", 2582 | ] 2583 | 2584 | [[package]] 2585 | name = "tracing-log" 2586 | version = "0.2.0" 2587 | source = "registry+https://github.com/rust-lang/crates.io-index" 2588 | checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" 2589 | dependencies = [ 2590 | "log", 2591 | "once_cell", 2592 | "tracing-core", 2593 | ] 2594 | 2595 | [[package]] 2596 | name = "tracing-subscriber" 2597 | version = "0.3.18" 2598 | source = "registry+https://github.com/rust-lang/crates.io-index" 2599 | checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" 2600 | dependencies = [ 2601 | "matchers", 2602 | "nu-ansi-term", 2603 | "once_cell", 2604 | "regex", 2605 | "sharded-slab", 2606 | "smallvec", 2607 | "thread_local", 2608 | "tracing", 2609 | "tracing-core", 2610 | "tracing-log 0.2.0", 2611 | ] 2612 | 2613 | [[package]] 2614 | name = "tracing-wasm" 2615 | version = "0.2.1" 2616 | source = "registry+https://github.com/rust-lang/crates.io-index" 2617 | checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07" 2618 | dependencies = [ 2619 | "tracing", 2620 | "tracing-subscriber", 2621 | "wasm-bindgen", 2622 | ] 2623 | 2624 | [[package]] 2625 | name = "unicode-ident" 2626 | version = "1.0.12" 2627 | source = "registry+https://github.com/rust-lang/crates.io-index" 2628 | checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 2629 | 2630 | [[package]] 2631 | name = "unicode-segmentation" 2632 | version = "1.11.0" 2633 | source = "registry+https://github.com/rust-lang/crates.io-index" 2634 | checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" 2635 | 2636 | [[package]] 2637 | name = "unicode-width" 2638 | version = "0.1.11" 2639 | source = "registry+https://github.com/rust-lang/crates.io-index" 2640 | checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" 2641 | 2642 | [[package]] 2643 | name = "unicode-xid" 2644 | version = "0.2.4" 2645 | source = "registry+https://github.com/rust-lang/crates.io-index" 2646 | checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" 2647 | 2648 | [[package]] 2649 | name = "uuid" 2650 | version = "1.7.0" 2651 | source = "registry+https://github.com/rust-lang/crates.io-index" 2652 | checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" 2653 | dependencies = [ 2654 | "getrandom", 2655 | "serde", 2656 | ] 2657 | 2658 | [[package]] 2659 | name = "valuable" 2660 | version = "0.1.0" 2661 | source = "registry+https://github.com/rust-lang/crates.io-index" 2662 | checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" 2663 | 2664 | [[package]] 2665 | name = "version_check" 2666 | version = "0.9.4" 2667 | source = "registry+https://github.com/rust-lang/crates.io-index" 2668 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 2669 | 2670 | [[package]] 2671 | name = "walkdir" 2672 | version = "2.4.0" 2673 | source = "registry+https://github.com/rust-lang/crates.io-index" 2674 | checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" 2675 | dependencies = [ 2676 | "same-file", 2677 | "winapi-util", 2678 | ] 2679 | 2680 | [[package]] 2681 | name = "wasi" 2682 | version = "0.11.0+wasi-snapshot-preview1" 2683 | source = "registry+https://github.com/rust-lang/crates.io-index" 2684 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 2685 | 2686 | [[package]] 2687 | name = "wasm-bindgen" 2688 | version = "0.2.91" 2689 | source = "registry+https://github.com/rust-lang/crates.io-index" 2690 | checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" 2691 | dependencies = [ 2692 | "cfg-if", 2693 | "wasm-bindgen-macro", 2694 | ] 2695 | 2696 | [[package]] 2697 | name = "wasm-bindgen-backend" 2698 | version = "0.2.91" 2699 | source = "registry+https://github.com/rust-lang/crates.io-index" 2700 | checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" 2701 | dependencies = [ 2702 | "bumpalo", 2703 | "log", 2704 | "once_cell", 2705 | "proc-macro2", 2706 | "quote", 2707 | "syn 2.0.49", 2708 | "wasm-bindgen-shared", 2709 | ] 2710 | 2711 | [[package]] 2712 | name = "wasm-bindgen-futures" 2713 | version = "0.4.41" 2714 | source = "registry+https://github.com/rust-lang/crates.io-index" 2715 | checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" 2716 | dependencies = [ 2717 | "cfg-if", 2718 | "js-sys", 2719 | "wasm-bindgen", 2720 | "web-sys", 2721 | ] 2722 | 2723 | [[package]] 2724 | name = "wasm-bindgen-macro" 2725 | version = "0.2.91" 2726 | source = "registry+https://github.com/rust-lang/crates.io-index" 2727 | checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" 2728 | dependencies = [ 2729 | "quote", 2730 | "wasm-bindgen-macro-support", 2731 | ] 2732 | 2733 | [[package]] 2734 | name = "wasm-bindgen-macro-support" 2735 | version = "0.2.91" 2736 | source = "registry+https://github.com/rust-lang/crates.io-index" 2737 | checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" 2738 | dependencies = [ 2739 | "proc-macro2", 2740 | "quote", 2741 | "syn 2.0.49", 2742 | "wasm-bindgen-backend", 2743 | "wasm-bindgen-shared", 2744 | ] 2745 | 2746 | [[package]] 2747 | name = "wasm-bindgen-shared" 2748 | version = "0.2.91" 2749 | source = "registry+https://github.com/rust-lang/crates.io-index" 2750 | checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" 2751 | 2752 | [[package]] 2753 | name = "web-sys" 2754 | version = "0.3.67" 2755 | source = "registry+https://github.com/rust-lang/crates.io-index" 2756 | checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" 2757 | dependencies = [ 2758 | "js-sys", 2759 | "wasm-bindgen", 2760 | ] 2761 | 2762 | [[package]] 2763 | name = "web-time" 2764 | version = "0.2.4" 2765 | source = "registry+https://github.com/rust-lang/crates.io-index" 2766 | checksum = "aa30049b1c872b72c89866d458eae9f20380ab280ffd1b1e18df2d3e2d98cfe0" 2767 | dependencies = [ 2768 | "js-sys", 2769 | "wasm-bindgen", 2770 | ] 2771 | 2772 | [[package]] 2773 | name = "wgpu" 2774 | version = "0.19.1" 2775 | source = "registry+https://github.com/rust-lang/crates.io-index" 2776 | checksum = "0bfe9a310dcf2e6b85f00c46059aaeaf4184caa8e29a1ecd4b7a704c3482332d" 2777 | dependencies = [ 2778 | "arrayvec", 2779 | "cfg-if", 2780 | "cfg_aliases", 2781 | "js-sys", 2782 | "log", 2783 | "naga", 2784 | "parking_lot", 2785 | "profiling", 2786 | "raw-window-handle", 2787 | "smallvec", 2788 | "static_assertions", 2789 | "wasm-bindgen", 2790 | "wasm-bindgen-futures", 2791 | "web-sys", 2792 | "wgpu-core", 2793 | "wgpu-hal", 2794 | "wgpu-types", 2795 | ] 2796 | 2797 | [[package]] 2798 | name = "wgpu-core" 2799 | version = "0.19.0" 2800 | source = "registry+https://github.com/rust-lang/crates.io-index" 2801 | checksum = "6b15e451d4060ada0d99a64df44e4d590213496da7c4f245572d51071e8e30ed" 2802 | dependencies = [ 2803 | "arrayvec", 2804 | "bit-vec", 2805 | "bitflags 2.4.2", 2806 | "cfg_aliases", 2807 | "codespan-reporting", 2808 | "indexmap", 2809 | "log", 2810 | "naga", 2811 | "once_cell", 2812 | "parking_lot", 2813 | "profiling", 2814 | "raw-window-handle", 2815 | "rustc-hash", 2816 | "smallvec", 2817 | "thiserror", 2818 | "web-sys", 2819 | "wgpu-hal", 2820 | "wgpu-types", 2821 | ] 2822 | 2823 | [[package]] 2824 | name = "wgpu-hal" 2825 | version = "0.19.1" 2826 | source = "registry+https://github.com/rust-lang/crates.io-index" 2827 | checksum = "e3bb47856236bfafc0bc591a925eb036ac19cd987624a447ff353e7a7e7e6f72" 2828 | dependencies = [ 2829 | "android_system_properties", 2830 | "arrayvec", 2831 | "ash", 2832 | "bit-set", 2833 | "bitflags 2.4.2", 2834 | "block", 2835 | "cfg_aliases", 2836 | "core-graphics-types", 2837 | "d3d12", 2838 | "glow", 2839 | "glutin_wgl_sys", 2840 | "gpu-alloc", 2841 | "gpu-allocator", 2842 | "gpu-descriptor", 2843 | "hassle-rs", 2844 | "js-sys", 2845 | "khronos-egl", 2846 | "libc", 2847 | "libloading 0.8.1", 2848 | "log", 2849 | "metal", 2850 | "naga", 2851 | "objc", 2852 | "once_cell", 2853 | "parking_lot", 2854 | "profiling", 2855 | "range-alloc", 2856 | "raw-window-handle", 2857 | "renderdoc-sys", 2858 | "rustc-hash", 2859 | "smallvec", 2860 | "thiserror", 2861 | "wasm-bindgen", 2862 | "web-sys", 2863 | "wgpu-types", 2864 | "winapi", 2865 | ] 2866 | 2867 | [[package]] 2868 | name = "wgpu-types" 2869 | version = "0.19.0" 2870 | source = "registry+https://github.com/rust-lang/crates.io-index" 2871 | checksum = "895fcbeb772bfb049eb80b2d6e47f6c9af235284e9703c96fc0218a42ffd5af2" 2872 | dependencies = [ 2873 | "bitflags 2.4.2", 2874 | "js-sys", 2875 | "web-sys", 2876 | ] 2877 | 2878 | [[package]] 2879 | name = "widestring" 2880 | version = "1.0.2" 2881 | source = "registry+https://github.com/rust-lang/crates.io-index" 2882 | checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" 2883 | 2884 | [[package]] 2885 | name = "winapi" 2886 | version = "0.3.9" 2887 | source = "registry+https://github.com/rust-lang/crates.io-index" 2888 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 2889 | dependencies = [ 2890 | "winapi-i686-pc-windows-gnu", 2891 | "winapi-x86_64-pc-windows-gnu", 2892 | ] 2893 | 2894 | [[package]] 2895 | name = "winapi-i686-pc-windows-gnu" 2896 | version = "0.4.0" 2897 | source = "registry+https://github.com/rust-lang/crates.io-index" 2898 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 2899 | 2900 | [[package]] 2901 | name = "winapi-util" 2902 | version = "0.1.6" 2903 | source = "registry+https://github.com/rust-lang/crates.io-index" 2904 | checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" 2905 | dependencies = [ 2906 | "winapi", 2907 | ] 2908 | 2909 | [[package]] 2910 | name = "winapi-x86_64-pc-windows-gnu" 2911 | version = "0.4.0" 2912 | source = "registry+https://github.com/rust-lang/crates.io-index" 2913 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 2914 | 2915 | [[package]] 2916 | name = "windows" 2917 | version = "0.48.0" 2918 | source = "registry+https://github.com/rust-lang/crates.io-index" 2919 | checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" 2920 | dependencies = [ 2921 | "windows-implement", 2922 | "windows-interface", 2923 | "windows-targets 0.48.5", 2924 | ] 2925 | 2926 | [[package]] 2927 | name = "windows" 2928 | version = "0.52.0" 2929 | source = "registry+https://github.com/rust-lang/crates.io-index" 2930 | checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" 2931 | dependencies = [ 2932 | "windows-core", 2933 | "windows-targets 0.52.0", 2934 | ] 2935 | 2936 | [[package]] 2937 | name = "windows-core" 2938 | version = "0.52.0" 2939 | source = "registry+https://github.com/rust-lang/crates.io-index" 2940 | checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" 2941 | dependencies = [ 2942 | "windows-targets 0.52.0", 2943 | ] 2944 | 2945 | [[package]] 2946 | name = "windows-implement" 2947 | version = "0.48.0" 2948 | source = "registry+https://github.com/rust-lang/crates.io-index" 2949 | checksum = "5e2ee588991b9e7e6c8338edf3333fbe4da35dc72092643958ebb43f0ab2c49c" 2950 | dependencies = [ 2951 | "proc-macro2", 2952 | "quote", 2953 | "syn 1.0.109", 2954 | ] 2955 | 2956 | [[package]] 2957 | name = "windows-interface" 2958 | version = "0.48.0" 2959 | source = "registry+https://github.com/rust-lang/crates.io-index" 2960 | checksum = "e6fb8df20c9bcaa8ad6ab513f7b40104840c8867d5751126e4df3b08388d0cc7" 2961 | dependencies = [ 2962 | "proc-macro2", 2963 | "quote", 2964 | "syn 1.0.109", 2965 | ] 2966 | 2967 | [[package]] 2968 | name = "windows-sys" 2969 | version = "0.45.0" 2970 | source = "registry+https://github.com/rust-lang/crates.io-index" 2971 | checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" 2972 | dependencies = [ 2973 | "windows-targets 0.42.2", 2974 | ] 2975 | 2976 | [[package]] 2977 | name = "windows-sys" 2978 | version = "0.48.0" 2979 | source = "registry+https://github.com/rust-lang/crates.io-index" 2980 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 2981 | dependencies = [ 2982 | "windows-targets 0.48.5", 2983 | ] 2984 | 2985 | [[package]] 2986 | name = "windows-sys" 2987 | version = "0.52.0" 2988 | source = "registry+https://github.com/rust-lang/crates.io-index" 2989 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 2990 | dependencies = [ 2991 | "windows-targets 0.52.0", 2992 | ] 2993 | 2994 | [[package]] 2995 | name = "windows-targets" 2996 | version = "0.42.2" 2997 | source = "registry+https://github.com/rust-lang/crates.io-index" 2998 | checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" 2999 | dependencies = [ 3000 | "windows_aarch64_gnullvm 0.42.2", 3001 | "windows_aarch64_msvc 0.42.2", 3002 | "windows_i686_gnu 0.42.2", 3003 | "windows_i686_msvc 0.42.2", 3004 | "windows_x86_64_gnu 0.42.2", 3005 | "windows_x86_64_gnullvm 0.42.2", 3006 | "windows_x86_64_msvc 0.42.2", 3007 | ] 3008 | 3009 | [[package]] 3010 | name = "windows-targets" 3011 | version = "0.48.5" 3012 | source = "registry+https://github.com/rust-lang/crates.io-index" 3013 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 3014 | dependencies = [ 3015 | "windows_aarch64_gnullvm 0.48.5", 3016 | "windows_aarch64_msvc 0.48.5", 3017 | "windows_i686_gnu 0.48.5", 3018 | "windows_i686_msvc 0.48.5", 3019 | "windows_x86_64_gnu 0.48.5", 3020 | "windows_x86_64_gnullvm 0.48.5", 3021 | "windows_x86_64_msvc 0.48.5", 3022 | ] 3023 | 3024 | [[package]] 3025 | name = "windows-targets" 3026 | version = "0.52.0" 3027 | source = "registry+https://github.com/rust-lang/crates.io-index" 3028 | checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" 3029 | dependencies = [ 3030 | "windows_aarch64_gnullvm 0.52.0", 3031 | "windows_aarch64_msvc 0.52.0", 3032 | "windows_i686_gnu 0.52.0", 3033 | "windows_i686_msvc 0.52.0", 3034 | "windows_x86_64_gnu 0.52.0", 3035 | "windows_x86_64_gnullvm 0.52.0", 3036 | "windows_x86_64_msvc 0.52.0", 3037 | ] 3038 | 3039 | [[package]] 3040 | name = "windows_aarch64_gnullvm" 3041 | version = "0.42.2" 3042 | source = "registry+https://github.com/rust-lang/crates.io-index" 3043 | checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" 3044 | 3045 | [[package]] 3046 | name = "windows_aarch64_gnullvm" 3047 | version = "0.48.5" 3048 | source = "registry+https://github.com/rust-lang/crates.io-index" 3049 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 3050 | 3051 | [[package]] 3052 | name = "windows_aarch64_gnullvm" 3053 | version = "0.52.0" 3054 | source = "registry+https://github.com/rust-lang/crates.io-index" 3055 | checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" 3056 | 3057 | [[package]] 3058 | name = "windows_aarch64_msvc" 3059 | version = "0.42.2" 3060 | source = "registry+https://github.com/rust-lang/crates.io-index" 3061 | checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" 3062 | 3063 | [[package]] 3064 | name = "windows_aarch64_msvc" 3065 | version = "0.48.5" 3066 | source = "registry+https://github.com/rust-lang/crates.io-index" 3067 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 3068 | 3069 | [[package]] 3070 | name = "windows_aarch64_msvc" 3071 | version = "0.52.0" 3072 | source = "registry+https://github.com/rust-lang/crates.io-index" 3073 | checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" 3074 | 3075 | [[package]] 3076 | name = "windows_i686_gnu" 3077 | version = "0.42.2" 3078 | source = "registry+https://github.com/rust-lang/crates.io-index" 3079 | checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" 3080 | 3081 | [[package]] 3082 | name = "windows_i686_gnu" 3083 | version = "0.48.5" 3084 | source = "registry+https://github.com/rust-lang/crates.io-index" 3085 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 3086 | 3087 | [[package]] 3088 | name = "windows_i686_gnu" 3089 | version = "0.52.0" 3090 | source = "registry+https://github.com/rust-lang/crates.io-index" 3091 | checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" 3092 | 3093 | [[package]] 3094 | name = "windows_i686_msvc" 3095 | version = "0.42.2" 3096 | source = "registry+https://github.com/rust-lang/crates.io-index" 3097 | checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" 3098 | 3099 | [[package]] 3100 | name = "windows_i686_msvc" 3101 | version = "0.48.5" 3102 | source = "registry+https://github.com/rust-lang/crates.io-index" 3103 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 3104 | 3105 | [[package]] 3106 | name = "windows_i686_msvc" 3107 | version = "0.52.0" 3108 | source = "registry+https://github.com/rust-lang/crates.io-index" 3109 | checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" 3110 | 3111 | [[package]] 3112 | name = "windows_x86_64_gnu" 3113 | version = "0.42.2" 3114 | source = "registry+https://github.com/rust-lang/crates.io-index" 3115 | checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" 3116 | 3117 | [[package]] 3118 | name = "windows_x86_64_gnu" 3119 | version = "0.48.5" 3120 | source = "registry+https://github.com/rust-lang/crates.io-index" 3121 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 3122 | 3123 | [[package]] 3124 | name = "windows_x86_64_gnu" 3125 | version = "0.52.0" 3126 | source = "registry+https://github.com/rust-lang/crates.io-index" 3127 | checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" 3128 | 3129 | [[package]] 3130 | name = "windows_x86_64_gnullvm" 3131 | version = "0.42.2" 3132 | source = "registry+https://github.com/rust-lang/crates.io-index" 3133 | checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" 3134 | 3135 | [[package]] 3136 | name = "windows_x86_64_gnullvm" 3137 | version = "0.48.5" 3138 | source = "registry+https://github.com/rust-lang/crates.io-index" 3139 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 3140 | 3141 | [[package]] 3142 | name = "windows_x86_64_gnullvm" 3143 | version = "0.52.0" 3144 | source = "registry+https://github.com/rust-lang/crates.io-index" 3145 | checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" 3146 | 3147 | [[package]] 3148 | name = "windows_x86_64_msvc" 3149 | version = "0.42.2" 3150 | source = "registry+https://github.com/rust-lang/crates.io-index" 3151 | checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" 3152 | 3153 | [[package]] 3154 | name = "windows_x86_64_msvc" 3155 | version = "0.48.5" 3156 | source = "registry+https://github.com/rust-lang/crates.io-index" 3157 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 3158 | 3159 | [[package]] 3160 | name = "windows_x86_64_msvc" 3161 | version = "0.52.0" 3162 | source = "registry+https://github.com/rust-lang/crates.io-index" 3163 | checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" 3164 | 3165 | [[package]] 3166 | name = "winit" 3167 | version = "0.29.10" 3168 | source = "registry+https://github.com/rust-lang/crates.io-index" 3169 | checksum = "4c824f11941eeae66ec71111cc2674373c772f482b58939bb4066b642aa2ffcf" 3170 | dependencies = [ 3171 | "android-activity", 3172 | "atomic-waker", 3173 | "bitflags 2.4.2", 3174 | "bytemuck", 3175 | "calloop", 3176 | "cfg_aliases", 3177 | "core-foundation", 3178 | "core-graphics", 3179 | "cursor-icon", 3180 | "icrate", 3181 | "js-sys", 3182 | "libc", 3183 | "log", 3184 | "ndk", 3185 | "ndk-sys", 3186 | "objc2 0.4.1", 3187 | "once_cell", 3188 | "orbclient", 3189 | "percent-encoding", 3190 | "raw-window-handle", 3191 | "redox_syscall 0.3.5", 3192 | "rustix", 3193 | "smol_str", 3194 | "unicode-segmentation", 3195 | "wasm-bindgen", 3196 | "wasm-bindgen-futures", 3197 | "web-sys", 3198 | "web-time", 3199 | "windows-sys 0.48.0", 3200 | "x11-dl", 3201 | "x11rb", 3202 | "xkbcommon-dl", 3203 | ] 3204 | 3205 | [[package]] 3206 | name = "winnow" 3207 | version = "0.5.40" 3208 | source = "registry+https://github.com/rust-lang/crates.io-index" 3209 | checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" 3210 | dependencies = [ 3211 | "memchr", 3212 | ] 3213 | 3214 | [[package]] 3215 | name = "x11-dl" 3216 | version = "2.21.0" 3217 | source = "registry+https://github.com/rust-lang/crates.io-index" 3218 | checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" 3219 | dependencies = [ 3220 | "libc", 3221 | "once_cell", 3222 | "pkg-config", 3223 | ] 3224 | 3225 | [[package]] 3226 | name = "x11rb" 3227 | version = "0.13.0" 3228 | source = "registry+https://github.com/rust-lang/crates.io-index" 3229 | checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a" 3230 | dependencies = [ 3231 | "as-raw-xcb-connection", 3232 | "gethostname", 3233 | "libc", 3234 | "libloading 0.8.1", 3235 | "once_cell", 3236 | "rustix", 3237 | "x11rb-protocol", 3238 | ] 3239 | 3240 | [[package]] 3241 | name = "x11rb-protocol" 3242 | version = "0.13.0" 3243 | source = "registry+https://github.com/rust-lang/crates.io-index" 3244 | checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34" 3245 | 3246 | [[package]] 3247 | name = "xkbcommon-dl" 3248 | version = "0.4.2" 3249 | source = "registry+https://github.com/rust-lang/crates.io-index" 3250 | checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" 3251 | dependencies = [ 3252 | "bitflags 2.4.2", 3253 | "dlib", 3254 | "log", 3255 | "once_cell", 3256 | "xkeysym", 3257 | ] 3258 | 3259 | [[package]] 3260 | name = "xkeysym" 3261 | version = "0.2.0" 3262 | source = "registry+https://github.com/rust-lang/crates.io-index" 3263 | checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621" 3264 | 3265 | [[package]] 3266 | name = "xml-rs" 3267 | version = "0.8.19" 3268 | source = "registry+https://github.com/rust-lang/crates.io-index" 3269 | checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" 3270 | 3271 | [[package]] 3272 | name = "zerocopy" 3273 | version = "0.7.32" 3274 | source = "registry+https://github.com/rust-lang/crates.io-index" 3275 | checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" 3276 | dependencies = [ 3277 | "zerocopy-derive", 3278 | ] 3279 | 3280 | [[package]] 3281 | name = "zerocopy-derive" 3282 | version = "0.7.32" 3283 | source = "registry+https://github.com/rust-lang/crates.io-index" 3284 | checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" 3285 | dependencies = [ 3286 | "proc-macro2", 3287 | "quote", 3288 | "syn 2.0.49", 3289 | ] 3290 | --------------------------------------------------------------------------------