@@ -2302,6 +2302,7 @@ mod tests {
2302
2302
unused,
2303
2303
reason = "We only use this for asset processor tests, which are only compiled with the `multi_threaded` feature."
2304
2304
) ]
2305
+ #[ derive( TypePath ) ]
2305
2306
struct CoolTextSaver ;
2306
2307
2307
2308
impl AssetSaver for CoolTextSaver {
@@ -2343,12 +2344,13 @@ mod tests {
2343
2344
unused,
2344
2345
reason = "We only use this for asset processor tests, which are only compiled with the `multi_threaded` feature."
2345
2346
) ]
2347
+ #[ derive( TypePath ) ]
2346
2348
// Note: while we allow any Fn, since closures are unnameable types, creating a processor with a
2347
2349
// closure cannot be used (since we need to include the name of the transformer in the meta
2348
2350
// file).
2349
2351
struct RootAssetTransformer < M : MutateAsset < A > , A : Asset > ( M , PhantomData < fn ( & mut A ) > ) ;
2350
2352
2351
- trait MutateAsset < A : Asset > : Send + Sync + ' static {
2353
+ trait MutateAsset < A : Asset > : TypePath + Send + Sync + ' static {
2352
2354
fn mutate ( & self , asset : & mut A ) ;
2353
2355
}
2354
2356
@@ -2424,6 +2426,19 @@ mod tests {
2424
2426
assert_eq ! ( processed_asset, source_asset) ;
2425
2427
}
2426
2428
2429
+ // The asset processor currently requires multi_threaded.
2430
+ #[ cfg( feature = "multi_threaded" ) ]
2431
+ #[ derive( TypePath ) ]
2432
+ struct AddText ;
2433
+
2434
+ // The asset processor currently requires multi_threaded.
2435
+ #[ cfg( feature = "multi_threaded" ) ]
2436
+ impl MutateAsset < CoolText > for AddText {
2437
+ fn mutate ( & self , text : & mut CoolText ) {
2438
+ text. text . push_str ( "_def" ) ;
2439
+ }
2440
+ }
2441
+
2427
2442
// The asset processor currently requires multi_threaded.
2428
2443
#[ cfg( feature = "multi_threaded" ) ]
2429
2444
#[ test]
@@ -2434,14 +2449,6 @@ mod tests {
2434
2449
processed_dir,
2435
2450
} = create_app_with_asset_processor ( ) ;
2436
2451
2437
- struct AddText ;
2438
-
2439
- impl MutateAsset < CoolText > for AddText {
2440
- fn mutate ( & self , text : & mut CoolText ) {
2441
- text. text . push_str ( "_def" ) ;
2442
- }
2443
- }
2444
-
2445
2452
type CoolTextProcessor = LoadTransformAndSave <
2446
2453
CoolTextLoader ,
2447
2454
RootAssetTransformer < AddText , CoolText > ,
@@ -2494,13 +2501,67 @@ mod tests {
2494
2501
processed_dir,
2495
2502
} = create_app_with_asset_processor ( ) ;
2496
2503
2497
- struct AddText ;
2504
+ type CoolTextProcessor = LoadTransformAndSave <
2505
+ CoolTextLoader ,
2506
+ RootAssetTransformer < AddText , CoolText > ,
2507
+ CoolTextSaver ,
2508
+ > ;
2509
+ app. register_asset_loader ( CoolTextLoader )
2510
+ . register_asset_processor ( CoolTextProcessor :: new (
2511
+ RootAssetTransformer :: new ( AddText ) ,
2512
+ CoolTextSaver ,
2513
+ ) ) ;
2498
2514
2499
- impl MutateAsset < CoolText > for AddText {
2500
- fn mutate ( & self , text : & mut CoolText ) {
2501
- text. text . push_str ( "_def" ) ;
2502
- }
2503
- }
2515
+ let path = Path :: new ( "abc.cool.ron" ) ;
2516
+ source_dir. insert_asset_text (
2517
+ path,
2518
+ r#"(
2519
+ text: "abc",
2520
+ dependencies: [],
2521
+ embedded_dependencies: [],
2522
+ sub_texts: [],
2523
+ )"# ,
2524
+ ) ;
2525
+ source_dir. insert_meta_text ( path, r#"(
2526
+ meta_format_version: "1.0",
2527
+ asset: Process(
2528
+ processor: "bevy_asset::processor::process::LoadTransformAndSave<bevy_asset::tests::CoolTextLoader, bevy_asset::tests::RootAssetTransformer<bevy_asset::tests::AddText, bevy_asset::tests::CoolText>, bevy_asset::tests::CoolTextSaver>",
2529
+ settings: (
2530
+ loader_settings: (),
2531
+ transformer_settings: (),
2532
+ saver_settings: (),
2533
+ ),
2534
+ ),
2535
+ )"# ) ;
2536
+
2537
+ // Start the app, which also starts the asset processor.
2538
+ app. update ( ) ;
2539
+
2540
+ // Wait for all processing to finish.
2541
+ bevy_tasks:: block_on (
2542
+ app. world ( )
2543
+ . resource :: < AssetProcessor > ( )
2544
+ . data ( )
2545
+ . wait_until_finished ( ) ,
2546
+ ) ;
2547
+
2548
+ let processed_asset = processed_dir. get_asset ( path) . unwrap ( ) ;
2549
+ let processed_asset = str:: from_utf8 ( processed_asset. value ( ) ) . unwrap ( ) ;
2550
+ assert_eq ! (
2551
+ processed_asset,
2552
+ r#"(text:"abc_def",dependencies:[],embedded_dependencies:[],sub_texts:[])"#
2553
+ ) ;
2554
+ }
2555
+
2556
+ // The asset processor currently requires multi_threaded.
2557
+ #[ cfg( feature = "multi_threaded" ) ]
2558
+ #[ test]
2559
+ fn asset_processor_transforms_asset_with_short_path_meta ( ) {
2560
+ let AppWithProcessor {
2561
+ mut app,
2562
+ source_dir,
2563
+ processed_dir,
2564
+ } = create_app_with_asset_processor ( ) ;
2504
2565
2505
2566
type CoolTextProcessor = LoadTransformAndSave <
2506
2567
CoolTextLoader ,
@@ -2526,7 +2587,7 @@ mod tests {
2526
2587
source_dir. insert_meta_text ( path, r#"(
2527
2588
meta_format_version: "1.0",
2528
2589
asset: Process(
2529
- processor: "bevy_asset::processor::process:: LoadTransformAndSave<bevy_asset::tests:: CoolTextLoader, bevy_asset::tests:: RootAssetTransformer<bevy_asset::tests::asset_processor_transforms_asset_with_meta:: AddText, bevy_asset::tests:: CoolText>, bevy_asset::tests:: CoolTextSaver>",
2590
+ processor: "LoadTransformAndSave<CoolTextLoader, RootAssetTransformer<AddText, CoolText>, CoolTextSaver>",
2530
2591
settings: (
2531
2592
loader_settings: (),
2532
2593
transformer_settings: (),
0 commit comments