diff --git a/bevy_asset_loader/src/standard_dynamic_asset.rs b/bevy_asset_loader/src/standard_dynamic_asset.rs index bd365ba..cba4a34 100644 --- a/bevy_asset_loader/src/standard_dynamic_asset.rs +++ b/bevy_asset_loader/src/standard_dynamic_asset.rs @@ -56,6 +56,13 @@ pub enum StandardDynamicAsset { }, } +#[derive(Debug, Clone, serde::Deserialize)] +#[serde(untagged)] +pub enum ExtendedStandardDynamicAsset { + Collection(Vec), + Single(StandardDynamicAsset), +} + impl DynamicAsset for StandardDynamicAsset { fn load(&self, asset_server: &AssetServer) -> Vec { match self { @@ -143,13 +150,29 @@ impl DynamicAsset for StandardDynamicAsset { } } +impl DynamicAsset for ExtendedStandardDynamicAsset { + fn load(&self, asset_server: &AssetServer) -> Vec { + match self { + ExtendedStandardDynamicAsset::Single(asset) => asset.load(asset_server), + ExtendedStandardDynamicAsset::Collection(_asset_list) => todo!(), + } + } + + fn build(&self, world: &mut World) -> Result { + match self { + ExtendedStandardDynamicAsset::Single(asset) => asset.build(world), + ExtendedStandardDynamicAsset::Collection(_asset_list) => todo!(), + } + } +} + /// The asset defining a mapping from asset keys to dynamic assets /// /// These assets are loaded at the beginning of a loading state /// and combined in [`DynamicAssets`](DynamicAssets). #[derive(serde::Deserialize, TypeUuid)] #[uuid = "2df82c01-9c71-4aa8-adc4-71c5824768f1"] -pub struct StandardDynamicAssetCollection(pub HashMap); +pub struct StandardDynamicAssetCollection(pub HashMap); impl DynamicAssetCollection for StandardDynamicAssetCollection { fn register(&self, dynamic_assets: &mut DynamicAssets) {