diff --git a/examples/custom_material_shader.rs b/examples/custom_material_shader.rs index 727500b87e..bbe48e3469 100644 --- a/examples/custom_material_shader.rs +++ b/examples/custom_material_shader.rs @@ -1,7 +1,7 @@ use bevy::prelude::*; fn main() { - App::build().add_defaults().setup(setup).run(); + App::build().add_default_plugins().setup(setup).run(); } #[derive(Uniforms, Default)] diff --git a/examples/empty_defaults.rs b/examples/empty_defaults.rs index 4f9a20e060..1bdfbee6b3 100644 --- a/examples/empty_defaults.rs +++ b/examples/empty_defaults.rs @@ -1,5 +1,5 @@ use bevy::prelude::*; fn main() { - App::build().add_defaults().run(); + App::build().add_default_plugins().run(); } diff --git a/examples/entity_builder_comparison.rs b/examples/entity_builder_comparison.rs index e4ab9113e4..f4e7bbe9fc 100644 --- a/examples/entity_builder_comparison.rs +++ b/examples/entity_builder_comparison.rs @@ -1,7 +1,7 @@ use bevy::prelude::*; fn main() { - App::build().add_defaults().setup(setup).run(); + App::build().add_default_plugins().setup(setup).run(); } #[allow(dead_code)] diff --git a/examples/event.rs b/examples/event.rs index 9d1681a5ba..27eb22ac28 100644 --- a/examples/event.rs +++ b/examples/event.rs @@ -6,7 +6,7 @@ struct MyEvent { fn main() { App::build() - .add_defaults() + .add_default_plugins() .add_event::() .add_system(event_trigger_system()) .build_system(event_listener_system) diff --git a/examples/instancing.rs b/examples/instancing.rs index 919caa2731..2cf50aa7ed 100644 --- a/examples/instancing.rs +++ b/examples/instancing.rs @@ -3,7 +3,7 @@ use rand::{rngs::StdRng, Rng, SeedableRng}; fn main() { App::build() - .add_defaults() + .add_default_plugins() .add_system(build_move_system()) .add_plugin(DiagnosticsPlugin { print_diagnostics: true, diff --git a/examples/load_model.rs b/examples/load_model.rs index a044b28795..9e599081d0 100644 --- a/examples/load_model.rs +++ b/examples/load_model.rs @@ -2,5 +2,5 @@ use bevy::{asset, prelude::*}; fn main() { asset::load_gltf("examples/assets/Box.gltf").unwrap(); - App::build().add_defaults().run(); + App::build().add_default_plugins().run(); } diff --git a/examples/multiple_windows.rs b/examples/multiple_windows.rs index dc234cb55f..2ea2bd39f4 100644 --- a/examples/multiple_windows.rs +++ b/examples/multiple_windows.rs @@ -1,18 +1,17 @@ -use bevy::prelude::*; -use bevy::core::window::CreateWindow; +use bevy::{prelude::*, window::CreateWindow}; fn main() { - App::build().add_defaults().setup(setup).run(); + App::build().add_default_plugins().setup(setup).run(); } fn setup(_world: &mut World, resources: &mut Resources) { - let mut create_window_events = resources.get_mut::>().unwrap(); + let mut create_window_events = resources.get_mut::>().unwrap(); create_window_events.send(CreateWindow { descriptor: WindowDescriptor { width: 800, height: 600, vsync: false, title: "another window".to_string(), - } + }, }); -} \ No newline at end of file +} diff --git a/examples/parenting.rs b/examples/parenting.rs index 47c64908b2..85dc3f1267 100644 --- a/examples/parenting.rs +++ b/examples/parenting.rs @@ -4,7 +4,7 @@ struct Rotator; fn main() { App::build() - .add_defaults() + .add_default_plugins() .setup(setup) .add_system(build_rotator_system()) .run(); diff --git a/examples/plugin_loading/main.rs b/examples/plugin_loading/main.rs index a3cbaf8c9c..549f600860 100644 --- a/examples/plugin_loading/main.rs +++ b/examples/plugin_loading/main.rs @@ -2,7 +2,7 @@ use bevy::prelude::*; fn main() { App::build() - .add_defaults() + .add_default_plugins() .load_plugin(concat!( env!("CARGO_MANIFEST_DIR"), "/examples/plugin_loading/example_plugin/target/release/libexample_plugin.so" diff --git a/examples/scene.rs b/examples/scene.rs index 20cf2fce3c..46b1fabf7a 100644 --- a/examples/scene.rs +++ b/examples/scene.rs @@ -1,7 +1,7 @@ use bevy::prelude::*; fn main() { - App::build().add_defaults().setup(setup).run(); + App::build().add_default_plugins().setup(setup).run(); } fn setup(world: &mut World, resources: &mut Resources) { diff --git a/examples/serializing.rs b/examples/serializing.rs index b701b9c8f5..425f0f8d7e 100644 --- a/examples/serializing.rs +++ b/examples/serializing.rs @@ -2,7 +2,7 @@ use bevy::{prelude::*, serialization::*}; use serde::{Deserialize, Serialize}; use type_uuid::TypeUuid; fn main() { - let app = App::build().add_defaults().setup(setup).build(); + let app = App::build().add_default_plugins().setup(setup).build(); let comp_registrations = [ComponentRegistration::of::()]; diff --git a/examples/setup_system.rs b/examples/setup_system.rs index 0e6aaf0dc8..0b14a7406b 100644 --- a/examples/setup_system.rs +++ b/examples/setup_system.rs @@ -1,7 +1,7 @@ use bevy::prelude::*; fn main() { - App::build().add_defaults().add_setup_system(setup_system()).run(); + App::build().add_default_plugins().add_setup_system(setup_system()).run(); } pub fn setup_system() -> Box { diff --git a/examples/spawner.rs b/examples/spawner.rs index 3b0be3fbc6..370a1a7392 100644 --- a/examples/spawner.rs +++ b/examples/spawner.rs @@ -3,7 +3,7 @@ use rand::{rngs::StdRng, Rng, SeedableRng}; fn main() { App::build() - .add_defaults() + .add_default_plugins() .add_system(build_move_system()) .add_plugin(DiagnosticsPlugin { print_diagnostics: true, diff --git a/examples/texture.rs b/examples/texture.rs index 7f3d770250..4b2806bce8 100644 --- a/examples/texture.rs +++ b/examples/texture.rs @@ -1,7 +1,7 @@ use bevy::prelude::*; fn main() { - App::build().add_defaults().setup(setup).run(); + App::build().add_default_plugins().setup(setup).run(); } fn setup(world: &mut World, resources: &mut Resources) { diff --git a/examples/ui.rs b/examples/ui.rs index 11f74352e0..affd4a6df1 100644 --- a/examples/ui.rs +++ b/examples/ui.rs @@ -1,7 +1,7 @@ use bevy::prelude::*; fn main() { - App::build().add_defaults().setup(setup).run(); + App::build().add_default_plugins().setup(setup).run(); } fn setup(world: &mut World, resources: &mut Resources) { diff --git a/examples/ui_bench.rs b/examples/ui_bench.rs index c4606d1788..d74fc0f76c 100644 --- a/examples/ui_bench.rs +++ b/examples/ui_bench.rs @@ -2,7 +2,7 @@ use bevy::prelude::*; fn main() { App::build() - .add_defaults() + .add_default_plugins() .setup(setup) .add_system(build_move_system()) .add_plugin(DiagnosticsPlugin { diff --git a/src/app/app_builder.rs b/src/app/app_builder.rs index c8d7ad47c9..a57ac2c524 100644 --- a/src/app/app_builder.rs +++ b/src/app/app_builder.rs @@ -5,6 +5,7 @@ use crate::{ }, core::{CorePlugin, Events}, legion::prelude::{Resources, Runnable, Schedulable, Schedule, Universe, World}, + window::WindowPlugin, render::RenderPlugin, ui::UiPlugin, }; @@ -178,7 +179,10 @@ impl AppBuilder { T: Send + Sync + 'static, { self.add_resource(Events::::default()) - .add_system_to_stage(system_stage::EVENT_UPDATE, Events::::build_update_system()) + .add_system_to_stage( + system_stage::EVENT_UPDATE, + Events::::build_update_system(), + ) } pub fn add_resource(mut self, resource: T) -> Self @@ -194,15 +198,16 @@ impl AppBuilder { self } - pub fn add_defaults(mut self) -> Self { + pub fn add_default_plugins(mut self) -> Self { self = self .add_plugin(CorePlugin::default()) + .add_plugin(WindowPlugin::default()) .add_plugin(RenderPlugin::default()) .add_plugin(UiPlugin::default()); #[cfg(feature = "winit")] { - self = self.add_plugin(crate::core::window::winit::WinitPlugin::default()) + self = self.add_plugin(crate::window::winit::WinitPlugin::default()) } #[cfg(not(feature = "winit"))] { diff --git a/src/core/core_plugin.rs b/src/core/core_plugin.rs index fb0535fb1e..f615ee9620 100644 --- a/src/core/core_plugin.rs +++ b/src/core/core_plugin.rs @@ -1,18 +1,9 @@ -use super::{CreateWindow, Time, WindowCreated, WindowResized, Windows, Events, WindowDescriptor}; use crate::app::{plugin::AppPlugin, AppBuilder}; use bevy_transform::transform_system_bundle; +use super::Time; -pub struct CorePlugin { - pub primary_window: Option, -} - -impl Default for CorePlugin { - fn default() -> Self { - CorePlugin { - primary_window: Some(WindowDescriptor::default()), - } - } -} +#[derive(Default)] +pub struct CorePlugin; impl AppPlugin for CorePlugin { fn build(&self, mut app: AppBuilder) -> AppBuilder { @@ -20,20 +11,8 @@ impl AppPlugin for CorePlugin { app = app.add_system(transform_system); } - app = app.add_event::() - .add_event::() - .add_event::() - .add_resource(Windows::default()) - .add_resource(Time::new()); - - if let Some(ref primary_window_descriptor) = self.primary_window { - let mut create_window_event = app.resources.get_mut::>().unwrap(); - create_window_event.send(CreateWindow { - descriptor: primary_window_descriptor.clone(), - }); - } - app + .add_resource(Time::new()) } fn name(&self) -> &'static str { diff --git a/src/core/mod.rs b/src/core/mod.rs index 98e796b8b6..11c8982e69 100644 --- a/src/core/mod.rs +++ b/src/core/mod.rs @@ -1,11 +1,9 @@ pub mod bytes; mod time; -pub mod window; mod core_plugin; pub mod event; pub use bytes::*; pub use time::*; -pub use window::*; pub use core_plugin::*; pub use event::*; \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index fbc73e6c56..b2e3a1d73c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,6 +8,7 @@ pub mod prelude; pub mod render; pub mod serialization; pub mod ui; +pub mod window; pub use bevy_transform as transform; pub use glam as math; diff --git a/src/prelude.rs b/src/prelude.rs index aad50fc06c..5fc00de9c1 100644 --- a/src/prelude.rs +++ b/src/prelude.rs @@ -1,7 +1,8 @@ pub use crate::{ app::{plugin::AppPlugin, App, AppBuilder}, asset::{Asset, AssetStorage, Handle}, - core::{Events, EventReader, GetEventReader, Time, Window, Windows, WindowDescriptor}, + window::{Window, Windows, WindowDescriptor, WindowPlugin}, + core::{Events, EventReader, GetEventReader, Time}, diagnostic::DiagnosticsPlugin, ecs, ecs::{ diff --git a/src/render/render_plugin.rs b/src/render/render_plugin.rs index d5c39d5a78..522d025473 100644 --- a/src/render/render_plugin.rs +++ b/src/render/render_plugin.rs @@ -14,7 +14,7 @@ use super::{ AssetBatchers, EntityRenderResourceAssignments, RenderResourceAssignments, }, }; -use crate::{core::WindowResized, prelude::*}; +use crate::{prelude::*, window::WindowResized}; #[derive(Default)] pub struct RenderPlugin; diff --git a/src/render/render_resource/resource_providers/camera2d_resource_provider.rs b/src/render/render_resource/resource_providers/camera2d_resource_provider.rs index e1e3c5d002..e7711776f8 100644 --- a/src/render/render_resource/resource_providers/camera2d_resource_provider.rs +++ b/src/render/render_resource/resource_providers/camera2d_resource_provider.rs @@ -1,5 +1,5 @@ use crate::{ - core::WindowResized, + window::WindowResized, prelude::*, render::{ render_resource::{ diff --git a/src/render/render_resource/resource_providers/camera_resource_provider.rs b/src/render/render_resource/resource_providers/camera_resource_provider.rs index 032d05a371..36aed32a26 100644 --- a/src/render/render_resource/resource_providers/camera_resource_provider.rs +++ b/src/render/render_resource/resource_providers/camera_resource_provider.rs @@ -1,5 +1,5 @@ use crate::{ - core::WindowResized, + window::WindowResized, prelude::*, render::{ render_resource::{ diff --git a/src/render/render_resource/resource_providers/frame_texture_resource_provider.rs b/src/render/render_resource/resource_providers/frame_texture_resource_provider.rs index 4a3719ce42..f752ba1907 100644 --- a/src/render/render_resource/resource_providers/frame_texture_resource_provider.rs +++ b/src/render/render_resource/resource_providers/frame_texture_resource_provider.rs @@ -1,5 +1,5 @@ use crate::{ - core::Windows, + window::Windows, prelude::World, render::{ render_resource::{RenderResourceAssignments, ResourceProvider}, diff --git a/src/render/renderer/renderers/wgpu_renderer/mod.rs b/src/render/renderer/renderers/wgpu_renderer/mod.rs index 22148f52a9..5260bfa66e 100644 --- a/src/render/renderer/renderers/wgpu_renderer/mod.rs +++ b/src/render/renderer/renderers/wgpu_renderer/mod.rs @@ -9,8 +9,8 @@ pub use wgpu_resources::*; use crate::{ app::{plugin::AppPlugin, system_stage, AppBuilder}, - core::{Events, WindowCreated, WindowResized}, - render::renderer::Renderer, + core::Events, + render::renderer::Renderer, window::{WindowCreated, WindowResized}, }; use legion::prelude::*; diff --git a/src/render/renderer/renderers/wgpu_renderer/wgpu_renderer.rs b/src/render/renderer/renderers/wgpu_renderer/wgpu_renderer.rs index 29b6f07520..6febd890a9 100644 --- a/src/render/renderer/renderers/wgpu_renderer/wgpu_renderer.rs +++ b/src/render/renderer/renderers/wgpu_renderer/wgpu_renderer.rs @@ -1,9 +1,7 @@ use super::{wgpu_type_converter::OwnedWgpuVertexBufferDescriptor, WgpuRenderPass, WgpuResources}; use crate::{ asset::{AssetStorage, Handle}, - core::{ - winit::WinitWindows, Events, EventReader, Window, WindowCreated, WindowResized, Windows, - }, + core::{EventReader, Events}, legion::prelude::*, render::{ pass::{ @@ -20,6 +18,7 @@ use crate::{ shader::Shader, texture::{SamplerDescriptor, TextureDescriptor}, }, + window::{winit::WinitWindows, Window, WindowCreated, WindowResized, Windows}, }; use std::{ cell::RefCell, @@ -270,10 +269,12 @@ impl WgpuRenderer { } _ => match global_render_resource_assignments.get(name) { Some(resource) => wgpu_resources.textures.get(&resource).unwrap(), - None => if let Some(swap_chain_output) = swap_chain_outputs.get(name) { - &swap_chain_output.view - } else { - panic!("Color attachment {} does not exist", name); + None => { + if let Some(swap_chain_output) = swap_chain_outputs.get(name) { + &swap_chain_output.view + } else { + panic!("Color attachment {} does not exist", name); + } } }, } diff --git a/src/render/renderer/renderers/wgpu_renderer/wgpu_resources.rs b/src/render/renderer/renderers/wgpu_renderer/wgpu_resources.rs index 0ee5812e11..476a866060 100644 --- a/src/render/renderer/renderers/wgpu_renderer/wgpu_resources.rs +++ b/src/render/renderer/renderers/wgpu_renderer/wgpu_resources.rs @@ -10,7 +10,8 @@ use crate::{ }, renderer::Renderer, texture::{SamplerDescriptor, TextureDescriptor}, - }, core::WindowId, + }, + window::WindowId, }; use std::collections::HashMap; @@ -59,7 +60,10 @@ impl WgpuResources { if let Some((render_resource_set_id, _indices)) = render_resource_assignments.get_render_resource_set_id(bind_group_descriptor.id) { - log::debug!("start creating bind group for RenderResourceSet {:?}", render_resource_set_id); + log::debug!( + "start creating bind group for RenderResourceSet {:?}", + render_resource_set_id + ); let bindings = bind_group_descriptor .bindings .iter() @@ -127,8 +131,11 @@ impl WgpuResources { bind_group_info .bind_groups .insert(*render_resource_set_id, bind_group); - - log::debug!("created bind group for RenderResourceSet {:?}", render_resource_set_id); + + log::debug!( + "created bind group for RenderResourceSet {:?}", + render_resource_set_id + ); log::trace!("{:#?}", bind_group_descriptor); return true; } else { diff --git a/src/render/renderer/renderers/wgpu_renderer/wgpu_type_converter.rs b/src/render/renderer/renderers/wgpu_renderer/wgpu_type_converter.rs index c7204b3fd8..32f827bd3a 100644 --- a/src/render/renderer/renderers/wgpu_renderer/wgpu_type_converter.rs +++ b/src/render/renderer/renderers/wgpu_renderer/wgpu_type_converter.rs @@ -1,5 +1,4 @@ use crate::{ - core::Window, prelude::Color, render::{ pass::{LoadOp, StoreOp}, @@ -19,6 +18,7 @@ use crate::{ TextureDescriptor, TextureDimension, TextureFormat, TextureUsage, TextureViewDimension, }, }, + window::Window, }; impl From for wgpu::VertexFormat { diff --git a/src/core/window/events.rs b/src/window/events.rs similarity index 100% rename from src/core/window/events.rs rename to src/window/events.rs diff --git a/src/core/window/mod.rs b/src/window/mod.rs similarity index 96% rename from src/core/window/mod.rs rename to src/window/mod.rs index 7e7acfcfec..412c857113 100644 --- a/src/core/window/mod.rs +++ b/src/window/mod.rs @@ -2,9 +2,11 @@ pub mod winit; mod events; mod windows; +mod window_plugin; pub use events::*; pub use windows::*; +pub use window_plugin::*; use uuid::Uuid; diff --git a/src/window/window_plugin.rs b/src/window/window_plugin.rs new file mode 100644 index 0000000000..bc6781a04c --- /dev/null +++ b/src/window/window_plugin.rs @@ -0,0 +1,36 @@ +use super::{CreateWindow, WindowCreated, WindowResized, Windows, WindowDescriptor}; +use crate::{core::Events, app::{plugin::AppPlugin, AppBuilder}}; + +pub struct WindowPlugin { + pub primary_window: Option, +} + +impl Default for WindowPlugin { + fn default() -> Self { + WindowPlugin { + primary_window: Some(WindowDescriptor::default()), + } + } +} + +impl AppPlugin for WindowPlugin { + fn build(&self, mut app: AppBuilder) -> AppBuilder { + app = app.add_event::() + .add_event::() + .add_event::() + .add_resource(Windows::default()); + + if let Some(ref primary_window_descriptor) = self.primary_window { + let mut create_window_event = app.resources.get_mut::>().unwrap(); + create_window_event.send(CreateWindow { + descriptor: primary_window_descriptor.clone(), + }); + } + + app + } + + fn name(&self) -> &'static str { + "Window" + } +} diff --git a/src/core/window/windows.rs b/src/window/windows.rs similarity index 100% rename from src/core/window/windows.rs rename to src/window/windows.rs diff --git a/src/core/window/winit/mod.rs b/src/window/winit/mod.rs similarity index 100% rename from src/core/window/winit/mod.rs rename to src/window/winit/mod.rs diff --git a/src/core/window/winit/winit_windows.rs b/src/window/winit/winit_windows.rs similarity index 96% rename from src/core/window/winit/winit_windows.rs rename to src/window/winit/winit_windows.rs index 2803210e93..2f6f029d1a 100644 --- a/src/core/window/winit/winit_windows.rs +++ b/src/window/winit/winit_windows.rs @@ -1,4 +1,4 @@ -use crate::{core::WindowId, prelude::*}; +use crate::{window::WindowId, prelude::*}; use std::collections::HashMap; #[derive(Default)]