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