move plugin to app module
This commit is contained in:
		
							parent
							
								
									e2393de97c
								
							
						
					
					
						commit
						3d261f72de
					
				| @ -364,7 +364,7 @@ pub fn derive_app_plugin(input: TokenStream) -> TokenStream { | |||||||
| 
 | 
 | ||||||
|     TokenStream::from(quote! { |     TokenStream::from(quote! { | ||||||
|         #[no_mangle] |         #[no_mangle] | ||||||
|         pub extern "C" fn _create_plugin() -> *mut bevy::plugin::AppPlugin { |         pub extern "C" fn _create_plugin() -> *mut bevy::app::plugin::AppPlugin { | ||||||
|             // TODO: without this the assembly does nothing. why is that the case?
 |             // TODO: without this the assembly does nothing. why is that the case?
 | ||||||
|             print!(""); |             print!(""); | ||||||
|             // make sure the constructor is the correct type.
 |             // make sure the constructor is the correct type.
 | ||||||
|  | |||||||
| @ -1,110 +0,0 @@ | |||||||
| use bevy::prelude::*; |  | ||||||
| 
 |  | ||||||
| fn main() { |  | ||||||
|     App::build().add_defaults().setup(setup).run(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #[derive(Uniforms, Default)] |  | ||||||
| struct MyMaterial { |  | ||||||
|     pub color: Color, |  | ||||||
|     #[uniform(ignore, shader_def)] |  | ||||||
|     pub always_red: bool, |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| fn setup(world: &mut World, resources: &mut Resources) { |  | ||||||
|     let mut render_graph = resources.get_mut::<RenderGraph>().unwrap(); |  | ||||||
|     let mut pipelines = resources.get_mut::<AssetStorage<PipelineDescriptor>>().unwrap(); |  | ||||||
|     let mut shaders = resources.get_mut::<AssetStorage<Shader>>().unwrap(); |  | ||||||
|     render_graph |  | ||||||
|         .build(&mut pipelines, &mut shaders) |  | ||||||
|         .add_resource_provider(UniformResourceProvider::<MyMaterial>::new(true)) |  | ||||||
|         .add_pipeline_to_pass(resource_name::pass::MAIN, "MyMaterial", |builder| { |  | ||||||
|             builder |  | ||||||
|                 .with_vertex_shader(Shader::from_glsl( |  | ||||||
|                     ShaderStage::Vertex, |  | ||||||
|                     r#" |  | ||||||
|                     #version 450 |  | ||||||
|                     layout(location = 0) in vec4 Vertex_Position; |  | ||||||
|                     layout(location = 0) out vec4 v_Position; |  | ||||||
|                     layout(set = 0, binding = 0) uniform Camera { |  | ||||||
|                         mat4 ViewProj; |  | ||||||
|                     }; |  | ||||||
|                     layout(set = 1, binding = 0) uniform Object { |  | ||||||
|                         mat4 Model; |  | ||||||
|                     }; |  | ||||||
|                     void main() { |  | ||||||
|                         v_Position = Model * Vertex_Position; |  | ||||||
|                         gl_Position = ViewProj * v_Position; |  | ||||||
|                     } |  | ||||||
|                 "#,
 |  | ||||||
|                 )) |  | ||||||
|                 .with_fragment_shader(Shader::from_glsl( |  | ||||||
|                     ShaderStage::Fragment, |  | ||||||
|                     r#" |  | ||||||
|                     #version 450 |  | ||||||
|                     layout(location = 0) in vec4 v_Position; |  | ||||||
|                     layout(location = 0) out vec4 o_Target; |  | ||||||
|                     layout(set = 1, binding = 1) uniform MyMaterial_color { |  | ||||||
|                         vec4 color; |  | ||||||
|                     }; |  | ||||||
|                     void main() { |  | ||||||
|                         o_Target = color; |  | ||||||
| 
 |  | ||||||
|                     # ifdef MYMATERIAL_ALWAYS_RED |  | ||||||
|                         o_Target = vec4(0.8, 0.0, 0.0, 1.0); |  | ||||||
|                     # endif |  | ||||||
|                     } |  | ||||||
|                 "#,
 |  | ||||||
|                 )) |  | ||||||
|                 .with_default_config(); |  | ||||||
|         }); |  | ||||||
| 
 |  | ||||||
|     let mut mesh_storage = resources.get_mut::<AssetStorage<Mesh>>().unwrap(); |  | ||||||
|     let cube_handle = mesh_storage.add(Mesh::load(MeshType::Cube)); |  | ||||||
| 
 |  | ||||||
|     let mut pipeline_storage = resources |  | ||||||
|         .get_mut::<AssetStorage<PipelineDescriptor>>() |  | ||||||
|         .unwrap(); |  | ||||||
|     let material_handle = pipeline_storage.get_named("MyMaterial").unwrap(); |  | ||||||
| 
 |  | ||||||
|     world |  | ||||||
|         .build() |  | ||||||
|         // cube
 |  | ||||||
|         .add_entity(MeshMaterialEntity::<MyMaterial> { |  | ||||||
|             mesh: cube_handle, |  | ||||||
|             renderable: Renderable { |  | ||||||
|                 pipelines: vec![material_handle], |  | ||||||
|                 ..Default::default() |  | ||||||
|             }, |  | ||||||
|             material: MyMaterial { |  | ||||||
|                 color: Color::rgb(0.0, 0.8, 0.0), |  | ||||||
|                 always_red: false, |  | ||||||
|             }, |  | ||||||
|             translation: Translation::new(-2.0, 0.0, 0.0), |  | ||||||
|             ..Default::default() |  | ||||||
|         }) |  | ||||||
|         // cube
 |  | ||||||
|         .add_entity(MeshMaterialEntity::<MyMaterial> { |  | ||||||
|             mesh: cube_handle, |  | ||||||
|             renderable: Renderable { |  | ||||||
|                 pipelines: vec![material_handle], |  | ||||||
|                 ..Default::default() |  | ||||||
|             }, |  | ||||||
|             material: MyMaterial { |  | ||||||
|                 color: Color::rgb(0.0, 0.0, 0.0), |  | ||||||
|                 always_red: true, |  | ||||||
|             }, |  | ||||||
|             translation: Translation::new(2.0, 0.0, 0.0), |  | ||||||
|             ..Default::default() |  | ||||||
|         }) |  | ||||||
|         // camera
 |  | ||||||
|         .add_entity(CameraEntity { |  | ||||||
|             local_to_world: LocalToWorld(Mat4::look_at_rh( |  | ||||||
|                 Vec3::new(3.0, 8.0, 5.0), |  | ||||||
|                 Vec3::new(0.0, 0.0, 0.0), |  | ||||||
|                 Vec3::new(0.0, 0.0, 1.0), |  | ||||||
|             )), |  | ||||||
|             ..Default::default() |  | ||||||
|         }) |  | ||||||
|         .build(); |  | ||||||
| } |  | ||||||
| @ -1,6 +1,6 @@ | |||||||
| use crate::{ | use crate::{ | ||||||
|     app::{system_stage, App}, |     app::{system_stage, App, plugin::{AppPlugin, load_plugin}}, | ||||||
|     core::{plugin::{AppPlugin, load_plugin}, winit::WinitPlugin, CorePlugin}, |     core::{winit::WinitPlugin, CorePlugin}, | ||||||
|     legion::prelude::{Resources, Runnable, Schedulable, Schedule, Universe, World}, |     legion::prelude::{Resources, Runnable, Schedulable, Schedule, Universe, World}, | ||||||
|     render::{renderer::Renderer, *}, |     render::{renderer::Renderer, *}, | ||||||
|     ui, |     ui, | ||||||
|  | |||||||
| @ -1,6 +1,7 @@ | |||||||
| mod app; | mod app; | ||||||
| mod app_builder; | mod app_builder; | ||||||
| pub mod system_stage; | pub mod system_stage; | ||||||
|  | pub mod plugin; | ||||||
| 
 | 
 | ||||||
| pub use app::App; | pub use app::App; | ||||||
| pub use app_builder::AppBuilder; | pub use app_builder::AppBuilder; | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| use super::{Time, Window, plugin::AppPlugin}; | use super::{Time, Window}; | ||||||
| use crate::{app::AppBuilder}; | use crate::{app::{AppBuilder, plugin::AppPlugin}}; | ||||||
| 
 | 
 | ||||||
| #[derive(Default)] | #[derive(Default)] | ||||||
| pub struct CorePlugin; | pub struct CorePlugin; | ||||||
|  | |||||||
| @ -1,7 +1,6 @@ | |||||||
| pub mod bytes; | pub mod bytes; | ||||||
| mod time; | mod time; | ||||||
| pub mod window; | pub mod window; | ||||||
| pub mod plugin; |  | ||||||
| mod core_plugin; | mod core_plugin; | ||||||
| 
 | 
 | ||||||
| pub use bytes::*; | pub use bytes::*; | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| use crate::{ | use crate::{ | ||||||
|     app::{App, AppBuilder}, core::plugin::AppPlugin, |     app::{App, AppBuilder}, app::plugin::AppPlugin, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| use super::Window; | use super::Window; | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ use super::{ | |||||||
|     diagnostics::{frame_time_diagnostic_system, print_diagnostics_system}, |     diagnostics::{frame_time_diagnostic_system, print_diagnostics_system}, | ||||||
|     Diagnostics, |     Diagnostics, | ||||||
| }; | }; | ||||||
| use crate::{app::AppBuilder, core::plugin::AppPlugin}; | use crate::{app::AppBuilder, app::plugin::AppPlugin}; | ||||||
| use std::time::Duration; | use std::time::Duration; | ||||||
| 
 | 
 | ||||||
| pub struct DiagnosticsPlugin { | pub struct DiagnosticsPlugin { | ||||||
|  | |||||||
| @ -19,7 +19,7 @@ pub struct MeshEntity { | |||||||
| #[derive(EntityArchetype, Default)] | #[derive(EntityArchetype, Default)] | ||||||
| pub struct MeshMaterialEntity<T: Default + Send + Sync + 'static> { | pub struct MeshMaterialEntity<T: Default + Send + Sync + 'static> { | ||||||
|     pub mesh: Handle<Mesh>, |     pub mesh: Handle<Mesh>, | ||||||
|     pub material: T, |     pub material: Handle<T>, | ||||||
|     pub renderable: Renderable, |     pub renderable: Renderable, | ||||||
|     pub local_to_world: LocalToWorld, |     pub local_to_world: LocalToWorld, | ||||||
|     pub translation: Translation, |     pub translation: Translation, | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| pub use crate::{ | pub use crate::{ | ||||||
|     app::{App, AppBuilder}, |     app::{App, AppBuilder, plugin::AppPlugin}, | ||||||
|     asset::{Asset, AssetStorage, Handle}, |     asset::{Asset, AssetStorage, Handle}, | ||||||
|     core::{Time, Window, plugin::AppPlugin}, |     core::{Time, Window}, | ||||||
|     ecs, |     ecs, | ||||||
|     ecs::{ |     ecs::{ | ||||||
|         default_archetypes::*, CommandBufferBuilderSource, EntityArchetype, WorldBuilder, |         default_archetypes::*, CommandBufferBuilderSource, EntityArchetype, WorldBuilder, | ||||||
| @ -10,7 +10,7 @@ pub use crate::{ | |||||||
|     render::{ |     render::{ | ||||||
|         mesh::{Mesh, MeshType}, |         mesh::{Mesh, MeshType}, | ||||||
|         pipeline::PipelineDescriptor, |         pipeline::PipelineDescriptor, | ||||||
|         render_resource::{resource_name, resource_providers::UniformResourceProvider}, |         render_resource::{resource_name, resource_providers::UniformResourceProvider, AssetBatchers}, | ||||||
|         render_graph::RenderGraph, |         render_graph::RenderGraph, | ||||||
|         shader::{uniforms::StandardMaterial, Shader, ShaderDefSuffixProvider, ShaderStage}, |         shader::{uniforms::StandardMaterial, Shader, ShaderDefSuffixProvider, ShaderStage}, | ||||||
|         texture::{Texture, TextureType}, |         texture::{Texture, TextureType}, | ||||||
|  | |||||||
| @ -16,7 +16,7 @@ use super::{ | |||||||
| use crate::{ | use crate::{ | ||||||
|     app::AppBuilder, |     app::AppBuilder, | ||||||
|     asset::AssetStorage, |     asset::AssetStorage, | ||||||
|     core::plugin::AppPlugin, |     app::plugin::AppPlugin, | ||||||
|     prelude::{ |     prelude::{ | ||||||
|         LocalToWorld, Mesh, PipelineDescriptor, Shader, StandardMaterial, Texture, |         LocalToWorld, Mesh, PipelineDescriptor, Shader, StandardMaterial, Texture, | ||||||
|         UniformResourceProvider, |         UniformResourceProvider, | ||||||
|  | |||||||
| @ -7,7 +7,7 @@ pub use wgpu_render_pass::*; | |||||||
| pub use wgpu_renderer::*; | pub use wgpu_renderer::*; | ||||||
| pub use wgpu_resources::*; | pub use wgpu_resources::*; | ||||||
| 
 | 
 | ||||||
| use crate::{app::AppBuilder, core::plugin::AppPlugin}; | use crate::{app::AppBuilder, app::plugin::AppPlugin}; | ||||||
| 
 | 
 | ||||||
| pub struct WgpuRendererPlugin; | pub struct WgpuRendererPlugin; | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Carter Anderson
						Carter Anderson