mirror of
https://github.com/maplibre/maplibre-rs.git
synced 2025-12-08 19:05:57 +00:00
Chore: upgrade deps (#286)
* upgrade deps, fix keywords/categories * just fmt * remove backends in wgpu
This commit is contained in:
parent
e3c398b9a9
commit
04ff0882a3
56
Cargo.toml
56
Cargo.toml
@ -19,9 +19,11 @@ members = [
|
||||
description = "Maps for Desktop, Mobile and Web"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
rust-version = "1.65"
|
||||
# Keep this in sync with `rust-toolchain.toml` and `justfile`
|
||||
rust-version = "1.72.1"
|
||||
license = "MIT OR Apache-2.0"
|
||||
keywords = ["graphics", "science::geo"]
|
||||
keywords = ["graphics", "maps", "webgl", "tiles"]
|
||||
categories = ["graphics", "science::geo"]
|
||||
authors = ["Maximilian Ammann <max@maxammann.org>"]
|
||||
|
||||
[workspace.dependencies]
|
||||
@ -40,56 +42,56 @@ winit = { version = "0.27.5", default-features = false, features = [] }
|
||||
#
|
||||
# These dependencies should be updated to the latest version
|
||||
#
|
||||
async-trait = "0.1.68"
|
||||
bytemuck = "1.13.1"
|
||||
bytemuck_derive = "1.4.1"
|
||||
async-trait = "0.1.73"
|
||||
bytemuck = "1.14.0"
|
||||
bytemuck_derive = "1.5.0"
|
||||
cgmath = "0.18.0"
|
||||
cint = "0.3.1"
|
||||
clap = { version = "4.3.0", features = ["derive"] }
|
||||
clap = { version = "4.3.24", features = ["derive"] }
|
||||
console_error_panic_hook = "0.1.7"
|
||||
console_log = { version = "1.0.0", features = ["color"] }
|
||||
criterion = { version = "0.5.1", features = ["async_tokio"] }
|
||||
csscolorparser = { version = "0.6.2", features = ["serde", "cint"] }
|
||||
downcast-rs = "1.2.0"
|
||||
env_logger = "0.10.0"
|
||||
flatbuffers = "23.1.21"
|
||||
flatbuffers = "23.5.26"
|
||||
flatc-rust = "0.2.0"
|
||||
flate2 = "1.0.26"
|
||||
geo = "0.25.0"
|
||||
geo-types = { version = "0.7.9", features = ["use-rstar_0_9"] }
|
||||
geozero = { version = "0.9.9", default-features = false, features = ["with-mvt", "with-geo"] }
|
||||
flate2 = "1.0.27"
|
||||
geo = "0.26.0"
|
||||
geo-types = { version = "0.7.11", features = ["use-rstar_0_9"] }
|
||||
geozero = { version = "0.11.0", default-features = false, features = ["with-mvt", "with-geo"] }
|
||||
image = { version = "0.24", default-features = false, features = ["jpeg", "webp", "png"] }
|
||||
include_dir = "0.7.3"
|
||||
instant = { version = "0.1.12", features = ["wasm-bindgen"] } # TODO: Untrusted dependency
|
||||
jni = "0.21.1"
|
||||
js-sys = "0.3.63"
|
||||
log = "0.4.18"
|
||||
js-sys = "0.3.64"
|
||||
log = "0.4.20"
|
||||
lyon = { version = "1.0.1", features = [] }
|
||||
naga = { version = "0.12.1", features = ["wgsl-in"] }
|
||||
naga = { version = "0.13.0", features = ["wgsl-in"] }
|
||||
ndk-glue = "0.7.0" # version is required by winit. This might for winit 0.28+, see https://github.com/rust-windowing/winit#Android
|
||||
png = { version = "0.17.8" }
|
||||
png = { version = "0.17.10" }
|
||||
raw-window-handle = "0.5.2"
|
||||
reqwest = { version = "0.11.18", default-features = false, features = ["rustls-tls", "gzip"] } # Use rusttls on android because cross compiling is difficult
|
||||
reqwest = { version = "0.11.20", default-features = false, features = ["rustls-tls", "gzip"] } # Use rusttls on android because cross compiling is difficult
|
||||
reqwest-middleware-cache = "0.1.1" # FIXME: Untrusted dependency
|
||||
rstar = "0.10.0"
|
||||
rstar = "0.11.0"
|
||||
rusqlite = { version = "0.29.0" }
|
||||
serde = { version = "1.0.163", features = ["derive"] }
|
||||
serde_json = "1.0.96"
|
||||
smallvec = "1.10.0"
|
||||
thiserror = "1.0.40"
|
||||
tile-grid = "0.4"
|
||||
tokio = "1.28.2" # Individual features are customized in each crate
|
||||
tokio-util = { version = "0.7.8", features = ["rt"] }
|
||||
serde = { version = "1.0.188", features = ["derive"] }
|
||||
serde_json = "1.0.107"
|
||||
smallvec = "1.11.1"
|
||||
thiserror = "1.0.48"
|
||||
tile-grid = "0.5"
|
||||
tokio = "1.32.0" # Individual features are customized in each crate
|
||||
tokio-util = { version = "0.7.9", features = ["rt"] }
|
||||
tracing = "0.1.37"
|
||||
tracing-subscriber = "0.3.17"
|
||||
tracing-tracy = "0.10"
|
||||
tracing-wasm = "0.2.1" # TODO: Low quality dependency (remove in a separate PR!)
|
||||
walkdir = "2.3.3"
|
||||
walkdir = "2.4.0"
|
||||
wasm-bindgen = "0.2"
|
||||
wasm-bindgen-futures = "0.4"
|
||||
wasm-bindgen-test = "0.3"
|
||||
web-sys = "0.3.63" # Individual features are customized in each crate
|
||||
wgpu = "0.16.1"
|
||||
web-sys = "0.3.64" # Individual features are customized in each crate
|
||||
wgpu = "0.17.0"
|
||||
|
||||
[profile.release]
|
||||
lto = true
|
||||
|
||||
@ -8,6 +8,7 @@ edition.workspace = true
|
||||
rust-version.workspace = true
|
||||
license.workspace = true
|
||||
keywords.workspace = true
|
||||
categories.workspace = true
|
||||
authors.workspace = true
|
||||
|
||||
[dependencies]
|
||||
|
||||
@ -34,7 +34,8 @@ cargo {
|
||||
libname = "maplibre_android"
|
||||
targetDirectory = "${module}/../target"
|
||||
profile = "debug"
|
||||
rustupChannel = "nightly-2023-03-29" // Also change the version in justfile
|
||||
// This should be in sync with the justfile
|
||||
rustupChannel = "nightly-2023-09-23"
|
||||
|
||||
|
||||
features {
|
||||
|
||||
@ -8,6 +8,7 @@ edition.workspace = true
|
||||
rust-version.workspace = true
|
||||
license.workspace = true
|
||||
keywords.workspace = true
|
||||
categories.workspace = true
|
||||
authors.workspace = true
|
||||
|
||||
[dependencies]
|
||||
|
||||
@ -8,6 +8,7 @@ edition.workspace = true
|
||||
rust-version.workspace = true
|
||||
license.workspace = true
|
||||
keywords.workspace = true
|
||||
categories.workspace = true
|
||||
authors.workspace = true
|
||||
|
||||
[dependencies]
|
||||
|
||||
8
justfile
8
justfile
@ -4,10 +4,12 @@
|
||||
|
||||
set shell := ["bash", "-c"]
|
||||
|
||||
# Also change the version in android/gradle/lib/build.gradle
|
||||
# Keep this in sync with `android/gradle/lib/build.gradle`
|
||||
export NIGHTLY_TOOLCHAIN := "nightly-2023-09-23"
|
||||
|
||||
export NIGHTLY_TOOLCHAIN := "nightly-2023-03-29"
|
||||
export STABLE_TOOLCHAIN := "1.65"
|
||||
# Keep this in sync with `rust-toolchain.toml` and `Cargo.toml`.
|
||||
# Make sure the above is newer than this.
|
||||
export STABLE_TOOLCHAIN := "1.72.1"
|
||||
export CARGO_TERM_COLOR := "always"
|
||||
export RUST_BACKTRACE := "1"
|
||||
|
||||
|
||||
@ -8,6 +8,7 @@ edition.workspace = true
|
||||
rust-version.workspace = true
|
||||
license.workspace = true
|
||||
keywords.workspace = true
|
||||
categories.workspace = true
|
||||
authors.workspace = true
|
||||
|
||||
[features]
|
||||
|
||||
@ -8,6 +8,7 @@ edition.workspace = true
|
||||
rust-version.workspace = true
|
||||
license.workspace = true
|
||||
keywords.workspace = true
|
||||
categories.workspace = true
|
||||
authors.workspace = true
|
||||
|
||||
[features]
|
||||
|
||||
@ -7,6 +7,7 @@ edition.workspace = true
|
||||
rust-version.workspace = true
|
||||
license.workspace = true
|
||||
keywords.workspace = true
|
||||
categories.workspace = true
|
||||
authors.workspace = true
|
||||
|
||||
[target.'cfg(any(target_os = "macos", target_os = "ios", target_os = "linux", target_os = "android", target_os = "windows"))'.dependencies]
|
||||
|
||||
@ -9,6 +9,7 @@ edition.workspace = true
|
||||
rust-version.workspace = true
|
||||
license.workspace = true
|
||||
keywords.workspace = true
|
||||
categories.workspace = true
|
||||
authors.workspace = true
|
||||
|
||||
[features]
|
||||
|
||||
@ -3,9 +3,10 @@ use crate::{context::MapContext, debug::TileDebugItem, render::render_phase::Ren
|
||||
pub fn cleanup_system(MapContext { world, .. }: &mut MapContext) {
|
||||
let Some(debug_tile_phase) = world
|
||||
.resources
|
||||
.query_mut::<
|
||||
&mut RenderPhase<TileDebugItem>,
|
||||
>() else { return; };
|
||||
.query_mut::<&mut RenderPhase<TileDebugItem>>()
|
||||
else {
|
||||
return;
|
||||
};
|
||||
|
||||
debug_tile_phase.clear();
|
||||
}
|
||||
|
||||
@ -10,13 +10,12 @@ use crate::{
|
||||
};
|
||||
|
||||
pub fn queue_system(MapContext { world, .. }: &mut MapContext) {
|
||||
let Some((
|
||||
Initialized(tile_view_pattern),
|
||||
tile_debug_phase,
|
||||
)) = world.resources.query_mut::<(
|
||||
let Some((Initialized(tile_view_pattern), tile_debug_phase)) = world.resources.query_mut::<(
|
||||
&mut Eventually<WgpuTileViewPattern>,
|
||||
&mut RenderPhase<TileDebugItem>,
|
||||
)>() else { return; };
|
||||
)>() else {
|
||||
return;
|
||||
};
|
||||
|
||||
for view_tile in tile_view_pattern.iter() {
|
||||
let coords = &view_tile.coords();
|
||||
|
||||
@ -18,9 +18,9 @@ impl<P: PhaseItem> RenderCommand<P> for SetDebugPipeline {
|
||||
_item: &P,
|
||||
pass: &mut TrackedRenderPass<'w>,
|
||||
) -> RenderCommandResult {
|
||||
let Some(Initialized(pipeline)) = world
|
||||
.resources
|
||||
.get::<Eventually<DebugPipeline>>() else { return RenderCommandResult::Failure; };
|
||||
let Some(Initialized(pipeline)) = world.resources.get::<Eventually<DebugPipeline>>() else {
|
||||
return RenderCommandResult::Failure;
|
||||
};
|
||||
|
||||
pass.set_render_pipeline(pipeline);
|
||||
RenderCommandResult::Success
|
||||
@ -34,9 +34,11 @@ impl RenderCommand<TileDebugItem> for DrawDebugOutline {
|
||||
item: &TileDebugItem,
|
||||
pass: &mut TrackedRenderPass<'w>,
|
||||
) -> RenderCommandResult {
|
||||
let Some(Initialized(tile_view_pattern)) = world
|
||||
.resources
|
||||
.get::<Eventually<WgpuTileViewPattern>>() else { return RenderCommandResult::Failure; };
|
||||
let Some(Initialized(tile_view_pattern)) =
|
||||
world.resources.get::<Eventually<WgpuTileViewPattern>>()
|
||||
else {
|
||||
return RenderCommandResult::Failure;
|
||||
};
|
||||
|
||||
let source_shape = &item.source_shape;
|
||||
|
||||
|
||||
@ -24,11 +24,12 @@ pub fn resource_system(
|
||||
..
|
||||
}: &mut MapContext,
|
||||
) {
|
||||
let Some(
|
||||
debug_pipeline
|
||||
) = world.resources.query_mut::<
|
||||
&mut Eventually<DebugPipeline>,
|
||||
>() else { return; };
|
||||
let Some(debug_pipeline) = world
|
||||
.resources
|
||||
.query_mut::<&mut Eventually<DebugPipeline>>()
|
||||
else {
|
||||
return;
|
||||
};
|
||||
|
||||
debug_pipeline.initialize(|| {
|
||||
let mask_shader = shaders::TileMaskShader {
|
||||
|
||||
@ -41,7 +41,10 @@ impl<E: Environment, T: RasterTransferables> System for PopulateWorldSystem<E, T
|
||||
let message = message.into_transferable::<T::LayerRaster>();
|
||||
let Some(component) = world
|
||||
.tiles
|
||||
.query_mut::<&mut RasterLayersDataComponent>(message.coords()) else { continue; };
|
||||
.query_mut::<&mut RasterLayersDataComponent>(message.coords())
|
||||
else {
|
||||
continue;
|
||||
};
|
||||
|
||||
component
|
||||
.layers
|
||||
@ -50,7 +53,10 @@ impl<E: Environment, T: RasterTransferables> System for PopulateWorldSystem<E, T
|
||||
let message = message.into_transferable::<T::LayerRasterMissing>();
|
||||
let Some(component) = world
|
||||
.tiles
|
||||
.query_mut::<&mut RasterLayersDataComponent>(message.coords()) else { continue; };
|
||||
.query_mut::<&mut RasterLayersDataComponent>(message.coords())
|
||||
else {
|
||||
continue;
|
||||
};
|
||||
|
||||
component
|
||||
.layers
|
||||
|
||||
@ -13,11 +13,12 @@ use crate::{
|
||||
};
|
||||
|
||||
pub fn queue_system(MapContext { world, .. }: &mut MapContext) {
|
||||
let Some((
|
||||
Initialized(tile_view_pattern),
|
||||
)) = world.resources.query::<(
|
||||
&Eventually<WgpuTileViewPattern>,
|
||||
)>() else { return; };
|
||||
let Some((Initialized(tile_view_pattern),)) = world
|
||||
.resources
|
||||
.query::<(&Eventually<WgpuTileViewPattern>,)>()
|
||||
else {
|
||||
return;
|
||||
};
|
||||
|
||||
let mut items = Vec::new();
|
||||
|
||||
@ -49,7 +50,10 @@ pub fn queue_system(MapContext { world, .. }: &mut MapContext) {
|
||||
|
||||
let Some((layer_item_phase, tile_mask_phase)) = world
|
||||
.resources
|
||||
.query_mut::<(&mut RenderPhase<LayerItem>, &mut RenderPhase<TileMaskItem>,)>() else { return; };
|
||||
.query_mut::<(&mut RenderPhase<LayerItem>, &mut RenderPhase<TileMaskItem>)>()
|
||||
else {
|
||||
return;
|
||||
};
|
||||
|
||||
for (layer, mask) in items {
|
||||
layer_item_phase.add(layer);
|
||||
|
||||
@ -16,9 +16,11 @@ impl<P: PhaseItem> RenderCommand<P> for SetRasterTilePipeline {
|
||||
_item: &P,
|
||||
pass: &mut TrackedRenderPass<'w>,
|
||||
) -> RenderCommandResult {
|
||||
let Some(Initialized(raster_resources)) = world
|
||||
.resources
|
||||
.get::<Eventually<RasterResources>>() else { return RenderCommandResult::Failure; };
|
||||
let Some(Initialized(raster_resources)) =
|
||||
world.resources.get::<Eventually<RasterResources>>()
|
||||
else {
|
||||
return RenderCommandResult::Failure;
|
||||
};
|
||||
|
||||
pass.set_render_pipeline(raster_resources.pipeline());
|
||||
RenderCommandResult::Success
|
||||
@ -32,12 +34,15 @@ impl<const I: usize> RenderCommand<LayerItem> for SetRasterViewBindGroup<I> {
|
||||
item: &LayerItem,
|
||||
pass: &mut TrackedRenderPass<'w>,
|
||||
) -> RenderCommandResult {
|
||||
let Some(Initialized(raster_resources)) = world
|
||||
.resources
|
||||
.get::<Eventually<RasterResources>>() else { return RenderCommandResult::Failure; };
|
||||
let Some(Initialized(raster_resources)) =
|
||||
world.resources.get::<Eventually<RasterResources>>()
|
||||
else {
|
||||
return RenderCommandResult::Failure;
|
||||
};
|
||||
|
||||
let Some(bind_group) = raster_resources
|
||||
.get_bound_texture(&item.tile.coords) else { return RenderCommandResult::Failure; };
|
||||
let Some(bind_group) = raster_resources.get_bound_texture(&item.tile.coords) else {
|
||||
return RenderCommandResult::Failure;
|
||||
};
|
||||
|
||||
pass.set_bind_group(0, bind_group, &[]);
|
||||
RenderCommandResult::Success
|
||||
@ -51,9 +56,11 @@ impl RenderCommand<LayerItem> for DrawRasterTile {
|
||||
item: &LayerItem,
|
||||
pass: &mut TrackedRenderPass<'w>,
|
||||
) -> RenderCommandResult {
|
||||
let Some(Initialized(tile_view_pattern)) = world
|
||||
.resources
|
||||
.get::<Eventually<WgpuTileViewPattern>>() else { return RenderCommandResult::Failure; };
|
||||
let Some(Initialized(tile_view_pattern)) =
|
||||
world.resources.get::<Eventually<WgpuTileViewPattern>>()
|
||||
else {
|
||||
return RenderCommandResult::Failure;
|
||||
};
|
||||
|
||||
let source_shape = &item.source_shape;
|
||||
|
||||
|
||||
@ -110,8 +110,8 @@ pub fn fetch_raster_apc<
|
||||
kernel: K,
|
||||
) -> AsyncProcedureFuture {
|
||||
Box::pin(async move {
|
||||
let Input::TileRequest {coords, style} = input else {
|
||||
return Err(ProcedureError::IncompatibleInput)
|
||||
let Input::TileRequest { coords, style } = input else {
|
||||
return Err(ProcedureError::IncompatibleInput);
|
||||
};
|
||||
|
||||
let raster_layers: HashSet<String> = style
|
||||
|
||||
@ -27,7 +27,10 @@ pub fn resource_system(
|
||||
) {
|
||||
let Some(raster_resources) = world
|
||||
.resources
|
||||
.query_mut::<&mut Eventually<RasterResources>>() else { return; };
|
||||
.query_mut::<&mut Eventually<RasterResources>>()
|
||||
else {
|
||||
return;
|
||||
};
|
||||
|
||||
raster_resources.initialize(|| {
|
||||
let shader = shaders::RasterTileShader {
|
||||
|
||||
@ -25,7 +25,10 @@ pub fn upload_system(
|
||||
) {
|
||||
let Some(Initialized(raster_resources)) = world
|
||||
.resources
|
||||
.query_mut::<&mut Eventually<RasterResources>>() else { return; };
|
||||
.query_mut::<&mut Eventually<RasterResources>>()
|
||||
else {
|
||||
return;
|
||||
};
|
||||
let view_region = view_state.create_view_region();
|
||||
|
||||
if let Some(view_region) = &view_region {
|
||||
@ -54,23 +57,24 @@ fn upload_raster_layer(
|
||||
continue;
|
||||
}
|
||||
|
||||
let Some(raster_layers) =
|
||||
tiles.query::<&RasterLayersDataComponent>(coords) else { continue; };
|
||||
let Some(raster_layers) = tiles.query::<&RasterLayersDataComponent>(coords) else {
|
||||
continue;
|
||||
};
|
||||
|
||||
for style_layer in &style.layers {
|
||||
let style_source_layer = style_layer.source_layer.as_ref().unwrap(); // FIXME: Remove unwrap
|
||||
|
||||
let Some(AvailableRasterLayerData {
|
||||
coords,
|
||||
image,
|
||||
..
|
||||
}) = raster_layers.layers
|
||||
let Some(AvailableRasterLayerData { coords, image, .. }) = raster_layers
|
||||
.layers
|
||||
.iter()
|
||||
.flat_map(|data| match data {
|
||||
RasterLayerData::Available(data) => Some(data),
|
||||
RasterLayerData::Missing(_) => None,
|
||||
})
|
||||
.find(|layer| style_source_layer.as_str() == layer.source_layer) else { continue; };
|
||||
.find(|layer| style_source_layer.as_str() == layer.source_layer)
|
||||
else {
|
||||
continue;
|
||||
};
|
||||
|
||||
let (width, height) = image.dimensions();
|
||||
|
||||
|
||||
@ -465,7 +465,7 @@ mod tests {
|
||||
backends,
|
||||
dx12_shader_compiler: Default::default(),
|
||||
});
|
||||
let adapter = wgpu::util::initialize_adapter_from_env_or_default(&instance, backends, None)
|
||||
let adapter = wgpu::util::initialize_adapter_from_env_or_default(&instance, None)
|
||||
.await
|
||||
.expect("Unable to initialize adapter");
|
||||
|
||||
|
||||
@ -18,7 +18,9 @@ impl<P: PhaseItem> RenderCommand<P> for SetMaskPipeline {
|
||||
_item: &P,
|
||||
pass: &mut TrackedRenderPass<'w>,
|
||||
) -> RenderCommandResult {
|
||||
let Some(Initialized(pipeline)) = world.resources.get::<Eventually<MaskPipeline>>() else { return RenderCommandResult::Failure; };
|
||||
let Some(Initialized(pipeline)) = world.resources.get::<Eventually<MaskPipeline>>() else {
|
||||
return RenderCommandResult::Failure;
|
||||
};
|
||||
pass.set_render_pipeline(pipeline);
|
||||
RenderCommandResult::Success
|
||||
}
|
||||
@ -31,9 +33,11 @@ impl RenderCommand<TileMaskItem> for DrawMask {
|
||||
item: &TileMaskItem,
|
||||
pass: &mut TrackedRenderPass<'w>,
|
||||
) -> RenderCommandResult {
|
||||
let Some(Initialized(tile_view_pattern)) = world
|
||||
.resources
|
||||
.get::<Eventually<WgpuTileViewPattern>>() else { return RenderCommandResult::Failure; };
|
||||
let Some(Initialized(tile_view_pattern)) =
|
||||
world.resources.get::<Eventually<WgpuTileViewPattern>>()
|
||||
else {
|
||||
return RenderCommandResult::Failure;
|
||||
};
|
||||
|
||||
let tile_mask = &item.source_shape;
|
||||
|
||||
|
||||
@ -6,10 +6,10 @@ use crate::{
|
||||
pub fn cleanup_system(MapContext { world, .. }: &mut MapContext) {
|
||||
let Some((layer_item_phase, tile_mask_phase)) = world
|
||||
.resources
|
||||
.query_mut::<(
|
||||
&mut RenderPhase<LayerItem>,
|
||||
&mut RenderPhase<TileMaskItem>,
|
||||
)>() else { return; };
|
||||
.query_mut::<(&mut RenderPhase<LayerItem>, &mut RenderPhase<TileMaskItem>)>()
|
||||
else {
|
||||
return;
|
||||
};
|
||||
|
||||
layer_item_phase.clear();
|
||||
tile_mask_phase.clear();
|
||||
|
||||
@ -38,13 +38,12 @@ impl System for ResourceSystem {
|
||||
..
|
||||
}: &mut MapContext,
|
||||
) {
|
||||
let Some((
|
||||
tile_view_pattern,
|
||||
mask_pipeline
|
||||
)) = world.resources.query_mut::<(
|
||||
let Some((tile_view_pattern, mask_pipeline)) = world.resources.query_mut::<(
|
||||
&mut Eventually<WgpuTileViewPattern>,
|
||||
&mut Eventually<MaskPipeline>,
|
||||
)>() else { return; };
|
||||
)>() else {
|
||||
return;
|
||||
};
|
||||
|
||||
let surface = &mut state.surface;
|
||||
|
||||
|
||||
@ -13,13 +13,12 @@ pub fn tile_view_pattern_system(
|
||||
view_state, world, ..
|
||||
}: &mut MapContext,
|
||||
) {
|
||||
let Some((
|
||||
Initialized(tile_view_pattern),
|
||||
view_tile_sources,
|
||||
)) = world.resources.query::<(
|
||||
&Eventually<WgpuTileViewPattern>,
|
||||
&ViewTileSources
|
||||
)>() else { return; };
|
||||
let Some((Initialized(tile_view_pattern), view_tile_sources)) = world
|
||||
.resources
|
||||
.query::<(&Eventually<WgpuTileViewPattern>, &ViewTileSources)>()
|
||||
else {
|
||||
return;
|
||||
};
|
||||
let view_region = view_state.create_view_region();
|
||||
|
||||
if let Some(view_region) = &view_region {
|
||||
@ -31,7 +30,10 @@ pub fn tile_view_pattern_system(
|
||||
// TODO: Can we &mut borrow initially somehow instead of here?
|
||||
let Some(Initialized(tile_view_pattern)) = world
|
||||
.resources
|
||||
.query_mut::<&mut Eventually<WgpuTileViewPattern>>() else { return; };
|
||||
.query_mut::<&mut Eventually<WgpuTileViewPattern>>()
|
||||
else {
|
||||
return;
|
||||
};
|
||||
|
||||
tile_view_pattern.update_pattern(view_tiles);
|
||||
}
|
||||
|
||||
@ -16,11 +16,12 @@ pub fn upload_system(
|
||||
..
|
||||
}: &mut MapContext,
|
||||
) {
|
||||
let Some(
|
||||
Initialized(tile_view_pattern)
|
||||
) = world.resources.query_mut::<
|
||||
&mut Eventually<WgpuTileViewPattern>
|
||||
>() else { return; };
|
||||
let Some(Initialized(tile_view_pattern)) = world
|
||||
.resources
|
||||
.query_mut::<&mut Eventually<WgpuTileViewPattern>>()
|
||||
else {
|
||||
return;
|
||||
};
|
||||
|
||||
let view_proj = view_state.view_projection();
|
||||
tile_view_pattern.upload_pattern(queue, &view_proj);
|
||||
|
||||
@ -71,9 +71,10 @@ struct VectorTilesDone;
|
||||
|
||||
impl HasTile for VectorTilesDone {
|
||||
fn has_tile(&self, coords: WorldTileCoords, world: &World) -> bool {
|
||||
let Some(vector_layers_indices) = world
|
||||
.tiles
|
||||
.query::<&VectorLayersDataComponent>(coords) else { return false; };
|
||||
let Some(vector_layers_indices) = world.tiles.query::<&VectorLayersDataComponent>(coords)
|
||||
else {
|
||||
return false;
|
||||
};
|
||||
|
||||
vector_layers_indices.done
|
||||
}
|
||||
|
||||
@ -40,14 +40,20 @@ impl<E: Environment, T: VectorTransferables> System for PopulateWorldSystem<E, T
|
||||
let message = message.into_transferable::<T::TileTessellated>();
|
||||
let Some(component) = world
|
||||
.tiles
|
||||
.query_mut::<&mut VectorLayersDataComponent>(message.coords()) else { continue; };
|
||||
.query_mut::<&mut VectorLayersDataComponent>(message.coords())
|
||||
else {
|
||||
continue;
|
||||
};
|
||||
|
||||
component.done = true;
|
||||
} else if message.has_tag(T::LayerMissing::message_tag()) {
|
||||
let message = message.into_transferable::<T::LayerMissing>();
|
||||
let Some(component) = world
|
||||
.tiles
|
||||
.query_mut::<&mut VectorLayersDataComponent>(message.coords()) else { continue; };
|
||||
.query_mut::<&mut VectorLayersDataComponent>(message.coords())
|
||||
else {
|
||||
continue;
|
||||
};
|
||||
|
||||
component
|
||||
.layers
|
||||
@ -61,7 +67,10 @@ impl<E: Environment, T: VectorTransferables> System for PopulateWorldSystem<E, T
|
||||
|
||||
let Some(component) = world
|
||||
.tiles
|
||||
.query_mut::<&mut VectorLayersDataComponent>(message.coords()) else { continue; };
|
||||
.query_mut::<&mut VectorLayersDataComponent>(message.coords())
|
||||
else {
|
||||
continue;
|
||||
};
|
||||
|
||||
component
|
||||
.layers
|
||||
|
||||
@ -16,13 +16,16 @@ pub fn queue_system(MapContext { world, .. }: &mut MapContext) {
|
||||
Initialized(tile_view_pattern),
|
||||
Initialized(buffer_pool),
|
||||
mask_phase,
|
||||
layer_item_phase
|
||||
layer_item_phase,
|
||||
)) = world.resources.query_mut::<(
|
||||
&mut Eventually<WgpuTileViewPattern>,
|
||||
&mut Eventually<VectorBufferPool>,
|
||||
&mut RenderPhase<TileMaskItem>,
|
||||
&mut RenderPhase<LayerItem>,
|
||||
)>() else { return; };
|
||||
)>()
|
||||
else {
|
||||
return;
|
||||
};
|
||||
|
||||
let buffer_pool_index = buffer_pool.index();
|
||||
|
||||
|
||||
@ -19,9 +19,10 @@ impl<P: PhaseItem> RenderCommand<P> for SetVectorTilePipeline {
|
||||
_item: &P,
|
||||
pass: &mut TrackedRenderPass<'w>,
|
||||
) -> RenderCommandResult {
|
||||
let Some(Initialized(pipeline)) = world
|
||||
.resources
|
||||
.get::<Eventually<VectorPipeline>>() else { return RenderCommandResult::Failure; };
|
||||
let Some(Initialized(pipeline)) = world.resources.get::<Eventually<VectorPipeline>>()
|
||||
else {
|
||||
return RenderCommandResult::Failure;
|
||||
};
|
||||
|
||||
pass.set_render_pipeline(pipeline);
|
||||
RenderCommandResult::Success
|
||||
@ -35,19 +36,25 @@ impl RenderCommand<LayerItem> for DrawVectorTile {
|
||||
item: &LayerItem,
|
||||
pass: &mut TrackedRenderPass<'w>,
|
||||
) -> RenderCommandResult {
|
||||
let Some((
|
||||
Initialized(buffer_pool),
|
||||
Initialized(tile_view_pattern),
|
||||
)) = world.resources.query::<(
|
||||
let Some((Initialized(buffer_pool), Initialized(tile_view_pattern))) =
|
||||
world.resources.query::<(
|
||||
&Eventually<VectorBufferPool>,
|
||||
&Eventually<WgpuTileViewPattern>
|
||||
)>() else { return RenderCommandResult::Failure; };
|
||||
&Eventually<WgpuTileViewPattern>,
|
||||
)>()
|
||||
else {
|
||||
return RenderCommandResult::Failure;
|
||||
};
|
||||
|
||||
let Some(vector_layers) = buffer_pool.index().get_layers(item.tile.coords) else { return RenderCommandResult::Failure; };
|
||||
let Some(vector_layers) = buffer_pool.index().get_layers(item.tile.coords) else {
|
||||
return RenderCommandResult::Failure;
|
||||
};
|
||||
|
||||
let Some(entry) = vector_layers
|
||||
.iter()
|
||||
.find(|entry| entry.style_layer.id == item.style_layer) else { return RenderCommandResult::Failure; };
|
||||
.find(|entry| entry.style_layer.id == item.style_layer)
|
||||
else {
|
||||
return RenderCommandResult::Failure;
|
||||
};
|
||||
|
||||
let source_shape = &item.source_shape;
|
||||
|
||||
|
||||
@ -111,8 +111,8 @@ pub fn fetch_vector_apc<
|
||||
kernel: K,
|
||||
) -> AsyncProcedureFuture {
|
||||
Box::pin(async move {
|
||||
let Input::TileRequest {coords, style} = input else {
|
||||
return Err(ProcedureError::IncompatibleInput)
|
||||
let Input::TileRequest { coords, style } = input else {
|
||||
return Err(ProcedureError::IncompatibleInput);
|
||||
};
|
||||
|
||||
let fill_layers: HashSet<String> = style
|
||||
|
||||
@ -24,13 +24,12 @@ pub fn resource_system(
|
||||
..
|
||||
}: &mut MapContext,
|
||||
) {
|
||||
let Some((
|
||||
buffer_pool,
|
||||
vector_pipeline
|
||||
)) = world.resources.query_mut::<(
|
||||
let Some((buffer_pool, vector_pipeline)) = world.resources.query_mut::<(
|
||||
&mut Eventually<VectorBufferPool>,
|
||||
&mut Eventually<VectorPipeline>
|
||||
)>() else { return; };
|
||||
&mut Eventually<VectorPipeline>,
|
||||
)>() else {
|
||||
return;
|
||||
};
|
||||
|
||||
buffer_pool.initialize(|| BufferPool::from_device(device));
|
||||
|
||||
|
||||
@ -26,11 +26,12 @@ pub fn upload_system(
|
||||
..
|
||||
}: &mut MapContext,
|
||||
) {
|
||||
let Some(
|
||||
Initialized(buffer_pool)
|
||||
) = world.resources.query_mut::<
|
||||
&mut Eventually<VectorBufferPool>,
|
||||
>() else { return; };
|
||||
let Some(Initialized(buffer_pool)) = world
|
||||
.resources
|
||||
.query_mut::<&mut Eventually<VectorBufferPool>>()
|
||||
else {
|
||||
return;
|
||||
};
|
||||
|
||||
let view_region = view_state.create_view_region();
|
||||
|
||||
@ -128,7 +129,9 @@ fn upload_tesselated_layer(
|
||||
) {
|
||||
// Upload all tessellated layers which are in view
|
||||
for coords in view_region.iter() {
|
||||
let Some(vector_layers) = tiles.query_mut::<&VectorLayersDataComponent>(coords) else { continue; };
|
||||
let Some(vector_layers) = tiles.query_mut::<&VectorLayersDataComponent>(coords) else {
|
||||
continue;
|
||||
};
|
||||
|
||||
let loaded_layers = buffer_pool
|
||||
.get_loaded_source_layers_at(coords)
|
||||
@ -154,7 +157,10 @@ fn upload_tesselated_layer(
|
||||
..
|
||||
}) = available_layers
|
||||
.iter()
|
||||
.find(|layer| source_layer.as_str() == layer.source_layer) else { continue; };
|
||||
.find(|layer| source_layer.as_str() == layer.source_layer)
|
||||
else {
|
||||
continue;
|
||||
};
|
||||
|
||||
let color: Option<Vec4f32> = style_layer
|
||||
.paint
|
||||
|
||||
@ -3,4 +3,6 @@
|
||||
# The CI might use it though to build other Rust binaries, required for building maplibre-rs.
|
||||
# This file is here to give IDEs a hint about which Rust version to use.
|
||||
# The version is set here instead of using stable, so we can make sure that a predictable version is used.
|
||||
channel = "1.68"
|
||||
#
|
||||
# Keep this in sync with `justfile` and `Cargo.toml`
|
||||
channel = "1.72.1"
|
||||
|
||||
@ -9,6 +9,7 @@ edition.workspace = true
|
||||
rust-version.workspace = true
|
||||
license.workspace = true
|
||||
keywords.workspace = true
|
||||
categories.workspace = true
|
||||
authors.workspace = true
|
||||
|
||||
[features]
|
||||
|
||||
@ -28,15 +28,15 @@ pub enum WebError {
|
||||
impl From<JsValue> for WebError {
|
||||
fn from(value: JsValue) -> Self {
|
||||
if let Some(error) = value.dyn_ref::<TypeError>() {
|
||||
let Some(message) = error
|
||||
.message()
|
||||
.as_string() else { return WebError::InvalidMessage; };
|
||||
let Some(message) = error.message().as_string() else {
|
||||
return WebError::InvalidMessage;
|
||||
};
|
||||
|
||||
WebError::TypeError(message.into())
|
||||
} else if let Some(error) = value.dyn_ref::<js_sys::Error>() {
|
||||
let Some(message) = error
|
||||
.message()
|
||||
.as_string() else { return WebError::InvalidMessage; };
|
||||
let Some(message) = error.message().as_string() else {
|
||||
return WebError::InvalidMessage;
|
||||
};
|
||||
|
||||
WebError::GenericError(message.into())
|
||||
} else {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user