make every bevy dependency optional in bevy crate
This commit is contained in:
parent
b5d78477cf
commit
0af36cfaed
37
Cargo.toml
37
Cargo.toml
@ -5,24 +5,37 @@ authors = ["Carter Anderson <mcanders1@gmail.com>"]
|
||||
edition = "2018"
|
||||
|
||||
[features]
|
||||
default = ["bevy_wgpu", "bevy_winit"]
|
||||
default = ["headless", "wgpu", "winit"]
|
||||
headless = ["asset", "core", "derive", "diagnostic", "input", "render", "serialization", "transform", "ui", "window"]
|
||||
asset = ["bevy_asset"]
|
||||
core = ["bevy_core"]
|
||||
derive = ["bevy_derive"]
|
||||
diagnostic = ["bevy_diagnostic"]
|
||||
input = ["bevy_input"]
|
||||
render = ["bevy_render"]
|
||||
serialization = ["bevy_serialization"]
|
||||
transform = ["bevy_transform"]
|
||||
ui = ["bevy_ui"]
|
||||
window = ["bevy_window"]
|
||||
wgpu = ["bevy_wgpu"]
|
||||
winit = ["bevy_winit"]
|
||||
|
||||
[dependencies]
|
||||
# bevy
|
||||
bevy_app = { path = "bevy_app" }
|
||||
bevy_asset = { path = "bevy_asset" }
|
||||
bevy_core = { path = "bevy_core" }
|
||||
bevy_derive = { path = "bevy_derive" }
|
||||
bevy_diagnostic = { path = "bevy_diagnostic" }
|
||||
bevy_input = { path = "bevy_input" }
|
||||
bevy_render = { path = "bevy_render" }
|
||||
bevy_serialization = { path = "bevy_serialization" }
|
||||
bevy_transform = { path = "bevy_transform" }
|
||||
bevy_ui = { path = "bevy_ui" }
|
||||
bevy_window = { path = "bevy_window" }
|
||||
bevy_asset = { path = "bevy_asset", optional = true }
|
||||
bevy_core = { path = "bevy_core", optional = true }
|
||||
bevy_derive = { path = "bevy_derive", optional = true }
|
||||
bevy_diagnostic = { path = "bevy_diagnostic", optional = true }
|
||||
bevy_input = { path = "bevy_input", optional = true }
|
||||
bevy_render = { path = "bevy_render", optional = true }
|
||||
bevy_serialization = { path = "bevy_serialization", optional = true }
|
||||
bevy_transform = { path = "bevy_transform", optional = true }
|
||||
bevy_ui = { path = "bevy_ui", optional = true }
|
||||
bevy_window = { path = "bevy_window", optional = true }
|
||||
bevy_wgpu = { path = "bevy_wgpu", optional = true }
|
||||
bevy_winit = { path = "bevy_winit", optional = true }
|
||||
legion = { path = "bevy_legion", features = ["serialize"] }
|
||||
legion = { path = "bevy_legion" }
|
||||
|
||||
# other
|
||||
log = { version = "0.4", features = ["release_max_level_info"] }
|
||||
|
||||
@ -12,16 +12,17 @@ pub fn ui_update_system() -> Box<dyn Schedulable> {
|
||||
.write_component::<Node>()
|
||||
.read_component::<Children>()
|
||||
.build(move |_, world, windows, node_query| {
|
||||
let window = windows.get_primary().unwrap();
|
||||
let parent_size = glam::vec2(window.width as f32, window.height as f32);
|
||||
let parent_position = glam::vec2(0.0, 0.0);
|
||||
for (entity, _) in node_query.iter_entities_mut(world) {
|
||||
run_on_hierarchy_subworld_mut(
|
||||
world,
|
||||
entity,
|
||||
(parent_size, parent_position),
|
||||
&mut update_node_entity,
|
||||
);
|
||||
if let Some(window) = windows.get_primary() {
|
||||
let parent_size = glam::vec2(window.width as f32, window.height as f32);
|
||||
let parent_position = glam::vec2(0.0, 0.0);
|
||||
for (entity, _) in node_query.iter_entities_mut(world) {
|
||||
run_on_hierarchy_subworld_mut(
|
||||
world,
|
||||
entity,
|
||||
(parent_size, parent_position),
|
||||
&mut update_node_entity,
|
||||
);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@ -4,6 +4,13 @@ use bevy::{
|
||||
};
|
||||
use std::time::Duration;
|
||||
|
||||
// This example disables the default plugins by not registering them during setup.
|
||||
// You can also completely remove rendering / windowing Plugin code from bevy
|
||||
// by making your import look like this in your Cargo.toml
|
||||
//
|
||||
// [dependencies]
|
||||
// bevy = { version = "0.1.0", default-features = false, features = ["headless"] }
|
||||
|
||||
fn main() {
|
||||
println!("This app runs once:");
|
||||
App::build()
|
||||
|
||||
@ -27,23 +27,13 @@ fn setup(world: &mut World, resources: &mut Resources) {
|
||||
.add_entity(MeshEntity {
|
||||
mesh: plane_handle,
|
||||
material: plane_material_handle,
|
||||
// renderable: Renderable::instanced(),
|
||||
..Default::default()
|
||||
})
|
||||
// cube
|
||||
.add_entity(MeshEntity {
|
||||
mesh: cube_handle,
|
||||
material: cube_material_handle,
|
||||
// renderable: Renderable::instanced(),
|
||||
translation: Translation::new(-1.5, 0.0, 1.0),
|
||||
..Default::default()
|
||||
})
|
||||
// cube
|
||||
.add_entity(MeshEntity {
|
||||
mesh: cube_handle,
|
||||
material: cube_material_handle,
|
||||
// renderable: Renderable::instanced(),
|
||||
translation: Translation::new(1.5, 0.0, 1.0),
|
||||
translation: Translation::new(0.0, 0.0, 1.0),
|
||||
..Default::default()
|
||||
})
|
||||
// light
|
||||
|
||||
68
src/lib.rs
68
src/lib.rs
@ -2,19 +2,30 @@
|
||||
pub mod prelude;
|
||||
|
||||
pub use bevy_app as app;
|
||||
pub use bevy_asset as asset;
|
||||
pub use bevy_core as core;
|
||||
pub use bevy_diagnostic as diagnostic;
|
||||
pub use bevy_input as input;
|
||||
pub use bevy_render as render;
|
||||
pub use bevy_serialization as serialization;
|
||||
pub use bevy_transform as transform;
|
||||
pub use bevy_ui as ui;
|
||||
pub use bevy_window as window;
|
||||
|
||||
pub use glam as math;
|
||||
pub use legion;
|
||||
|
||||
#[cfg(feature = "asset")]
|
||||
pub use bevy_asset as asset;
|
||||
#[cfg(feature = "core")]
|
||||
pub use bevy_core as core;
|
||||
#[cfg(feature = "derive")]
|
||||
pub use bevy_derive as derive;
|
||||
#[cfg(feature = "diagnostic")]
|
||||
pub use bevy_diagnostic as diagnostic;
|
||||
#[cfg(feature = "input")]
|
||||
pub use bevy_input as input;
|
||||
#[cfg(feature = "render")]
|
||||
pub use bevy_render as render;
|
||||
#[cfg(feature = "serialization")]
|
||||
pub use bevy_serialization as serialization;
|
||||
#[cfg(feature = "transform")]
|
||||
pub use bevy_transform as transform;
|
||||
#[cfg(feature = "ui")]
|
||||
pub use bevy_ui as ui;
|
||||
#[cfg(feature = "window")]
|
||||
pub use bevy_window as window;
|
||||
|
||||
use app::AppBuilder;
|
||||
|
||||
pub trait AddDefaultPlugins {
|
||||
@ -23,25 +34,28 @@ pub trait AddDefaultPlugins {
|
||||
|
||||
impl AddDefaultPlugins for AppBuilder {
|
||||
fn add_default_plugins(&mut self) -> &mut Self {
|
||||
self.add_plugin(bevy_core::CorePlugin::default())
|
||||
.add_plugin(bevy_input::InputPlugin::default())
|
||||
.add_plugin(bevy_window::WindowPlugin::default())
|
||||
.add_plugin(bevy_render::RenderPlugin::default())
|
||||
.add_plugin(ui::UiPlugin::default());
|
||||
#[cfg(feature = "core")]
|
||||
self.add_plugin(bevy_core::CorePlugin::default());
|
||||
|
||||
#[cfg(feature = "bevy_winit")]
|
||||
{
|
||||
self.add_plugin(bevy_winit::WinitPlugin::default());
|
||||
}
|
||||
#[cfg(not(feature = "bevy_winit"))]
|
||||
{
|
||||
self.add_plugin(bevy_app::schedule_run::ScheduleRunner::default());
|
||||
}
|
||||
#[cfg(feature = "input")]
|
||||
self.add_plugin(bevy_input::InputPlugin::default());
|
||||
|
||||
#[cfg(feature = "bevy_wgpu")]
|
||||
{
|
||||
self.add_plugin(bevy_wgpu::WgpuRendererPlugin::default());
|
||||
}
|
||||
#[cfg(feature = "window")]
|
||||
self.add_plugin(bevy_window::WindowPlugin::default());
|
||||
|
||||
#[cfg(feature = "render")]
|
||||
self.add_plugin(bevy_render::RenderPlugin::default());
|
||||
|
||||
#[cfg(feature = "ui")]
|
||||
self.add_plugin(ui::UiPlugin::default());
|
||||
|
||||
#[cfg(feature = "winit")]
|
||||
self.add_plugin(bevy_winit::WinitPlugin::default());
|
||||
#[cfg(not(feature = "winit"))]
|
||||
self.add_plugin(bevy_app::schedule_runner::ScheduleRunnerPlugin::default());
|
||||
|
||||
#[cfg(feature = "wgpu")]
|
||||
self.add_plugin(bevy_wgpu::WgpuRendererPlugin::default());
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
@ -1,30 +1,18 @@
|
||||
pub use crate::{
|
||||
app::{App, AppBuilder, AppPlugin, EntityArchetype, EventReader, Events, GetEventReader},
|
||||
asset::{Asset, AssetStorage, Handle},
|
||||
core::{
|
||||
time::Time,
|
||||
transform::{CommandBufferBuilderSource, WorldBuilder, WorldBuilderSource},
|
||||
},
|
||||
diagnostic::DiagnosticsPlugin,
|
||||
render::{
|
||||
entity::*,
|
||||
mesh::{Mesh, MeshType},
|
||||
pipeline::PipelineDescriptor,
|
||||
render_graph::RenderGraph,
|
||||
render_resource::{
|
||||
resource_name, resource_providers::UniformResourceProvider, AssetBatchers,
|
||||
},
|
||||
shader::{uniforms::StandardMaterial, Shader, ShaderDefSuffixProvider, ShaderStage},
|
||||
texture::{Texture, TextureType},
|
||||
ActiveCamera, ActiveCamera2d, Camera, CameraType, Color, ColorSource, Light, Renderable,
|
||||
},
|
||||
ui::{entity::*, Anchors, Margins, Node},
|
||||
window::{Window, WindowDescriptor, WindowPlugin, Windows},
|
||||
AddDefaultPlugins,
|
||||
pub use crate::AddDefaultPlugins;
|
||||
pub use crate::app::{App, AppBuilder, AppPlugin, EntityArchetype, EventReader, Events, GetEventReader};
|
||||
#[cfg(feature = "asset")]
|
||||
pub use crate::asset::{Asset, AssetStorage, Handle};
|
||||
#[cfg(feature = "derive")]
|
||||
pub use crate::derive::*;
|
||||
#[cfg(feature = "transform")]
|
||||
pub use crate::transform::prelude::*;
|
||||
#[cfg(feature = "core")]
|
||||
pub use crate::core::{
|
||||
time::Time,
|
||||
transform::{CommandBufferBuilderSource, WorldBuilder, WorldBuilderSource},
|
||||
};
|
||||
pub use bevy_derive::*;
|
||||
pub use bevy_transform::prelude::*;
|
||||
pub use glam as math;
|
||||
#[cfg(feature = "diagnostic")]
|
||||
pub use crate::diagnostic::DiagnosticsPlugin;
|
||||
pub use legion::{
|
||||
command::CommandBuffer,
|
||||
entity::Entity,
|
||||
@ -39,4 +27,19 @@ pub use legion::{
|
||||
},
|
||||
world::{Universe, World},
|
||||
};
|
||||
pub use math::{Mat3, Mat4, Quat, Vec2, Vec3, Vec4};
|
||||
pub use crate::math::{self, Mat3, Mat4, Quat, Vec2, Vec3, Vec4};
|
||||
#[cfg(feature = "render")]
|
||||
pub use crate::render::{
|
||||
entity::*,
|
||||
mesh::{Mesh, MeshType},
|
||||
pipeline::PipelineDescriptor,
|
||||
render_graph::RenderGraph,
|
||||
render_resource::{resource_name, resource_providers::UniformResourceProvider, AssetBatchers},
|
||||
shader::{uniforms::StandardMaterial, Shader, ShaderDefSuffixProvider, ShaderStage},
|
||||
texture::{Texture, TextureType},
|
||||
ActiveCamera, ActiveCamera2d, Camera, CameraType, Color, ColorSource, Light, Renderable,
|
||||
};
|
||||
#[cfg(feature = "ui")]
|
||||
pub use crate::ui::{entity::*, Anchors, Margins, Node};
|
||||
#[cfg(feature = "window")]
|
||||
pub use crate::window::{Window, WindowDescriptor, WindowPlugin, Windows};
|
||||
|
||||
Loading…
Reference in New Issue
Block a user