make window its own plugin and rename add_defaults to add_default_plugins
This commit is contained in:
		
							parent
							
								
									f6f8ba2cb6
								
							
						
					
					
						commit
						5cbf606ef7
					
				| @ -1,7 +1,7 @@ | |||||||
| use bevy::prelude::*; | use bevy::prelude::*; | ||||||
| 
 | 
 | ||||||
| fn main() { | fn main() { | ||||||
|     App::build().add_defaults().setup(setup).run(); |     App::build().add_default_plugins().setup(setup).run(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[derive(Uniforms, Default)] | #[derive(Uniforms, Default)] | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| use bevy::prelude::*; | use bevy::prelude::*; | ||||||
| 
 | 
 | ||||||
| fn main() { | fn main() { | ||||||
|     App::build().add_defaults().run(); |     App::build().add_default_plugins().run(); | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| use bevy::prelude::*; | use bevy::prelude::*; | ||||||
| 
 | 
 | ||||||
| fn main() { | fn main() { | ||||||
|     App::build().add_defaults().setup(setup).run(); |     App::build().add_default_plugins().setup(setup).run(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[allow(dead_code)] | #[allow(dead_code)] | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ struct MyEvent { | |||||||
| 
 | 
 | ||||||
| fn main() { | fn main() { | ||||||
|     App::build() |     App::build() | ||||||
|         .add_defaults() |         .add_default_plugins() | ||||||
|         .add_event::<MyEvent>() |         .add_event::<MyEvent>() | ||||||
|         .add_system(event_trigger_system()) |         .add_system(event_trigger_system()) | ||||||
|         .build_system(event_listener_system) |         .build_system(event_listener_system) | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ use rand::{rngs::StdRng, Rng, SeedableRng}; | |||||||
| 
 | 
 | ||||||
| fn main() { | fn main() { | ||||||
|     App::build() |     App::build() | ||||||
|         .add_defaults() |         .add_default_plugins() | ||||||
|         .add_system(build_move_system()) |         .add_system(build_move_system()) | ||||||
|         .add_plugin(DiagnosticsPlugin { |         .add_plugin(DiagnosticsPlugin { | ||||||
|             print_diagnostics: true, |             print_diagnostics: true, | ||||||
|  | |||||||
| @ -2,5 +2,5 @@ use bevy::{asset, prelude::*}; | |||||||
| 
 | 
 | ||||||
| fn main() { | fn main() { | ||||||
|     asset::load_gltf("examples/assets/Box.gltf").unwrap(); |     asset::load_gltf("examples/assets/Box.gltf").unwrap(); | ||||||
|     App::build().add_defaults().run(); |     App::build().add_default_plugins().run(); | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,18 +1,17 @@ | |||||||
| use bevy::prelude::*; | use bevy::{prelude::*, window::CreateWindow}; | ||||||
| use bevy::core::window::CreateWindow; |  | ||||||
| 
 | 
 | ||||||
| fn main() { | 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) { | fn setup(_world: &mut World, resources: &mut Resources) { | ||||||
|     let mut create_window_events = resources.get_mut::<Event<CreateWindow>>().unwrap(); |     let mut create_window_events = resources.get_mut::<Events<CreateWindow>>().unwrap(); | ||||||
|     create_window_events.send(CreateWindow { |     create_window_events.send(CreateWindow { | ||||||
|         descriptor: WindowDescriptor { |         descriptor: WindowDescriptor { | ||||||
|             width: 800, |             width: 800, | ||||||
|             height: 600, |             height: 600, | ||||||
|             vsync: false, |             vsync: false, | ||||||
|             title: "another window".to_string(), |             title: "another window".to_string(), | ||||||
|         } |         }, | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
| @ -4,7 +4,7 @@ struct Rotator; | |||||||
| 
 | 
 | ||||||
| fn main() { | fn main() { | ||||||
|     App::build() |     App::build() | ||||||
|         .add_defaults() |         .add_default_plugins() | ||||||
|         .setup(setup) |         .setup(setup) | ||||||
|         .add_system(build_rotator_system()) |         .add_system(build_rotator_system()) | ||||||
|         .run(); |         .run(); | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ use bevy::prelude::*; | |||||||
| 
 | 
 | ||||||
| fn main() { | fn main() { | ||||||
|     App::build() |     App::build() | ||||||
|         .add_defaults() |         .add_default_plugins() | ||||||
|         .load_plugin(concat!( |         .load_plugin(concat!( | ||||||
|             env!("CARGO_MANIFEST_DIR"), |             env!("CARGO_MANIFEST_DIR"), | ||||||
|             "/examples/plugin_loading/example_plugin/target/release/libexample_plugin.so" |             "/examples/plugin_loading/example_plugin/target/release/libexample_plugin.so" | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| use bevy::prelude::*; | use bevy::prelude::*; | ||||||
| 
 | 
 | ||||||
| fn main() { | 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) { | fn setup(world: &mut World, resources: &mut Resources) { | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ use bevy::{prelude::*, serialization::*}; | |||||||
| use serde::{Deserialize, Serialize}; | use serde::{Deserialize, Serialize}; | ||||||
| use type_uuid::TypeUuid; | use type_uuid::TypeUuid; | ||||||
| fn main() { | 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::<Test>()]; |     let comp_registrations = [ComponentRegistration::of::<Test>()]; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| use bevy::prelude::*; | use bevy::prelude::*; | ||||||
| 
 | 
 | ||||||
| fn main() { | 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<dyn Schedulable> { | pub fn setup_system() -> Box<dyn Schedulable> { | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ use rand::{rngs::StdRng, Rng, SeedableRng}; | |||||||
| 
 | 
 | ||||||
| fn main() { | fn main() { | ||||||
|     App::build() |     App::build() | ||||||
|         .add_defaults() |         .add_default_plugins() | ||||||
|         .add_system(build_move_system()) |         .add_system(build_move_system()) | ||||||
|         .add_plugin(DiagnosticsPlugin { |         .add_plugin(DiagnosticsPlugin { | ||||||
|             print_diagnostics: true, |             print_diagnostics: true, | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| use bevy::prelude::*; | use bevy::prelude::*; | ||||||
| 
 | 
 | ||||||
| fn main() { | 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) { | fn setup(world: &mut World, resources: &mut Resources) { | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| use bevy::prelude::*; | use bevy::prelude::*; | ||||||
| 
 | 
 | ||||||
| fn main() { | 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) { | fn setup(world: &mut World, resources: &mut Resources) { | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ use bevy::prelude::*; | |||||||
| 
 | 
 | ||||||
| fn main() { | fn main() { | ||||||
|     App::build() |     App::build() | ||||||
|         .add_defaults() |         .add_default_plugins() | ||||||
|         .setup(setup) |         .setup(setup) | ||||||
|         .add_system(build_move_system()) |         .add_system(build_move_system()) | ||||||
|         .add_plugin(DiagnosticsPlugin { |         .add_plugin(DiagnosticsPlugin { | ||||||
|  | |||||||
| @ -5,6 +5,7 @@ use crate::{ | |||||||
|     }, |     }, | ||||||
|     core::{CorePlugin, Events}, |     core::{CorePlugin, Events}, | ||||||
|     legion::prelude::{Resources, Runnable, Schedulable, Schedule, Universe, World}, |     legion::prelude::{Resources, Runnable, Schedulable, Schedule, Universe, World}, | ||||||
|  |     window::WindowPlugin, | ||||||
|     render::RenderPlugin, |     render::RenderPlugin, | ||||||
|     ui::UiPlugin, |     ui::UiPlugin, | ||||||
| }; | }; | ||||||
| @ -178,7 +179,10 @@ impl AppBuilder { | |||||||
|         T: Send + Sync + 'static, |         T: Send + Sync + 'static, | ||||||
|     { |     { | ||||||
|         self.add_resource(Events::<T>::default()) |         self.add_resource(Events::<T>::default()) | ||||||
|             .add_system_to_stage(system_stage::EVENT_UPDATE, Events::<T>::build_update_system()) |             .add_system_to_stage( | ||||||
|  |                 system_stage::EVENT_UPDATE, | ||||||
|  |                 Events::<T>::build_update_system(), | ||||||
|  |             ) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     pub fn add_resource<T>(mut self, resource: T) -> Self |     pub fn add_resource<T>(mut self, resource: T) -> Self | ||||||
| @ -194,15 +198,16 @@ impl AppBuilder { | |||||||
|         self |         self | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     pub fn add_defaults(mut self) -> Self { |     pub fn add_default_plugins(mut self) -> Self { | ||||||
|         self = self |         self = self | ||||||
|             .add_plugin(CorePlugin::default()) |             .add_plugin(CorePlugin::default()) | ||||||
|  |             .add_plugin(WindowPlugin::default()) | ||||||
|             .add_plugin(RenderPlugin::default()) |             .add_plugin(RenderPlugin::default()) | ||||||
|             .add_plugin(UiPlugin::default()); |             .add_plugin(UiPlugin::default()); | ||||||
| 
 | 
 | ||||||
|         #[cfg(feature = "winit")] |         #[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"))] |         #[cfg(not(feature = "winit"))] | ||||||
|         { |         { | ||||||
|  | |||||||
| @ -1,18 +1,9 @@ | |||||||
| use super::{CreateWindow, Time, WindowCreated, WindowResized, Windows, Events, WindowDescriptor}; |  | ||||||
| use crate::app::{plugin::AppPlugin, AppBuilder}; | use crate::app::{plugin::AppPlugin, AppBuilder}; | ||||||
| use bevy_transform::transform_system_bundle; | use bevy_transform::transform_system_bundle; | ||||||
|  | use super::Time; | ||||||
| 
 | 
 | ||||||
| pub struct CorePlugin { | #[derive(Default)] | ||||||
|     pub primary_window: Option<WindowDescriptor>, | pub struct CorePlugin; | ||||||
| } |  | ||||||
| 
 |  | ||||||
| impl Default for CorePlugin { |  | ||||||
|     fn default() -> Self { |  | ||||||
|         CorePlugin { |  | ||||||
|             primary_window: Some(WindowDescriptor::default()), |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| impl AppPlugin for CorePlugin { | impl AppPlugin for CorePlugin { | ||||||
|     fn build(&self, mut app: AppBuilder) -> AppBuilder { |     fn build(&self, mut app: AppBuilder) -> AppBuilder { | ||||||
| @ -20,20 +11,8 @@ impl AppPlugin for CorePlugin { | |||||||
|             app = app.add_system(transform_system); |             app = app.add_system(transform_system); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         app = app.add_event::<WindowResized>() |  | ||||||
|             .add_event::<CreateWindow>() |  | ||||||
|             .add_event::<WindowCreated>() |  | ||||||
|             .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::<Events<CreateWindow>>().unwrap(); |  | ||||||
|             create_window_event.send(CreateWindow { |  | ||||||
|                 descriptor: primary_window_descriptor.clone(), 
 |  | ||||||
|             }); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         app |         app | ||||||
|  |             .add_resource(Time::new()) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn name(&self) -> &'static str { |     fn name(&self) -> &'static str { | ||||||
|  | |||||||
| @ -1,11 +1,9 @@ | |||||||
| pub mod bytes; | pub mod bytes; | ||||||
| mod time; | mod time; | ||||||
| pub mod window; |  | ||||||
| mod core_plugin; | mod core_plugin; | ||||||
| pub mod event; | pub mod event; | ||||||
| 
 | 
 | ||||||
| pub use bytes::*; | pub use bytes::*; | ||||||
| pub use time::*; | pub use time::*; | ||||||
| pub use window::*; |  | ||||||
| pub use core_plugin::*; | pub use core_plugin::*; | ||||||
| pub use event::*; | pub use event::*; | ||||||
| @ -8,6 +8,7 @@ pub mod prelude; | |||||||
| pub mod render; | pub mod render; | ||||||
| pub mod serialization; | pub mod serialization; | ||||||
| pub mod ui; | pub mod ui; | ||||||
|  | pub mod window; | ||||||
| 
 | 
 | ||||||
| pub use bevy_transform as transform; | pub use bevy_transform as transform; | ||||||
| pub use glam as math; | pub use glam as math; | ||||||
|  | |||||||
| @ -1,7 +1,8 @@ | |||||||
| pub use crate::{ | pub use crate::{ | ||||||
|     app::{plugin::AppPlugin, App, AppBuilder}, |     app::{plugin::AppPlugin, App, AppBuilder}, | ||||||
|     asset::{Asset, AssetStorage, Handle}, |     asset::{Asset, AssetStorage, Handle}, | ||||||
|     core::{Events, EventReader, GetEventReader, Time, Window, Windows, WindowDescriptor}, |     window::{Window, Windows, WindowDescriptor, WindowPlugin}, | ||||||
|  |     core::{Events, EventReader, GetEventReader, Time}, | ||||||
|     diagnostic::DiagnosticsPlugin, |     diagnostic::DiagnosticsPlugin, | ||||||
|     ecs, |     ecs, | ||||||
|     ecs::{ |     ecs::{ | ||||||
|  | |||||||
| @ -14,7 +14,7 @@ use super::{ | |||||||
|         AssetBatchers, EntityRenderResourceAssignments, RenderResourceAssignments, |         AssetBatchers, EntityRenderResourceAssignments, RenderResourceAssignments, | ||||||
|     }, |     }, | ||||||
| }; | }; | ||||||
| use crate::{core::WindowResized, prelude::*}; | use crate::{prelude::*, window::WindowResized}; | ||||||
| 
 | 
 | ||||||
| #[derive(Default)] | #[derive(Default)] | ||||||
| pub struct RenderPlugin; | pub struct RenderPlugin; | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| use crate::{ | use crate::{ | ||||||
|     core::WindowResized, |     window::WindowResized, | ||||||
|     prelude::*, |     prelude::*, | ||||||
|     render::{ |     render::{ | ||||||
|         render_resource::{ |         render_resource::{ | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| use crate::{ | use crate::{ | ||||||
|     core::WindowResized, |     window::WindowResized, | ||||||
|     prelude::*, |     prelude::*, | ||||||
|     render::{ |     render::{ | ||||||
|         render_resource::{ |         render_resource::{ | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| use crate::{ | use crate::{ | ||||||
|     core::Windows, |     window::Windows, | ||||||
|     prelude::World, |     prelude::World, | ||||||
|     render::{ |     render::{ | ||||||
|         render_resource::{RenderResourceAssignments, ResourceProvider}, |         render_resource::{RenderResourceAssignments, ResourceProvider}, | ||||||
|  | |||||||
| @ -9,8 +9,8 @@ pub use wgpu_resources::*; | |||||||
| 
 | 
 | ||||||
| use crate::{ | use crate::{ | ||||||
|     app::{plugin::AppPlugin, system_stage, AppBuilder}, |     app::{plugin::AppPlugin, system_stage, AppBuilder}, | ||||||
|     core::{Events, WindowCreated, WindowResized}, |     core::Events, | ||||||
|     render::renderer::Renderer, |     render::renderer::Renderer, window::{WindowCreated, WindowResized}, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| use legion::prelude::*; | use legion::prelude::*; | ||||||
|  | |||||||
| @ -1,9 +1,7 @@ | |||||||
| use super::{wgpu_type_converter::OwnedWgpuVertexBufferDescriptor, WgpuRenderPass, WgpuResources}; | use super::{wgpu_type_converter::OwnedWgpuVertexBufferDescriptor, WgpuRenderPass, WgpuResources}; | ||||||
| use crate::{ | use crate::{ | ||||||
|     asset::{AssetStorage, Handle}, |     asset::{AssetStorage, Handle}, | ||||||
|     core::{ |     core::{EventReader, Events}, | ||||||
|         winit::WinitWindows, Events, EventReader, Window, WindowCreated, WindowResized, Windows, |  | ||||||
|     }, |  | ||||||
|     legion::prelude::*, |     legion::prelude::*, | ||||||
|     render::{ |     render::{ | ||||||
|         pass::{ |         pass::{ | ||||||
| @ -20,6 +18,7 @@ use crate::{ | |||||||
|         shader::Shader, |         shader::Shader, | ||||||
|         texture::{SamplerDescriptor, TextureDescriptor}, |         texture::{SamplerDescriptor, TextureDescriptor}, | ||||||
|     }, |     }, | ||||||
|  |     window::{winit::WinitWindows, Window, WindowCreated, WindowResized, Windows}, | ||||||
| }; | }; | ||||||
| use std::{ | use std::{ | ||||||
|     cell::RefCell, |     cell::RefCell, | ||||||
| @ -270,11 +269,13 @@ impl WgpuRenderer { | |||||||
|             } |             } | ||||||
|             _ => match global_render_resource_assignments.get(name) { |             _ => match global_render_resource_assignments.get(name) { | ||||||
|                 Some(resource) => wgpu_resources.textures.get(&resource).unwrap(), |                 Some(resource) => wgpu_resources.textures.get(&resource).unwrap(), | ||||||
|                 None => if let Some(swap_chain_output) = swap_chain_outputs.get(name) { |                 None => { | ||||||
|  |                     if let Some(swap_chain_output) = swap_chain_outputs.get(name) { | ||||||
|                         &swap_chain_output.view |                         &swap_chain_output.view | ||||||
|                     } else { |                     } else { | ||||||
|                         panic!("Color attachment {} does not exist", name); |                         panic!("Color attachment {} does not exist", name); | ||||||
|                     } |                     } | ||||||
|  |                 } | ||||||
|             }, |             }, | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -10,7 +10,8 @@ use crate::{ | |||||||
|         }, |         }, | ||||||
|         renderer::Renderer, |         renderer::Renderer, | ||||||
|         texture::{SamplerDescriptor, TextureDescriptor}, |         texture::{SamplerDescriptor, TextureDescriptor}, | ||||||
|     }, core::WindowId, |     }, | ||||||
|  |     window::WindowId, | ||||||
| }; | }; | ||||||
| use std::collections::HashMap; | use std::collections::HashMap; | ||||||
| 
 | 
 | ||||||
| @ -59,7 +60,10 @@ impl WgpuResources { | |||||||
|         if let Some((render_resource_set_id, _indices)) = |         if let Some((render_resource_set_id, _indices)) = | ||||||
|             render_resource_assignments.get_render_resource_set_id(bind_group_descriptor.id) |             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 |             let bindings = bind_group_descriptor | ||||||
|                 .bindings |                 .bindings | ||||||
|                 .iter() |                 .iter() | ||||||
| @ -128,7 +132,10 @@ impl WgpuResources { | |||||||
|                 .bind_groups |                 .bind_groups | ||||||
|                 .insert(*render_resource_set_id, bind_group); |                 .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); |             log::trace!("{:#?}", bind_group_descriptor); | ||||||
|             return true; |             return true; | ||||||
|         } else { |         } else { | ||||||
|  | |||||||
| @ -1,5 +1,4 @@ | |||||||
| use crate::{ | use crate::{ | ||||||
|     core::Window, |  | ||||||
|     prelude::Color, |     prelude::Color, | ||||||
|     render::{ |     render::{ | ||||||
|         pass::{LoadOp, StoreOp}, |         pass::{LoadOp, StoreOp}, | ||||||
| @ -19,6 +18,7 @@ use crate::{ | |||||||
|             TextureDescriptor, TextureDimension, TextureFormat, TextureUsage, TextureViewDimension, |             TextureDescriptor, TextureDimension, TextureFormat, TextureUsage, TextureViewDimension, | ||||||
|         }, |         }, | ||||||
|     }, |     }, | ||||||
|  |     window::Window, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| impl From<VertexFormat> for wgpu::VertexFormat { | impl From<VertexFormat> for wgpu::VertexFormat { | ||||||
|  | |||||||
| @ -2,9 +2,11 @@ | |||||||
| pub mod winit; | pub mod winit; | ||||||
| mod events; | mod events; | ||||||
| mod windows; | mod windows; | ||||||
|  | mod window_plugin; | ||||||
| 
 | 
 | ||||||
| pub use events::*; | pub use events::*; | ||||||
| pub use windows::*; | pub use windows::*; | ||||||
|  | pub use window_plugin::*; | ||||||
| 
 | 
 | ||||||
| use uuid::Uuid; | use uuid::Uuid; | ||||||
| 
 | 
 | ||||||
							
								
								
									
										36
									
								
								src/window/window_plugin.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								src/window/window_plugin.rs
									
									
									
									
									
										Normal file
									
								
							| @ -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<WindowDescriptor>, | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 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::<WindowResized>() | ||||||
|  |             .add_event::<CreateWindow>() | ||||||
|  |             .add_event::<WindowCreated>() | ||||||
|  |             .add_resource(Windows::default()); | ||||||
|  | 
 | ||||||
|  |         if let Some(ref primary_window_descriptor) = self.primary_window { | ||||||
|  |             let mut create_window_event = app.resources.get_mut::<Events<CreateWindow>>().unwrap(); | ||||||
|  |             create_window_event.send(CreateWindow { | ||||||
|  |                 descriptor: primary_window_descriptor.clone(), 
 | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         app | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     fn name(&self) -> &'static str { | ||||||
|  |         "Window" | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -1,4 +1,4 @@ | |||||||
| use crate::{core::WindowId, prelude::*}; | use crate::{window::WindowId, prelude::*}; | ||||||
| use std::collections::HashMap; | use std::collections::HashMap; | ||||||
| 
 | 
 | ||||||
| #[derive(Default)] | #[derive(Default)] | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Carter Anderson
						Carter Anderson