use bevy::app::AppExit; use bevy::audio::AudioPlugin; use bevy::prelude::*; use bevy::state::app::StatesPlugin; use bevy_asset_loader::prelude::*; #[test] fn same_collection_multiple_times() { let mut app = App::new(); app.add_plugins(( MinimalPlugins, AssetPlugin::default(), AudioPlugin::default(), StatesPlugin, )); app.init_state::(); #[cfg(feature = "progress_tracking")] app.add_plugins(iyes_progress::ProgressPlugin::new(MyStates::Load)); app.add_loading_state( LoadingState::new(MyStates::Load) .continue_to_state(MyStates::Play) .load_collection::() .load_collection::(), ) .configure_loading_state(LoadingStateConfig::new(MyStates::Load).load_collection::()) .add_systems(Update, (quit.run_if(in_state(MyStates::Play)), timeout)) .add_systems(OnEnter(MyStates::Play), use_loading_assets) .run(); } #[derive(AssetCollection, Resource)] struct MyAssets { #[asset(path = "audio/background.ogg")] background: Handle, } #[derive(Clone, Copy, Debug, States, Default, PartialEq, Eq, Hash)] enum MyStates { #[default] Load, Play, } fn use_loading_assets(assets: Res, asset_server: Res) { assert!( asset_server.is_loaded_with_dependencies(&assets.background), "The collection is not fully loaded!" ); } fn timeout(time: Res