bevy_asset/
direct_access_ext.rs1use bevy_ecs::world::World;
5
6use crate::{meta::Settings, Asset, AssetPath, AssetServer, Assets, Handle};
7
8pub trait DirectAssetAccessExt {
10 fn add_asset<A: Asset>(&mut self, asset: impl Into<A>) -> Handle<A>;
12
13 fn load_asset<'a, A: Asset>(&self, path: impl Into<AssetPath<'a>>) -> Handle<A>;
15
16 fn load_asset_with_settings<'a, A: Asset, S: Settings>(
18 &self,
19 path: impl Into<AssetPath<'a>>,
20 settings: impl Fn(&mut S) + Send + Sync + 'static,
21 ) -> Handle<A>;
22}
23
24impl DirectAssetAccessExt for World {
25 fn add_asset<'a, A: Asset>(&mut self, asset: impl Into<A>) -> Handle<A> {
30 self.resource_mut::<Assets<A>>().add(asset)
31 }
32
33 fn load_asset<'a, A: Asset>(&self, path: impl Into<AssetPath<'a>>) -> Handle<A> {
38 self.resource::<AssetServer>().load(path)
39 }
40 fn load_asset_with_settings<'a, A: Asset, S: Settings>(
45 &self,
46 path: impl Into<AssetPath<'a>>,
47 settings: impl Fn(&mut S) + Send + Sync + 'static,
48 ) -> Handle<A> {
49 self.resource::<AssetServer>()
50 .load_with_settings(path, settings)
51 }
52}