Fix load_folder for non-default Asset Sources (#10121)
# Objective Fixes #10120 ## Solution Assign the folder path source to loaded descendant asset paths in `load_folder`
This commit is contained in:
parent
56eb362327
commit
3866b1cc19
@ -463,6 +463,7 @@ impl AssetServer {
|
|||||||
let path = path.into().into_owned();
|
let path = path.into().into_owned();
|
||||||
|
|
||||||
fn load_folder<'a>(
|
fn load_folder<'a>(
|
||||||
|
source: AssetSourceId<'static>,
|
||||||
path: &'a Path,
|
path: &'a Path,
|
||||||
reader: &'a dyn AssetReader,
|
reader: &'a dyn AssetReader,
|
||||||
server: &'a AssetServer,
|
server: &'a AssetServer,
|
||||||
@ -474,10 +475,12 @@ impl AssetServer {
|
|||||||
let mut path_stream = reader.read_directory(path.as_ref()).await?;
|
let mut path_stream = reader.read_directory(path.as_ref()).await?;
|
||||||
while let Some(child_path) = path_stream.next().await {
|
while let Some(child_path) = path_stream.next().await {
|
||||||
if reader.is_directory(&child_path).await? {
|
if reader.is_directory(&child_path).await? {
|
||||||
load_folder(&child_path, reader, server, handles).await?;
|
load_folder(source.clone(), &child_path, reader, server, handles)
|
||||||
|
.await?;
|
||||||
} else {
|
} else {
|
||||||
let path = child_path.to_str().expect("Path should be a valid string.");
|
let path = child_path.to_str().expect("Path should be a valid string.");
|
||||||
match server.load_untyped_async(AssetPath::parse(path)).await {
|
let asset_path = AssetPath::parse(path).with_source(source.clone());
|
||||||
|
match server.load_untyped_async(asset_path).await {
|
||||||
Ok(handle) => handles.push(handle),
|
Ok(handle) => handles.push(handle),
|
||||||
// skip assets that cannot be loaded
|
// skip assets that cannot be loaded
|
||||||
Err(
|
Err(
|
||||||
@ -519,7 +522,7 @@ impl AssetServer {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let mut handles = Vec::new();
|
let mut handles = Vec::new();
|
||||||
match load_folder(path.path(), asset_reader, &server, &mut handles).await {
|
match load_folder(source.id(), path.path(), asset_reader, &server, &mut handles).await {
|
||||||
Ok(_) => server.send_asset_event(InternalAssetEvent::Loaded {
|
Ok(_) => server.send_asset_event(InternalAssetEvent::Loaded {
|
||||||
id,
|
id,
|
||||||
loaded_asset: LoadedAsset::new_with_dependencies(
|
loaded_asset: LoadedAsset::new_with_dependencies(
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user