remove bevy_derive from bevy crate and export derives from specific crates

This commit is contained in:
Carter Anderson 2020-06-07 12:22:16 -07:00
parent 4a71cd128d
commit 70e9892e00
16 changed files with 35 additions and 31 deletions

View File

@ -24,7 +24,6 @@ bevy_app = { path = "crates/bevy_app" }
bevy_asset = { path = "crates/bevy_asset" } bevy_asset = { path = "crates/bevy_asset" }
bevy_type_registry = { path = "crates/bevy_type_registry" } bevy_type_registry = { path = "crates/bevy_type_registry" }
bevy_core = { path = "crates/bevy_core" } bevy_core = { path = "crates/bevy_core" }
bevy_derive = { path = "crates/bevy_derive" }
bevy_diagnostic = { path = "crates/bevy_diagnostic" } bevy_diagnostic = { path = "crates/bevy_diagnostic" }
bevy_gltf = { path = "crates/bevy_gltf" } bevy_gltf = { path = "crates/bevy_gltf" }
bevy_input = { path = "crates/bevy_input" } bevy_input = { path = "crates/bevy_input" }

View File

@ -5,6 +5,7 @@ authors = ["Carter Anderson <mcanders1@gmail.com>"]
edition = "2018" edition = "2018"
[dependencies] [dependencies]
bevy_derive = { path = "../bevy_derive" }
legion = { path = "../bevy_legion", features = ["serialize"] } legion = { path = "../bevy_legion", features = ["serialize"] }
libloading = "0.5.2" libloading = "0.5.2"
log = { version = "0.4", features = ["release_max_level_info"] } log = { version = "0.4", features = ["release_max_level_info"] }

View File

@ -17,3 +17,4 @@ pub use event::*;
pub use plugin::*; pub use plugin::*;
pub use resources::*; pub use resources::*;
pub use system::*; pub use system::*;
pub use bevy_derive::{DynamicAppPlugin, EntityArchetype, FromResources};

View File

@ -6,6 +6,7 @@ edition = "2018"
[dependencies] [dependencies]
bevy_app = { path = "../bevy_app" } bevy_app = { path = "../bevy_app" }
bevy_derive = { path = "../bevy_derive" }
bevy_property = { path = "../bevy_property" } bevy_property = { path = "../bevy_property" }
bevy_type_registry = { path = "../bevy_type_registry" } bevy_type_registry = { path = "../bevy_type_registry" }
bevy_transform = { path = "../bevy_transform" } bevy_transform = { path = "../bevy_transform" }

View File

@ -2,6 +2,8 @@ pub mod bytes;
pub mod time; pub mod time;
pub mod transform; pub mod transform;
pub use bevy_derive::Bytes;
use bevy_app::{stage, AppBuilder, AppPlugin}; use bevy_app::{stage, AppBuilder, AppPlugin};
use bevy_transform::{ use bevy_transform::{
components::{ components::{

View File

@ -2,7 +2,7 @@ use proc_macro::TokenStream;
use quote::quote; use quote::quote;
use syn::{parse_macro_input, DeriveInput}; use syn::{parse_macro_input, DeriveInput};
pub fn derive_app_plugin(input: TokenStream) -> TokenStream { pub fn derive_dynamic_app_plugin(input: TokenStream) -> TokenStream {
let ast = parse_macro_input!(input as DeriveInput); let ast = parse_macro_input!(input as DeriveInput);
let struct_name = &ast.ident; let struct_name = &ast.ident;

View File

@ -10,8 +10,8 @@ mod uniforms;
use proc_macro::TokenStream; use proc_macro::TokenStream;
#[proc_macro_derive(FromResources, attributes(module))] #[proc_macro_derive(FromResources, attributes(module))]
pub fn derive_resource(input: TokenStream) -> TokenStream { pub fn derive_from_resources(input: TokenStream) -> TokenStream {
resource::derive_resource(input) resource::derive_from_resources(input)
} }
#[proc_macro_derive(Bytes, attributes(module))] #[proc_macro_derive(Bytes, attributes(module))]
@ -36,5 +36,5 @@ pub fn derive_uniforms(input: TokenStream) -> TokenStream {
#[proc_macro_derive(DynamicAppPlugin)] #[proc_macro_derive(DynamicAppPlugin)]
pub fn derive_app_plugin(input: TokenStream) -> TokenStream { pub fn derive_app_plugin(input: TokenStream) -> TokenStream {
app_plugin::derive_app_plugin(input) app_plugin::derive_dynamic_app_plugin(input)
} }

View File

@ -3,7 +3,7 @@ use proc_macro::TokenStream;
use quote::quote; use quote::quote;
use syn::{parse_macro_input, Data, DataStruct, DeriveInput, Fields}; use syn::{parse_macro_input, Data, DataStruct, DeriveInput, Fields};
pub fn derive_resource(input: TokenStream) -> TokenStream { pub fn derive_from_resources(input: TokenStream) -> TokenStream {
let ast = parse_macro_input!(input as DeriveInput); let ast = parse_macro_input!(input as DeriveInput);
let fields = match &ast.data { let fields = match &ast.data {
Data::Struct(DataStruct { Data::Struct(DataStruct {

View File

@ -198,7 +198,7 @@ pub fn derive_uniforms(input: TokenStream) -> TokenStream {
} }
}); });
impl #bevy_render_path::shader::AsUniforms for #struct_name { impl #bevy_render_path::shader::Uniforms for #struct_name {
fn get_field_infos() -> &'static [#bevy_render_path::shader::FieldInfo] { fn get_field_infos() -> &'static [#bevy_render_path::shader::FieldInfo] {
#field_infos_ident #field_infos_ident
} }
@ -275,7 +275,7 @@ pub fn derive_uniform(input: TokenStream) -> TokenStream {
let struct_name_string = struct_name.to_string(); let struct_name_string = struct_name.to_string();
TokenStream::from(quote! { TokenStream::from(quote! {
impl #impl_generics #bevy_render_path::shader::AsUniforms for #struct_name#ty_generics { impl #impl_generics #bevy_render_path::shader::Uniforms for #struct_name#ty_generics {
fn get_field_infos() -> &'static [#bevy_render_path::shader::FieldInfo] { fn get_field_infos() -> &'static [#bevy_render_path::shader::FieldInfo] {
static FIELD_INFOS: &[#bevy_render_path::shader::FieldInfo] = &[ static FIELD_INFOS: &[#bevy_render_path::shader::FieldInfo] = &[
#bevy_render_path::shader::FieldInfo { #bevy_render_path::shader::FieldInfo {

View File

@ -25,6 +25,7 @@ mod renderable;
pub mod texture; pub mod texture;
pub use once_cell; pub use once_cell;
pub use bevy_derive::{Uniform, Uniforms};
use self::{ use self::{
mesh::Mesh, mesh::Mesh,

View File

@ -5,7 +5,7 @@ use crate::{
}, },
render_resource::{BufferInfo, BufferUsage}, render_resource::{BufferInfo, BufferUsage},
renderer::{RenderResourceContext, RenderResources}, renderer::{RenderResourceContext, RenderResources},
shader::AsUniforms, shader::Uniforms,
Renderable, Vertex, Renderable, Vertex,
}; };
use bevy_app::{EventReader, Events}; use bevy_app::{EventReader, Events};
@ -431,7 +431,7 @@ pub fn mesh_resource_provider_system(resources: &mut Resources) -> Box<dyn Sched
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::{Mesh, VertexAttribute}; use super::{Mesh, VertexAttribute};
use crate::{pipeline::state_descriptors::PrimitiveTopology, shader::AsUniforms, Vertex}; use crate::{pipeline::state_descriptors::PrimitiveTopology, shader::Uniforms, Vertex};
use bevy_core::bytes::AsBytes; use bevy_core::bytes::AsBytes;
#[test] #[test]

View File

@ -6,7 +6,7 @@ use crate::{
RenderResourceAssignment, RenderResourceAssignments, RenderResourceAssignmentsId, RenderResourceAssignment, RenderResourceAssignments, RenderResourceAssignmentsId,
}, },
renderer::{RenderContext, RenderResourceContext, RenderResources}, renderer::{RenderContext, RenderResourceContext, RenderResources},
shader::{AsUniforms, FieldBindType}, shader::{Uniforms, FieldBindType},
texture, Renderable, texture, Renderable,
}; };
@ -54,7 +54,7 @@ impl BufferArrayStatus {
struct UniformBufferArrays<T> struct UniformBufferArrays<T>
where where
T: AsUniforms, T: Uniforms,
{ {
uniform_arrays: Vec<Option<(String, BufferArrayStatus)>>, uniform_arrays: Vec<Option<(String, BufferArrayStatus)>>,
_marker: PhantomData<T>, _marker: PhantomData<T>,
@ -62,7 +62,7 @@ where
impl<T> UniformBufferArrays<T> impl<T> UniformBufferArrays<T>
where where
T: AsUniforms, T: Uniforms,
{ {
fn new() -> Self { fn new() -> Self {
let mut uniform_arrays = Vec::new(); let mut uniform_arrays = Vec::new();
@ -348,7 +348,7 @@ where
#[derive(Default)] #[derive(Default)]
pub struct UniformNode<T> pub struct UniformNode<T>
where where
T: AsUniforms, T: Uniforms,
{ {
command_queue: CommandQueue, command_queue: CommandQueue,
dynamic_uniforms: bool, dynamic_uniforms: bool,
@ -357,7 +357,7 @@ where
impl<T> UniformNode<T> impl<T> UniformNode<T>
where where
T: AsUniforms, T: Uniforms,
{ {
pub fn new(dynamic_uniforms: bool) -> Self { pub fn new(dynamic_uniforms: bool) -> Self {
UniformNode { UniformNode {
@ -370,7 +370,7 @@ where
impl<T> Node for UniformNode<T> impl<T> Node for UniformNode<T>
where where
T: AsUniforms, T: Uniforms,
{ {
fn update( fn update(
&mut self, &mut self,
@ -386,7 +386,7 @@ where
impl<T> SystemNode for UniformNode<T> impl<T> SystemNode for UniformNode<T>
where where
T: AsUniforms, T: Uniforms,
{ {
fn get_system(&self) -> Box<dyn Schedulable> { fn get_system(&self) -> Box<dyn Schedulable> {
let mut command_queue = self.command_queue.clone(); let mut command_queue = self.command_queue.clone();
@ -506,7 +506,7 @@ where
#[derive(Default)] #[derive(Default)]
pub struct AssetUniformNode<T> pub struct AssetUniformNode<T>
where where
T: AsUniforms, T: Uniforms,
{ {
command_queue: CommandQueue, command_queue: CommandQueue,
dynamic_uniforms: bool, dynamic_uniforms: bool,
@ -515,7 +515,7 @@ where
impl<T> AssetUniformNode<T> impl<T> AssetUniformNode<T>
where where
T: AsUniforms, T: Uniforms,
{ {
pub fn new(dynamic_uniforms: bool) -> Self { pub fn new(dynamic_uniforms: bool) -> Self {
AssetUniformNode { AssetUniformNode {
@ -528,7 +528,7 @@ where
impl<T> Node for AssetUniformNode<T> impl<T> Node for AssetUniformNode<T>
where where
T: AsUniforms, T: Uniforms,
{ {
fn update( fn update(
&mut self, &mut self,
@ -544,7 +544,7 @@ where
impl<T> SystemNode for AssetUniformNode<T> impl<T> SystemNode for AssetUniformNode<T>
where where
T: AsUniforms, T: Uniforms,
{ {
fn get_system(&self) -> Box<dyn Schedulable> { fn get_system(&self) -> Box<dyn Schedulable> {
let mut command_queue = self.command_queue.clone(); let mut command_queue = self.command_queue.clone();
@ -674,7 +674,7 @@ where
#[allow(dead_code)] #[allow(dead_code)]
fn initialize_vertex_buffer_descriptor<T>(vertex_buffer_descriptors: &mut VertexBufferDescriptors) fn initialize_vertex_buffer_descriptor<T>(vertex_buffer_descriptors: &mut VertexBufferDescriptors)
where where
T: AsUniforms, T: Uniforms,
{ {
let vertex_buffer_descriptor = T::get_vertex_buffer_descriptor(); let vertex_buffer_descriptor = T::get_vertex_buffer_descriptor();
if let Some(vertex_buffer_descriptor) = vertex_buffer_descriptor { if let Some(vertex_buffer_descriptor) = vertex_buffer_descriptor {
@ -691,7 +691,7 @@ fn setup_uniform_texture_resources<T>(
entities_waiting_for_assets: &EntitiesWaitingForAssets, entities_waiting_for_assets: &EntitiesWaitingForAssets,
render_resource_assignments: &mut RenderResourceAssignments, render_resource_assignments: &mut RenderResourceAssignments,
) where ) where
T: AsUniforms, T: Uniforms,
{ {
for field_info in T::get_field_infos().iter() { for field_info in T::get_field_infos().iter() {
let bind_type = uniforms.get_field_bind_type(&field_info.name); let bind_type = uniforms.get_field_bind_type(&field_info.name);

View File

@ -9,7 +9,7 @@ use bevy_asset::{Assets, Handle};
use bevy_core::bytes::Bytes; use bevy_core::bytes::Bytes;
use legion::prelude::*; use legion::prelude::*;
pub trait AsUniforms: Send + Sync + 'static { pub trait Uniforms: Send + Sync + 'static {
fn get_field_infos() -> &'static [FieldInfo]; fn get_field_infos() -> &'static [FieldInfo];
fn write_uniform_bytes(&self, name: &str, buffer: &mut [u8]); fn write_uniform_bytes(&self, name: &str, buffer: &mut [u8]);
fn uniform_byte_len(&self, name: &str) -> usize; fn uniform_byte_len(&self, name: &str) -> usize;
@ -21,7 +21,7 @@ pub trait AsUniforms: Send + Sync + 'static {
pub fn shader_def_system<T>(uniforms: Com<T>, mut renderable: ComMut<Renderable>) pub fn shader_def_system<T>(uniforms: Com<T>, mut renderable: ComMut<Renderable>)
where where
T: AsUniforms + Send + Sync + 'static, T: Uniforms + Send + Sync + 'static,
{ {
if let Some(shader_defs) = uniforms.get_shader_defs() { if let Some(shader_defs) = uniforms.get_shader_defs() {
renderable renderable
@ -38,7 +38,7 @@ pub fn asset_shader_def_system<T>(
asset_handle: Com<Handle<T>>, asset_handle: Com<Handle<T>>,
mut renderable: ComMut<Renderable>, mut renderable: ComMut<Renderable>,
) where ) where
T: AsUniforms + Send + Sync + 'static, T: Uniforms + Send + Sync + 'static,
{ {
if !renderable.is_visible || renderable.is_instanced { if !renderable.is_visible || renderable.is_instanced {
return; return;

View File

@ -1,6 +1,6 @@
use crate::{ use crate::{
pipeline::{InputStepMode, VertexAttributeDescriptor, VertexBufferDescriptor, VertexFormat}, pipeline::{InputStepMode, VertexAttributeDescriptor, VertexBufferDescriptor, VertexFormat},
shader::{AsUniforms, FieldBindType, FieldInfo, GetFieldBindType}, shader::{Uniforms, FieldBindType, FieldInfo, GetFieldBindType},
texture::Texture, texture::Texture,
}; };
use bevy_asset::Handle; use bevy_asset::Handle;
@ -48,7 +48,7 @@ static VERTEX_BUFFER_DESCRIPTOR: Lazy<VertexBufferDescriptor> =
stride: 64, stride: 64,
}); });
impl AsUniforms for bevy_transform::prelude::LocalToWorld { impl Uniforms for bevy_transform::prelude::LocalToWorld {
fn get_field_infos() -> &'static [FieldInfo] { fn get_field_infos() -> &'static [FieldInfo] {
LOCAL_TO_WORLD_FIELD_INFOS LOCAL_TO_WORLD_FIELD_INFOS
} }

View File

@ -49,7 +49,6 @@ pub use legion;
pub use bevy_asset as asset; pub use bevy_asset as asset;
pub use bevy_core as core; pub use bevy_core as core;
pub use bevy_derive as derive;
pub use bevy_diagnostic as diagnostic; pub use bevy_diagnostic as diagnostic;
pub use bevy_gltf as gltf; pub use bevy_gltf as gltf;
pub use bevy_input as input; pub use bevy_input as input;

View File

@ -1,14 +1,13 @@
pub use crate::{ pub use crate::{
app::{ app::{
schedule_runner::ScheduleRunnerPlugin, stage, App, AppBuilder, AppPlugin, EntityArchetype, schedule_runner::ScheduleRunnerPlugin, stage, App, AppBuilder, AppPlugin, EntityArchetype,
EventReader, Events, FromResources, System, EventReader, Events, FromResources, System, DynamicAppPlugin
}, },
asset::{AddAsset, AssetEvent, AssetServer, Assets, Handle}, asset::{AddAsset, AssetEvent, AssetServer, Assets, Handle},
core::{ core::{
time::{Time, Timer}, time::{Time, Timer},
transform::{CommandBufferBuilderSource, WorldBuilder, WorldBuilderSource}, transform::{CommandBufferBuilderSource, WorldBuilder, WorldBuilderSource},
}, },
derive::*,
diagnostic::DiagnosticsPlugin, diagnostic::DiagnosticsPlugin,
input::{keyboard::KeyCode, mouse::MouseButton, Input}, input::{keyboard::KeyCode, mouse::MouseButton, Input},
math::{self, Mat3, Mat4, Quat, Vec2, Vec3, Vec4}, math::{self, Mat3, Mat4, Quat, Vec2, Vec3, Vec4},
@ -29,6 +28,7 @@ pub use crate::{
shader::{Shader, ShaderDefSuffixProvider, ShaderStage, ShaderStages}, shader::{Shader, ShaderDefSuffixProvider, ShaderStage, ShaderStages},
texture::Texture, texture::Texture,
Camera, Color, ColorSource, OrthographicProjection, PerspectiveProjection, Renderable, Camera, Color, ColorSource, OrthographicProjection, PerspectiveProjection, Renderable,
Uniforms, Uniform,
}, },
scene::{Scene, SceneSpawner}, scene::{Scene, SceneSpawner},
sprite::{ sprite::{