diff --git a/bevy_asset_loader/tests/mapped_path_use_slash.rs b/bevy_asset_loader/tests/mapped_path_use_slash.rs index 64fb67f..94f34a8 100644 --- a/bevy_asset_loader/tests/mapped_path_use_slash.rs +++ b/bevy_asset_loader/tests/mapped_path_use_slash.rs @@ -14,7 +14,7 @@ use bevy_asset_loader::loading_state::{LoadingState, LoadingStateAppExt}; not(feature = "progress_tracking") ))] #[test] -fn multiple_asset_collections() { +fn mapped_path_use_slash() { App::new() .add_state::() .add_plugins(( @@ -56,7 +56,7 @@ fn expect(collection: Option>, mut exit: EventWriter>, #[asset(path = "audio/yipee.ogg")] single_file: Handle, diff --git a/bevy_asset_loader/tests/ui/no_default.stderr b/bevy_asset_loader/tests/ui/no_default.stderr index 2b311a5..fd415fc 100644 --- a/bevy_asset_loader/tests/ui/no_default.stderr +++ b/bevy_asset_loader/tests/ui/no_default.stderr @@ -12,7 +12,7 @@ error[E0277]: the trait bound `NoDefault: std::default::Default` is not satisfie SceneLoader MsaaWritebackNode Material2dPipeline - BlitPipeline + Mesh2dPipeline and $N others = note: required for `NoDefault` to implement `FromWorld` help: consider annotating `NoDefault` with `#[derive(Default)]` diff --git a/bevy_asset_loader_derive/src/assets.rs b/bevy_asset_loader_derive/src/assets.rs index a4f7665..f9f959f 100644 --- a/bevy_asset_loader_derive/src/assets.rs +++ b/bevy_asset_loader_derive/src/assets.rs @@ -1,4 +1,4 @@ -use crate::{ParseFieldError, TextureAtlasAttribute, TEXTURE_ATLAS_ATTRIBUTE}; +use crate::{ParseFieldError, TextureAtlasAttribute}; use proc_macro2::{Ident, TokenStream}; use quote::quote; @@ -509,28 +509,28 @@ impl AssetBuilder { if self.tile_size_x.is_none() { missing_fields.push(format!( "{}/{}", - TEXTURE_ATLAS_ATTRIBUTE, + TextureAtlasAttribute::ATTRIBUTE_NAME, TextureAtlasAttribute::TILE_SIZE_X )); } if self.tile_size_y.is_none() { missing_fields.push(format!( "{}/{}", - TEXTURE_ATLAS_ATTRIBUTE, + TextureAtlasAttribute::ATTRIBUTE_NAME, TextureAtlasAttribute::TILE_SIZE_Y )); } if self.columns.is_none() { missing_fields.push(format!( "{}/{}", - TEXTURE_ATLAS_ATTRIBUTE, + TextureAtlasAttribute::ATTRIBUTE_NAME, TextureAtlasAttribute::COLUMNS )); } if self.rows.is_none() { missing_fields.push(format!( "{}/{}", - TEXTURE_ATLAS_ATTRIBUTE, + TextureAtlasAttribute::ATTRIBUTE_NAME, TextureAtlasAttribute::ROWS )); } diff --git a/bevy_asset_loader_derive/src/lib.rs b/bevy_asset_loader_derive/src/lib.rs index 32d8972..d281d96 100644 --- a/bevy_asset_loader_derive/src/lib.rs +++ b/bevy_asset_loader_derive/src/lib.rs @@ -18,7 +18,9 @@ use crate::assets::*; use proc_macro2::Ident; use quote::{quote, quote_spanned, ToTokens, TokenStreamExt}; use syn::punctuated::Punctuated; -use syn::{Data, Expr, ExprLit, ExprPath, Field, Fields, Index, Lit, LitStr, Meta, Token}; +#[cfg(any(feature = "2d", feature = "3d"))] +use syn::ExprPath; +use syn::{Data, Expr, ExprLit, Field, Fields, Index, Lit, LitStr, Meta, Token}; /// Derive macro for [`AssetCollection`] /// @@ -37,9 +39,9 @@ pub(crate) const PATH_ATTRIBUTE: &str = "path"; pub(crate) const KEY_ATTRIBUTE: &str = "key"; pub(crate) const OPTIONAL_ATTRIBUTE: &str = "optional"; -pub(crate) const TEXTURE_ATLAS_ATTRIBUTE: &str = "texture_atlas"; pub(crate) struct TextureAtlasAttribute; impl TextureAtlasAttribute { + pub const ATTRIBUTE_NAME: &'static str = "texture_atlas"; pub const TILE_SIZE_X: &'static str = "tile_size_x"; pub const TILE_SIZE_Y: &'static str = "tile_size_y"; pub const COLUMNS: &'static str = "columns"; @@ -54,9 +56,10 @@ impl TextureAtlasAttribute { pub const OFFSET_Y: &'static str = "offset_y"; } -pub(crate) const IMAGE_ATTRIBUTE: &str = "image"; pub(crate) struct ImageAttribute; impl ImageAttribute { + pub const ATTRIBUTE_NAME: &'static str = "image"; + #[allow(dead_code)] pub const SAMPLER: &'static str = "sampler"; } @@ -183,11 +186,10 @@ fn impl_asset_collection( } }; - let mut prepare_from_world = quote! {}; - prepare_from_world.append_all(from_world_fields.iter().fold( + let prepare_from_world = from_world_fields.iter().fold( quote!(), |es, ident| quote_spanned! {ident.span() => #es ::bevy::ecs::world::FromWorld::from_world(world),}, - )); + ); let mut asset_creation = assets.iter().fold(quote!(), |token_stream, asset| { asset.attach_token_stream_for_creation(token_stream, name.to_string()) @@ -256,7 +258,11 @@ fn parse_field(field: &Field) -> Result> { for attribute in asset_meta_list.unwrap() { match attribute { - Meta::List(meta_list) if meta_list.path.is_ident(TEXTURE_ATLAS_ATTRIBUTE) => { + Meta::List(meta_list) + if meta_list + .path + .is_ident(TextureAtlasAttribute::ATTRIBUTE_NAME) => + { #[cfg(not(feature = "2d"))] errors.push(ParseFieldError::Missing2dFeature( meta_list.into_token_stream(), @@ -433,7 +439,9 @@ fn parse_field(field: &Field) -> Result> { } builder.asset_paths = Some(paths); } - Meta::List(meta_list) if meta_list.path.is_ident(IMAGE_ATTRIBUTE) => { + Meta::List(meta_list) + if meta_list.path.is_ident(ImageAttribute::ATTRIBUTE_NAME) => + { #[cfg(all(not(feature = "2d"), not(feature = "3d")))] errors.push(ParseFieldError::Missing2dOr3dFeature( meta_list.into_token_stream(),