From 974bf3ae4993b624035ec0b0dce7b3fe21b115c8 Mon Sep 17 00:00:00 2001 From: Cameron <51241057+maniwani@users.noreply.github.com> Date: Tue, 18 Jul 2023 14:05:19 -0700 Subject: [PATCH] update plugins --- crates/bevy_asset/src/asset_server.rs | 26 ++++----- crates/bevy_asset/src/assets.rs | 34 +++++------ crates/bevy_asset/src/debug_asset_server.rs | 6 +- crates/bevy_asset/src/lib.rs | 4 +- crates/bevy_asset/src/reflect.rs | 16 +++--- crates/bevy_core/src/lib.rs | 3 +- crates/bevy_core_pipeline/src/blit/mod.rs | 5 +- crates/bevy_core_pipeline/src/bloom/mod.rs | 12 +--- .../src/contrast_adaptive_sharpening/mod.rs | 10 +--- crates/bevy_core_pipeline/src/core_2d/mod.rs | 6 +- crates/bevy_core_pipeline/src/core_3d/mod.rs | 6 +- crates/bevy_core_pipeline/src/fxaa/mod.rs | 10 +--- .../bevy_core_pipeline/src/msaa_writeback.rs | 5 +- crates/bevy_core_pipeline/src/skybox/mod.rs | 15 +---- crates/bevy_core_pipeline/src/taa/mod.rs | 6 +- .../bevy_core_pipeline/src/tonemapping/mod.rs | 24 ++++---- .../bevy_core_pipeline/src/upscaling/mod.rs | 2 +- crates/bevy_diagnostic/src/diagnostic.rs | 19 +++++-- crates/bevy_gizmos/src/lib.rs | 6 +- crates/bevy_gizmos/src/pipeline_2d.rs | 4 +- crates/bevy_gizmos/src/pipeline_3d.rs | 4 +- crates/bevy_gltf/src/lib.rs | 2 +- crates/bevy_log/src/lib.rs | 2 +- crates/bevy_pbr/src/lib.rs | 16 ++---- crates/bevy_pbr/src/material.rs | 4 +- crates/bevy_pbr/src/prepass/mod.rs | 17 +++--- crates/bevy_pbr/src/render/fog.rs | 2 +- crates/bevy_pbr/src/render/mesh.rs | 4 +- crates/bevy_pbr/src/ssao/mod.rs | 6 +- crates/bevy_pbr/src/wireframe.rs | 4 +- crates/bevy_render/src/camera/mod.rs | 6 +- crates/bevy_render/src/extract_component.rs | 4 +- crates/bevy_render/src/extract_resource.rs | 2 +- crates/bevy_render/src/globals.rs | 2 +- crates/bevy_render/src/lib.rs | 49 ++++++++-------- crates/bevy_render/src/pipelined_rendering.rs | 22 ++++---- crates/bevy_render/src/render_asset.rs | 2 +- crates/bevy_render/src/render_graph/app.rs | 51 ++++++++++++++--- crates/bevy_render/src/render_phase/draw.rs | 20 +++++-- crates/bevy_render/src/texture/mod.rs | 8 +-- crates/bevy_render/src/view/mod.rs | 2 +- crates/bevy_render/src/view/visibility/mod.rs | 56 +++++++++---------- crates/bevy_render/src/view/window.rs | 5 +- .../bevy_render/src/view/window/screenshot.rs | 4 +- crates/bevy_sprite/src/lib.rs | 4 +- .../bevy_sprite/src/mesh2d/color_material.rs | 2 +- crates/bevy_sprite/src/mesh2d/material.rs | 4 +- crates/bevy_sprite/src/mesh2d/mesh.rs | 4 +- crates/bevy_text/src/lib.rs | 2 +- crates/bevy_time/src/lib.rs | 4 +- crates/bevy_transform/src/systems.rs | 19 ++++--- crates/bevy_ui/src/lib.rs | 5 +- crates/bevy_ui/src/render/mod.rs | 11 ++-- crates/bevy_window/src/lib.rs | 2 +- crates/bevy_winit/src/lib.rs | 50 +++++++++-------- examples/2d/mesh2d_manual.rs | 6 +- examples/app/custom_loop.rs | 2 +- .../shader/compute_shader_game_of_life.rs | 6 +- examples/shader/post_processing.rs | 8 +-- examples/shader/shader_instancing.rs | 5 +- examples/shader/texture_binding_array.rs | 6 +- examples/stress_tests/many_lights.rs | 5 +- tests/how_to_test_systems.rs | 22 ++++---- 63 files changed, 334 insertions(+), 346 deletions(-) diff --git a/crates/bevy_asset/src/asset_server.rs b/crates/bevy_asset/src/asset_server.rs index d97f206bbdc36..352eb6194a19c 100644 --- a/crates/bevy_asset/src/asset_server.rs +++ b/crates/bevy_asset/src/asset_server.rs @@ -886,41 +886,41 @@ mod test { let path: AssetPath = "fake.png".into(); assert_eq!( LoadState::NotLoaded, - get_load_state(path.get_id(), &app.world) + get_load_state(path.get_id(), app.world()) ); // load the asset - let handle = load_asset(path.clone(), &app.world).typed(); + let handle = load_asset(path.clone(), app.world()).typed(); let weak_handle = handle.clone_weak(); // asset is loading - assert_eq!(LoadState::Loading, get_load_state(&handle, &app.world)); + assert_eq!(LoadState::Loading, get_load_state(&handle, app.world())); app.update(); // asset should exist and be loaded at this point - assert_eq!(LoadState::Loaded, get_load_state(&handle, &app.world)); - assert!(get_asset(&handle, &app.world).is_some()); + assert_eq!(LoadState::Loaded, get_load_state(&handle, app.world())); + assert!(get_asset(&handle, app.world()).is_some()); // after dropping the handle, next call to `tick` will prepare the assets for removal. drop(handle); app.update(); - assert_eq!(LoadState::Loaded, get_load_state(&weak_handle, &app.world)); - assert!(get_asset(&weak_handle, &app.world).is_some()); + assert_eq!(LoadState::Loaded, get_load_state(&weak_handle, app.world())); + assert!(get_asset(&weak_handle, app.world()).is_some()); // second call to tick will actually remove the asset. app.update(); assert_eq!( LoadState::Unloaded, - get_load_state(&weak_handle, &app.world) + get_load_state(&weak_handle, app.world()) ); - assert!(get_asset(&weak_handle, &app.world).is_none()); + assert!(get_asset(&weak_handle, app.world()).is_none()); // finally, reload the asset - let handle = load_asset(path.clone(), &app.world).typed(); - assert_eq!(LoadState::Loading, get_load_state(&handle, &app.world)); + let handle = load_asset(path.clone(), app.world()).typed(); + assert_eq!(LoadState::Loading, get_load_state(&handle, app.world())); app.update(); - assert_eq!(LoadState::Loaded, get_load_state(&handle, &app.world)); - assert!(get_asset(&handle, &app.world).is_some()); + assert_eq!(LoadState::Loaded, get_load_state(&handle, app.world())); + assert!(get_asset(&handle, app.world()).is_some()); } #[test] diff --git a/crates/bevy_asset/src/assets.rs b/crates/bevy_asset/src/assets.rs index 6669d9bc59632..f80441cb14e5c 100644 --- a/crates/bevy_asset/src/assets.rs +++ b/crates/bevy_asset/src/assets.rs @@ -324,11 +324,11 @@ impl AddAsset for App { where T: Asset, { - if self.world.contains_resource::>() { + if self.world().contains_resource::>() { return self; } let assets = { - let asset_server = self.world.resource::(); + let asset_server = self.world().resource::(); asset_server.register_asset_type::() }; @@ -343,7 +343,7 @@ impl AddAsset for App { where T: Asset + Reflect + FromReflect + GetTypeRegistration, { - let type_registry = self.world.resource::(); + let type_registry = self.world().resource::(); { let mut type_registry = type_registry.write(); @@ -367,7 +367,7 @@ impl AddAsset for App { crate::debug_asset_server::sync_debug_assets::, ); let mut app = self - .world + .world_mut() .non_send_resource_mut::(); app.add_asset::() .init_resource::>(); @@ -379,7 +379,7 @@ impl AddAsset for App { where T: AssetLoader + FromWorld, { - let result = T::from_world(&mut self.world); + let result = T::from_world(self.world_mut()); self.add_asset_loader(result) } @@ -390,7 +390,7 @@ impl AddAsset for App { #[cfg(feature = "debug_asset_server")] { let mut app = self - .world + .world_mut() .non_send_resource_mut::(); app.init_asset_loader::(); } @@ -401,7 +401,9 @@ impl AddAsset for App { where T: AssetLoader, { - self.world.resource_mut::().add_loader(loader); + self.world_mut() + .resource_mut::() + .add_loader(loader); self } } @@ -418,7 +420,7 @@ macro_rules! load_internal_asset { ($app: ident, $handle: ident, $path_str: expr, $loader: expr) => {{ { let mut debug_app = $app - .world + .world_mut() .non_send_resource_mut::<$crate::debug_asset_server::DebugAssetApp>(); $crate::debug_asset_server::register_handle_with_loader::<_, &'static str>( $loader, @@ -428,7 +430,7 @@ macro_rules! load_internal_asset { $path_str, ); } - let mut assets = $app.world.resource_mut::<$crate::Assets<_>>(); + let mut assets = $app.world_mut().resource_mut::<$crate::Assets<_>>(); assets.set_untracked( $handle, ($loader)( @@ -443,7 +445,7 @@ macro_rules! load_internal_asset { }}; // we can't support params without variadic arguments, so internal assets with additional params can't be hot-reloaded ($app: ident, $handle: ident, $path_str: expr, $loader: expr $(, $param:expr)+) => {{ - let mut assets = $app.world.resource_mut::<$crate::Assets<_>>(); + let mut assets = $app.world_mut().resource_mut::<$crate::Assets<_>>(); assets.set_untracked( $handle, ($loader)( @@ -469,7 +471,7 @@ macro_rules! load_internal_asset { #[macro_export] macro_rules! load_internal_asset { ($app: ident, $handle: ident, $path_str: expr, $loader: expr $(, $param:expr)*) => {{ - let mut assets = $app.world.resource_mut::<$crate::Assets<_>>(); + let mut assets = $app.world_mut().resource_mut::<$crate::Assets<_>>(); assets.set_untracked( $handle, ($loader)( @@ -495,7 +497,7 @@ macro_rules! load_internal_binary_asset { ($app: ident, $handle: ident, $path_str: expr, $loader: expr) => {{ { let mut debug_app = $app - .world + .world_mut() .non_send_resource_mut::<$crate::debug_asset_server::DebugAssetApp>(); $crate::debug_asset_server::register_handle_with_loader::<_, &'static [u8]>( $loader, @@ -505,7 +507,7 @@ macro_rules! load_internal_binary_asset { $path_str, ); } - let mut assets = $app.world.resource_mut::<$crate::Assets<_>>(); + let mut assets = $app.world_mut().resource_mut::<$crate::Assets<_>>(); assets.set_untracked( $handle, ($loader)( @@ -529,7 +531,7 @@ macro_rules! load_internal_binary_asset { #[macro_export] macro_rules! load_internal_binary_asset { ($app: ident, $handle: ident, $path_str: expr, $loader: expr) => {{ - let mut assets = $app.world.resource_mut::<$crate::Assets<_>>(); + let mut assets = $app.world_mut().resource_mut::<$crate::Assets<_>>(); assets.set_untracked( $handle, ($loader)( @@ -563,10 +565,10 @@ mod tests { crate::AssetPlugin::default(), )); app.add_asset::(); - let mut assets_before = app.world.resource_mut::>(); + let mut assets_before = app.world_mut().resource_mut::>(); let handle = assets_before.add(MyAsset); app.add_asset::(); // Ensure this doesn't overwrite the Asset - let assets_after = app.world.resource_mut::>(); + let assets_after = app.world_mut().resource_mut::>(); assert!(assets_after.get(&handle).is_some()); } } diff --git a/crates/bevy_asset/src/debug_asset_server.rs b/crates/bevy_asset/src/debug_asset_server.rs index 3819b1005a312..d200e9d510f7e 100644 --- a/crates/bevy_asset/src/debug_asset_server.rs +++ b/crates/bevy_asset/src/debug_asset_server.rs @@ -88,7 +88,7 @@ pub(crate) fn sync_debug_assets( mut debug_asset_app: NonSendMut, mut assets: ResMut>, ) { - let world = &mut debug_asset_app.0.world; + let world = debug_asset_app.0.world_mut(); let mut state = SystemState::<( Res>>, Res>, @@ -120,10 +120,10 @@ pub fn register_handle_with_loader( file_path: &str, path: &'static str, ) { - let mut state = SystemState::<(ResMut>, Res)>::new(&mut app.world); + let mut state = SystemState::<(ResMut>, Res)>::new(app.world_mut()); let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap(); let manifest_dir_path = Path::new(&manifest_dir); - let (mut handle_map, asset_server) = state.get_mut(&mut app.world); + let (mut handle_map, asset_server) = state.get_mut(app.world_mut()); let asset_io = asset_server .asset_io() .downcast_ref::() diff --git a/crates/bevy_asset/src/lib.rs b/crates/bevy_asset/src/lib.rs index cc325d26c4dd5..100acccbfdbd2 100644 --- a/crates/bevy_asset/src/lib.rs +++ b/crates/bevy_asset/src/lib.rs @@ -123,7 +123,7 @@ impl AssetPlugin { impl Plugin for AssetPlugin { fn build(&self, app: &mut App) { - if !app.world.contains_resource::() { + if !app.world().contains_resource::() { let source = self.create_platform_default_asset_io(); let asset_server = AssetServer::with_boxed_io(source); app.insert_resource(asset_server); @@ -142,7 +142,7 @@ impl Plugin for AssetPlugin { ))] app.add_systems(LoadAssets, io::filesystem_watcher_system); - let mut order = app.world.resource_mut::(); + let mut order = app.world_mut().resource_mut::(); order.insert_after(First, LoadAssets); order.insert_after(PostUpdate, AssetEvents); } diff --git a/crates/bevy_asset/src/reflect.rs b/crates/bevy_asset/src/reflect.rs index 98c54c69a8e9f..89ecfa1f0cfff 100644 --- a/crates/bevy_asset/src/reflect.rs +++ b/crates/bevy_asset/src/reflect.rs @@ -273,7 +273,7 @@ mod tests { .register_asset_reflect::(); let reflect_asset = { - let type_registry = app.world.resource::(); + let type_registry = app.world().resource::(); let type_registry = type_registry.read(); type_registry @@ -286,9 +286,9 @@ mod tests { field: "test".into(), }; - let handle = reflect_asset.add(&mut app.world, &value); + let handle = reflect_asset.add(app.world_mut(), &value); let strukt = match reflect_asset - .get_mut(&mut app.world, handle) + .get_mut(app.world_mut(), handle) .unwrap() .reflect_mut() { @@ -300,19 +300,19 @@ mod tests { .unwrap() .apply(&String::from("edited")); - assert_eq!(reflect_asset.len(&app.world), 1); - let ids: Vec<_> = reflect_asset.ids(&app.world).collect(); + assert_eq!(reflect_asset.len(app.world()), 1); + let ids: Vec<_> = reflect_asset.ids(app.world()).collect(); assert_eq!(ids.len(), 1); let fetched_handle = HandleUntyped::weak(ids[0]); let asset = reflect_asset - .get(&app.world, fetched_handle.clone_weak()) + .get(app.world(), fetched_handle.clone_weak()) .unwrap(); assert_eq!(asset.downcast_ref::().unwrap().field, "edited"); reflect_asset - .remove(&mut app.world, fetched_handle) + .remove(app.world_mut(), fetched_handle) .unwrap(); - assert_eq!(reflect_asset.len(&app.world), 0); + assert_eq!(reflect_asset.len(app.world()), 0); } } diff --git a/crates/bevy_core/src/lib.rs b/crates/bevy_core/src/lib.rs index 977f01489f286..60da1a2d56d03 100644 --- a/crates/bevy_core/src/lib.rs +++ b/crates/bevy_core/src/lib.rs @@ -30,7 +30,6 @@ use std::marker::PhantomData; use std::ops::Range; use std::path::{Path, PathBuf}; -#[cfg(not(target_arch = "wasm32"))] #[cfg(not(target_arch = "wasm32"))] use bevy_tasks::tick_global_task_pools_on_main_thread; @@ -205,7 +204,7 @@ mod tests { )); app.update(); - let frame_count = app.world.resource::(); + let frame_count = app.world().resource::(); assert_eq!(1, frame_count.0); } } diff --git a/crates/bevy_core_pipeline/src/blit/mod.rs b/crates/bevy_core_pipeline/src/blit/mod.rs index 2bc2f63ea90e8..f4cd836bca99d 100644 --- a/crates/bevy_core_pipeline/src/blit/mod.rs +++ b/crates/bevy_core_pipeline/src/blit/mod.rs @@ -18,10 +18,7 @@ impl Plugin for BlitPlugin { } fn finish(&self, app: &mut App) { - let Ok(render_app) = app.get_sub_app_mut(RenderApp) else { - return - }; - + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; render_app .init_resource::() .init_resource::>(); diff --git a/crates/bevy_core_pipeline/src/bloom/mod.rs b/crates/bevy_core_pipeline/src/bloom/mod.rs index e5271544e2d78..13f7fab26a576 100644 --- a/crates/bevy_core_pipeline/src/bloom/mod.rs +++ b/crates/bevy_core_pipeline/src/bloom/mod.rs @@ -57,11 +57,7 @@ impl Plugin for BloomPlugin { UniformComponentPlugin::::default(), )); - let render_app = match app.get_sub_app_mut(RenderApp) { - Ok(render_app) => render_app, - Err(_) => return, - }; - + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; render_app .init_resource::>() .init_resource::>() @@ -103,11 +99,7 @@ impl Plugin for BloomPlugin { } fn finish(&self, app: &mut App) { - let render_app = match app.get_sub_app_mut(RenderApp) { - Ok(render_app) => render_app, - Err(_) => return, - }; - + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; render_app .init_resource::() .init_resource::(); diff --git a/crates/bevy_core_pipeline/src/contrast_adaptive_sharpening/mod.rs b/crates/bevy_core_pipeline/src/contrast_adaptive_sharpening/mod.rs index b26c02b54754b..dbc82fe2512a5 100644 --- a/crates/bevy_core_pipeline/src/contrast_adaptive_sharpening/mod.rs +++ b/crates/bevy_core_pipeline/src/contrast_adaptive_sharpening/mod.rs @@ -113,10 +113,7 @@ impl Plugin for CASPlugin { UniformComponentPlugin::::default(), )); - let render_app = match app.get_sub_app_mut(RenderApp) { - Ok(render_app) => render_app, - Err(_) => return, - }; + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; render_app .init_resource::>() .add_systems(Render, prepare_cas_pipelines.in_set(RenderSet::Prepare)); @@ -152,10 +149,7 @@ impl Plugin for CASPlugin { } fn finish(&self, app: &mut App) { - let render_app = match app.get_sub_app_mut(RenderApp) { - Ok(render_app) => render_app, - Err(_) => return, - }; + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; render_app.init_resource::(); } } diff --git a/crates/bevy_core_pipeline/src/core_2d/mod.rs b/crates/bevy_core_pipeline/src/core_2d/mod.rs index d3d12130b393f..fd8d555952af0 100644 --- a/crates/bevy_core_pipeline/src/core_2d/mod.rs +++ b/crates/bevy_core_pipeline/src/core_2d/mod.rs @@ -47,11 +47,7 @@ impl Plugin for Core2dPlugin { app.register_type::() .add_plugins(ExtractComponentPlugin::::default()); - let render_app = match app.get_sub_app_mut(RenderApp) { - Ok(render_app) => render_app, - Err(_) => return, - }; - + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; render_app .init_resource::>() .add_systems(ExtractSchedule, extract_core_2d_camera_phases) diff --git a/crates/bevy_core_pipeline/src/core_3d/mod.rs b/crates/bevy_core_pipeline/src/core_3d/mod.rs index 29e7157165d13..bdb1858e3cb21 100644 --- a/crates/bevy_core_pipeline/src/core_3d/mod.rs +++ b/crates/bevy_core_pipeline/src/core_3d/mod.rs @@ -71,11 +71,7 @@ impl Plugin for Core3dPlugin { .register_type::() .add_plugins((SkyboxPlugin, ExtractComponentPlugin::::default())); - let render_app = match app.get_sub_app_mut(RenderApp) { - Ok(render_app) => render_app, - Err(_) => return, - }; - + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; render_app .init_resource::>() .init_resource::>() diff --git a/crates/bevy_core_pipeline/src/fxaa/mod.rs b/crates/bevy_core_pipeline/src/fxaa/mod.rs index 8b0c0433d96fb..4c2ece6a9eef5 100644 --- a/crates/bevy_core_pipeline/src/fxaa/mod.rs +++ b/crates/bevy_core_pipeline/src/fxaa/mod.rs @@ -87,10 +87,7 @@ impl Plugin for FxaaPlugin { app.register_type::(); app.add_plugins(ExtractComponentPlugin::::default()); - let render_app = match app.get_sub_app_mut(RenderApp) { - Ok(render_app) => render_app, - Err(_) => return, - }; + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; render_app .init_resource::>() .add_systems(Render, prepare_fxaa_pipelines.in_set(RenderSet::Prepare)) @@ -115,10 +112,7 @@ impl Plugin for FxaaPlugin { } fn finish(&self, app: &mut App) { - let render_app = match app.get_sub_app_mut(RenderApp) { - Ok(render_app) => render_app, - Err(_) => return, - }; + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; render_app.init_resource::(); } } diff --git a/crates/bevy_core_pipeline/src/msaa_writeback.rs b/crates/bevy_core_pipeline/src/msaa_writeback.rs index cf881b07b608e..a3c355c4fad92 100644 --- a/crates/bevy_core_pipeline/src/msaa_writeback.rs +++ b/crates/bevy_core_pipeline/src/msaa_writeback.rs @@ -20,10 +20,7 @@ pub struct MsaaWritebackPlugin; impl Plugin for MsaaWritebackPlugin { fn build(&self, app: &mut App) { - let Ok(render_app) = app.get_sub_app_mut(RenderApp) else { - return - }; - + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; render_app.add_systems( Render, queue_msaa_writeback_pipelines.in_set(RenderSet::Queue), diff --git a/crates/bevy_core_pipeline/src/skybox/mod.rs b/crates/bevy_core_pipeline/src/skybox/mod.rs index ccf21334aa10a..3dea7e4a25f6f 100644 --- a/crates/bevy_core_pipeline/src/skybox/mod.rs +++ b/crates/bevy_core_pipeline/src/skybox/mod.rs @@ -36,11 +36,7 @@ impl Plugin for SkyboxPlugin { app.add_plugins(ExtractComponentPlugin::::default()); - let render_app = match app.get_sub_app_mut(RenderApp) { - Ok(render_app) => render_app, - Err(_) => return, - }; - + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; render_app .init_resource::>() .add_systems( @@ -53,13 +49,8 @@ impl Plugin for SkyboxPlugin { } fn finish(&self, app: &mut App) { - let render_app = match app.get_sub_app_mut(RenderApp) { - Ok(render_app) => render_app, - Err(_) => return, - }; - - let render_device = render_app.world.resource::().clone(); - + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; + let render_device = render_app.world().resource::().clone(); render_app.insert_resource(SkyboxPipeline::new(&render_device)); } } diff --git a/crates/bevy_core_pipeline/src/taa/mod.rs b/crates/bevy_core_pipeline/src/taa/mod.rs index 01e75ddd15f50..a29c2b7f43b48 100644 --- a/crates/bevy_core_pipeline/src/taa/mod.rs +++ b/crates/bevy_core_pipeline/src/taa/mod.rs @@ -57,8 +57,7 @@ impl Plugin for TemporalAntiAliasPlugin { app.insert_resource(Msaa::Off) .register_type::(); - let Ok(render_app) = app.get_sub_app_mut(RenderApp) else { return }; - + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; render_app .init_resource::>() .add_systems(ExtractSchedule, extract_taa_settings) @@ -86,8 +85,7 @@ impl Plugin for TemporalAntiAliasPlugin { } fn finish(&self, app: &mut App) { - let Ok(render_app) = app.get_sub_app_mut(RenderApp) else { return }; - + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; render_app.init_resource::(); } } diff --git a/crates/bevy_core_pipeline/src/tonemapping/mod.rs b/crates/bevy_core_pipeline/src/tonemapping/mod.rs index c7a049604f8fd..0a70eabb383af 100644 --- a/crates/bevy_core_pipeline/src/tonemapping/mod.rs +++ b/crates/bevy_core_pipeline/src/tonemapping/mod.rs @@ -48,8 +48,8 @@ impl Plugin for TonemappingPlugin { Shader::from_wgsl ); - if !app.world.is_resource_added::() { - let mut images = app.world.resource_mut::>(); + if !app.world().is_resource_added::() { + let mut images = app.world_mut().resource_mut::>(); #[cfg(feature = "tonemapping_luts")] let tonemapping_luts = { @@ -92,20 +92,18 @@ impl Plugin for TonemappingPlugin { ExtractComponentPlugin::::default(), )); - if let Ok(render_app) = app.get_sub_app_mut(RenderApp) { - render_app - .init_resource::>() - .add_systems( - Render, - queue_view_tonemapping_pipelines.in_set(RenderSet::Queue), - ); - } + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; + render_app + .init_resource::>() + .add_systems( + Render, + queue_view_tonemapping_pipelines.in_set(RenderSet::Queue), + ); } fn finish(&self, app: &mut App) { - if let Ok(render_app) = app.get_sub_app_mut(RenderApp) { - render_app.init_resource::(); - } + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; + render_app.init_resource::(); } } diff --git a/crates/bevy_core_pipeline/src/upscaling/mod.rs b/crates/bevy_core_pipeline/src/upscaling/mod.rs index f3594397d5120..206cb3f8f2abd 100644 --- a/crates/bevy_core_pipeline/src/upscaling/mod.rs +++ b/crates/bevy_core_pipeline/src/upscaling/mod.rs @@ -13,7 +13,7 @@ pub struct UpscalingPlugin; impl Plugin for UpscalingPlugin { fn build(&self, app: &mut App) { - if let Ok(render_app) = app.get_sub_app_mut(RenderApp) { + if let Some(render_app) = app.get_sub_app_mut(&RenderApp) { render_app.add_systems( Render, queue_view_upscaling_pipelines.in_set(RenderSet::Queue), diff --git a/crates/bevy_diagnostic/src/diagnostic.rs b/crates/bevy_diagnostic/src/diagnostic.rs index 6fa04ce573f20..e8f4b7d40760b 100644 --- a/crates/bevy_diagnostic/src/diagnostic.rs +++ b/crates/bevy_diagnostic/src/diagnostic.rs @@ -1,4 +1,4 @@ -use bevy_app::App; +use bevy_app::{App, SubApp}; use bevy_ecs::system::{Deferred, Res, Resource, SystemBuffer, SystemParam}; use bevy_log::warn; use bevy_utils::{Duration, Instant, StableHashMap, Uuid}; @@ -283,10 +283,6 @@ impl SystemBuffer for DiagnosticsBuffer { /// Extend [`App`] with new `register_diagnostic` function. pub trait RegisterDiagnostic { - fn register_diagnostic(&mut self, diagnostic: Diagnostic) -> &mut Self; -} - -impl RegisterDiagnostic for App { /// Register a new [`Diagnostic`] with an [`App`]. /// /// Will initialize a [`DiagnosticsStore`] if it doesn't exist. @@ -302,11 +298,22 @@ impl RegisterDiagnostic for App { /// .add_plugins(DiagnosticsPlugin) /// .run(); /// ``` + fn register_diagnostic(&mut self, diagnostic: Diagnostic) -> &mut Self; +} + +impl RegisterDiagnostic for SubApp { fn register_diagnostic(&mut self, diagnostic: Diagnostic) -> &mut Self { self.init_resource::(); - let mut diagnostics = self.world.resource_mut::(); + let mut diagnostics = self.world_mut().resource_mut::(); diagnostics.add(diagnostic); self } } + +impl RegisterDiagnostic for App { + fn register_diagnostic(&mut self, diagnostic: Diagnostic) -> &mut Self { + SubApp::register_diagnostic(self.main_mut(), diagnostic); + self + } +} diff --git a/crates/bevy_gizmos/src/lib.rs b/crates/bevy_gizmos/src/lib.rs index 15e99651092a1..e3d382958f917 100644 --- a/crates/bevy_gizmos/src/lib.rs +++ b/crates/bevy_gizmos/src/lib.rs @@ -92,7 +92,7 @@ impl Plugin for GizmoPlugin { ), ); - let Ok(render_app) = app.get_sub_app_mut(RenderApp) else { return; }; + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; render_app .add_systems(ExtractSchedule, extract_gizmo_data) @@ -105,9 +105,9 @@ impl Plugin for GizmoPlugin { } fn finish(&self, app: &mut bevy_app::App) { - let Ok(render_app) = app.get_sub_app_mut(RenderApp) else { return; }; + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; - let render_device = render_app.world.resource::(); + let render_device = render_app.world().resource::(); let layout = render_device.create_bind_group_layout(&BindGroupLayoutDescriptor { entries: &[BindGroupLayoutEntry { binding: 0, diff --git a/crates/bevy_gizmos/src/pipeline_2d.rs b/crates/bevy_gizmos/src/pipeline_2d.rs index 06f21138d8a55..3570814d8904e 100644 --- a/crates/bevy_gizmos/src/pipeline_2d.rs +++ b/crates/bevy_gizmos/src/pipeline_2d.rs @@ -27,7 +27,7 @@ pub struct LineGizmo2dPlugin; impl Plugin for LineGizmo2dPlugin { fn build(&self, app: &mut App) { - let Ok(render_app) = app.get_sub_app_mut(RenderApp) else { return }; + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; render_app .add_render_command::() @@ -36,7 +36,7 @@ impl Plugin for LineGizmo2dPlugin { } fn finish(&self, app: &mut App) { - let Ok(render_app) = app.get_sub_app_mut(RenderApp) else { return }; + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; render_app.init_resource::(); } diff --git a/crates/bevy_gizmos/src/pipeline_3d.rs b/crates/bevy_gizmos/src/pipeline_3d.rs index 14f033f30455f..9cf945df35cba 100644 --- a/crates/bevy_gizmos/src/pipeline_3d.rs +++ b/crates/bevy_gizmos/src/pipeline_3d.rs @@ -25,7 +25,7 @@ use bevy_render::{ pub struct LineGizmo3dPlugin; impl Plugin for LineGizmo3dPlugin { fn build(&self, app: &mut App) { - let Ok(render_app) = app.get_sub_app_mut(RenderApp) else { return }; + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; render_app .add_render_command::() @@ -34,7 +34,7 @@ impl Plugin for LineGizmo3dPlugin { } fn finish(&self, app: &mut App) { - let Ok(render_app) = app.get_sub_app_mut(RenderApp) else { return }; + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; render_app.init_resource::(); } diff --git a/crates/bevy_gltf/src/lib.rs b/crates/bevy_gltf/src/lib.rs index 7277a906269f5..628b770bb9d79 100644 --- a/crates/bevy_gltf/src/lib.rs +++ b/crates/bevy_gltf/src/lib.rs @@ -40,7 +40,7 @@ impl GltfPlugin { impl Plugin for GltfPlugin { fn build(&self, app: &mut App) { - let supported_compressed_formats = match app.world.get_resource::() { + let supported_compressed_formats = match app.world().get_resource::() { Some(render_device) => CompressedImageFormats::from_features(render_device.features()), None => CompressedImageFormats::all(), diff --git a/crates/bevy_log/src/lib.rs b/crates/bevy_log/src/lib.rs index a912d7d984b5c..3ff3fa4b273c7 100644 --- a/crates/bevy_log/src/lib.rs +++ b/crates/bevy_log/src/lib.rs @@ -152,7 +152,7 @@ impl Plugin for LogPlugin { } })) .build(); - app.world.insert_non_send_resource(guard); + app.insert_non_send_resource(guard); chrome_layer }; diff --git a/crates/bevy_pbr/src/lib.rs b/crates/bevy_pbr/src/lib.rs index 2460a0e0f67df..555fdda638283 100644 --- a/crates/bevy_pbr/src/lib.rs +++ b/crates/bevy_pbr/src/lib.rs @@ -250,7 +250,7 @@ impl Plugin for PbrPlugin { ), ); - app.world + app.world_mut() .resource_mut::>() .set_untracked( Handle::::default(), @@ -261,10 +261,7 @@ impl Plugin for PbrPlugin { }, ); - let render_app = match app.get_sub_app_mut(RenderApp) { - Ok(render_app) => render_app, - Err(_) => return, - }; + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; // Extract the required data from the main world render_app @@ -303,8 +300,8 @@ impl Plugin for PbrPlugin { ) .init_resource::(); - let shadow_pass_node = ShadowPassNode::new(&mut render_app.world); - let mut graph = render_app.world.resource_mut::(); + let shadow_pass_node = ShadowPassNode::new(render_app.world_mut()); + let mut graph = render_app.world_mut().resource_mut::(); let draw_3d_graph = graph .get_sub_graph_mut(bevy_core_pipeline::core_3d::graph::NAME) .unwrap(); @@ -316,10 +313,7 @@ impl Plugin for PbrPlugin { } fn finish(&self, app: &mut App) { - let render_app = match app.get_sub_app_mut(RenderApp) { - Ok(render_app) => render_app, - Err(_) => return, - }; + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; // Extract the required data from the main world render_app diff --git a/crates/bevy_pbr/src/material.rs b/crates/bevy_pbr/src/material.rs index ec9e4364b9521..43d40fe18d1e3 100644 --- a/crates/bevy_pbr/src/material.rs +++ b/crates/bevy_pbr/src/material.rs @@ -190,7 +190,7 @@ where app.add_asset::() .add_plugins(ExtractComponentPlugin::>::extract_visible()); - if let Ok(render_app) = app.get_sub_app_mut(RenderApp) { + if let Some(render_app) = app.get_sub_app_mut(&RenderApp) { render_app .init_resource::>() .add_render_command::>() @@ -222,7 +222,7 @@ where } fn finish(&self, app: &mut App) { - if let Ok(render_app) = app.get_sub_app_mut(RenderApp) { + if let Some(render_app) = app.get_sub_app_mut(&RenderApp) { render_app.init_resource::>(); } } diff --git a/crates/bevy_pbr/src/prepass/mod.rs b/crates/bevy_pbr/src/prepass/mod.rs index a0364acd7fd0e..77e9472ed69d0 100644 --- a/crates/bevy_pbr/src/prepass/mod.rs +++ b/crates/bevy_pbr/src/prepass/mod.rs @@ -98,9 +98,7 @@ where Shader::from_wgsl ); - let Ok(render_app) = app.get_sub_app_mut(RenderApp) else { - return; - }; + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; render_app .add_systems( @@ -113,9 +111,7 @@ where } fn finish(&self, app: &mut bevy_app::App) { - let Ok(render_app) = app.get_sub_app_mut(RenderApp) else { - return; - }; + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; render_app.init_resource::>(); } @@ -137,7 +133,10 @@ where M::Data: PartialEq + Eq + Hash + Clone, { fn build(&self, app: &mut bevy_app::App) { - let no_prepass_plugin_loaded = app.world.get_resource::().is_none(); + let no_prepass_plugin_loaded = app + .world() + .get_resource::() + .is_none(); if no_prepass_plugin_loaded { app.insert_resource(AnyPrepassPluginLoaded) @@ -152,9 +151,7 @@ where ); } - let Ok(render_app) = app.get_sub_app_mut(RenderApp) else { - return; - }; + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; if no_prepass_plugin_loaded { render_app diff --git a/crates/bevy_pbr/src/render/fog.rs b/crates/bevy_pbr/src/render/fog.rs index 6c314ccd0495f..362bed0bdbb5f 100644 --- a/crates/bevy_pbr/src/render/fog.rs +++ b/crates/bevy_pbr/src/render/fog.rs @@ -140,7 +140,7 @@ impl Plugin for FogPlugin { app.register_type::(); app.add_plugins(ExtractComponentPlugin::::default()); - if let Ok(render_app) = app.get_sub_app_mut(RenderApp) { + if let Some(render_app) = app.get_sub_app_mut(&RenderApp) { render_app .init_resource::() .add_systems(Render, prepare_fog.in_set(RenderFogSystems::PrepareFog)) diff --git a/crates/bevy_pbr/src/render/mesh.rs b/crates/bevy_pbr/src/render/mesh.rs index aa4ab31e5dc7d..22b297e8a455a 100644 --- a/crates/bevy_pbr/src/render/mesh.rs +++ b/crates/bevy_pbr/src/render/mesh.rs @@ -123,7 +123,7 @@ impl Plugin for MeshRenderPlugin { app.add_plugins(UniformComponentPlugin::::default()); - if let Ok(render_app) = app.get_sub_app_mut(RenderApp) { + if let Some(render_app) = app.get_sub_app_mut(&RenderApp) { render_app .init_resource::() .init_resource::() @@ -145,7 +145,7 @@ impl Plugin for MeshRenderPlugin { } fn finish(&self, app: &mut bevy_app::App) { - if let Ok(render_app) = app.get_sub_app_mut(RenderApp) { + if let Some(render_app) = app.get_sub_app_mut(&RenderApp) { render_app.init_resource::(); } } diff --git a/crates/bevy_pbr/src/ssao/mod.rs b/crates/bevy_pbr/src/ssao/mod.rs index 276ee261a5e01..85f50a18fcabe 100644 --- a/crates/bevy_pbr/src/ssao/mod.rs +++ b/crates/bevy_pbr/src/ssao/mod.rs @@ -86,10 +86,10 @@ impl Plugin for ScreenSpaceAmbientOcclusionPlugin { } fn finish(&self, app: &mut App) { - let Ok(render_app) = app.get_sub_app_mut(RenderApp) else { return }; + let Some(render_app) = app.get_sub_app_mut(&RenderApp) else { return }; if !render_app - .world + .world() .resource::() .get_texture_format_features(TextureFormat::R16Float) .allowed_usages @@ -100,7 +100,7 @@ impl Plugin for ScreenSpaceAmbientOcclusionPlugin { } if render_app - .world + .world() .resource::() .limits() .max_storage_textures_per_shader_stage diff --git a/crates/bevy_pbr/src/wireframe.rs b/crates/bevy_pbr/src/wireframe.rs index 07898068fcd24..34390933a51a8 100644 --- a/crates/bevy_pbr/src/wireframe.rs +++ b/crates/bevy_pbr/src/wireframe.rs @@ -45,7 +45,7 @@ impl Plugin for WireframePlugin { ExtractComponentPlugin::::default(), )); - if let Ok(render_app) = app.get_sub_app_mut(RenderApp) { + if let Some(render_app) = app.get_sub_app_mut(&RenderApp) { render_app .add_render_command::() .init_resource::>() @@ -54,7 +54,7 @@ impl Plugin for WireframePlugin { } fn finish(&self, app: &mut bevy_app::App) { - if let Ok(render_app) = app.get_sub_app_mut(RenderApp) { + if let Some(render_app) = app.get_sub_app_mut(&RenderApp) { render_app.init_resource::(); } } diff --git a/crates/bevy_render/src/camera/mod.rs b/crates/bevy_render/src/camera/mod.rs index b57ae98dc7941..b2425d2caffa0 100644 --- a/crates/bevy_render/src/camera/mod.rs +++ b/crates/bevy_render/src/camera/mod.rs @@ -35,13 +35,13 @@ impl Plugin for CameraPlugin { ExtractResourcePlugin::::default(), )); - if let Ok(render_app) = app.get_sub_app_mut(RenderApp) { + if let Some(render_app) = app.get_sub_app_mut(&RenderApp) { render_app .init_resource::() .add_systems(ExtractSchedule, extract_cameras) .add_systems(Render, sort_cameras.in_set(RenderSet::Prepare)); - let camera_driver_node = CameraDriverNode::new(&mut render_app.world); - let mut render_graph = render_app.world.resource_mut::(); + let camera_driver_node = CameraDriverNode::new(render_app.world_mut()); + let mut render_graph = render_app.world_mut().resource_mut::(); render_graph.add_node(crate::main_graph::node::CAMERA_DRIVER, camera_driver_node); } } diff --git a/crates/bevy_render/src/extract_component.rs b/crates/bevy_render/src/extract_component.rs index 606c8ccbe09ac..73cac7c8084e1 100644 --- a/crates/bevy_render/src/extract_component.rs +++ b/crates/bevy_render/src/extract_component.rs @@ -80,7 +80,7 @@ impl Default for UniformComponentPlugin { impl Plugin for UniformComponentPlugin { fn build(&self, app: &mut App) { - if let Ok(render_app) = app.get_sub_app_mut(RenderApp) { + if let Some(render_app) = app.get_sub_app_mut(&RenderApp) { render_app .insert_resource(ComponentUniforms::::default()) .add_systems( @@ -181,7 +181,7 @@ impl ExtractComponentPlugin { impl Plugin for ExtractComponentPlugin { fn build(&self, app: &mut App) { - if let Ok(render_app) = app.get_sub_app_mut(RenderApp) { + if let Some(render_app) = app.get_sub_app_mut(&RenderApp) { if self.only_extract_visible { render_app.add_systems(ExtractSchedule, extract_visible_components::); } else { diff --git a/crates/bevy_render/src/extract_resource.rs b/crates/bevy_render/src/extract_resource.rs index ea8f7e81fd52c..b8ae7745c69da 100644 --- a/crates/bevy_render/src/extract_resource.rs +++ b/crates/bevy_render/src/extract_resource.rs @@ -31,7 +31,7 @@ impl Default for ExtractResourcePlugin { impl Plugin for ExtractResourcePlugin { fn build(&self, app: &mut App) { - if let Ok(render_app) = app.get_sub_app_mut(RenderApp) { + if let Some(render_app) = app.get_sub_app_mut(&RenderApp) { render_app.add_systems(ExtractSchedule, extract_resource::); } } diff --git a/crates/bevy_render/src/globals.rs b/crates/bevy_render/src/globals.rs index eb91d019f3cf6..b83989c5d0079 100644 --- a/crates/bevy_render/src/globals.rs +++ b/crates/bevy_render/src/globals.rs @@ -22,7 +22,7 @@ impl Plugin for GlobalsPlugin { load_internal_asset!(app, GLOBALS_TYPE_HANDLE, "globals.wgsl", Shader::from_wgsl); app.register_type::(); - if let Ok(render_app) = app.get_sub_app_mut(RenderApp) { + if let Some(render_app) = app.get_sub_app_mut(&RenderApp) { render_app .init_resource::() .init_resource::