Struct bevy_asset::Assets
source · pub struct Assets<T: Asset> { /* private fields */ }
Expand description
Stores Assets of a given type and tracks changes to them.
Each asset is mapped by a unique HandleId
, allowing any Handle
with the same
HandleId
to access it. These assets remain loaded for as long as a Strong handle to that
asset exists.
To store a reference to an asset without forcing it to stay loaded, you can use a Weak handle.
To make a Weak handle a Strong one, use Assets::get_handle
or pass the Assets
collection
into the handle’s make_strong
method.
Remember, if there are no Strong handles for an asset (i.e. they have all been dropped), the asset will unload. Make sure you always have a Strong handle when you want to keep an asset loaded!
Implementations§
source§impl<T: Asset> Assets<T>
impl<T: Asset> Assets<T>
sourcepub fn add(&mut self, asset: T) -> Handle<T>
pub fn add(&mut self, asset: T) -> Handle<T>
Adds an asset to the collection, returning a Strong handle to that asset.
Events
sourcepub fn set<H: Into<HandleId>>(&mut self, handle: H, asset: T) -> Handle<T>
pub fn set<H: Into<HandleId>>(&mut self, handle: H, asset: T) -> Handle<T>
Add/modify the asset pointed to by the given handle.
Unless there exists another Strong handle for this asset, it’s advised to use the returned Strong handle. Not doing so may result in the unexpected release of the asset.
See set_untracked
for more info.
sourcepub fn set_untracked<H: Into<HandleId>>(&mut self, handle: H, asset: T)
pub fn set_untracked<H: Into<HandleId>>(&mut self, handle: H, asset: T)
Add/modify the asset pointed to by the given handle.
If an asset already exists with the given HandleId
, it will be modified. Otherwise the
new asset will be inserted.
Events
AssetEvent::Created
: Sent if the asset did not yet exist with the given handle.AssetEvent::Modified
: Sent if the asset with given handle already existed.
sourcepub fn contains(&self, handle: &Handle<T>) -> bool
pub fn contains(&self, handle: &Handle<T>) -> bool
Checks if an asset exists for the given handle
sourcepub fn get_handle<H: Into<HandleId>>(&self, handle: H) -> Handle<T>
pub fn get_handle<H: Into<HandleId>>(&self, handle: H) -> Handle<T>
Gets a Strong handle pointing to the same asset as the given one.
sourcepub fn get_or_insert_with<H: Into<HandleId>>(
&mut self,
handle: H,
insert_fn: impl FnOnce() -> T
) -> &mut T
pub fn get_or_insert_with<H: Into<HandleId>>( &mut self, handle: H, insert_fn: impl FnOnce() -> T ) -> &mut T
Gets mutable access to an asset for the given handle, inserting a new value if none exists.
Events
AssetEvent::Created
: Sent if the asset did not yet exist with the given handle.
sourcepub fn iter(&self) -> impl Iterator<Item = (HandleId, &T)>
pub fn iter(&self) -> impl Iterator<Item = (HandleId, &T)>
Gets an iterator over all assets in the collection.
sourcepub fn iter_mut(&mut self) -> impl Iterator<Item = (HandleId, &mut T)>
pub fn iter_mut(&mut self) -> impl Iterator<Item = (HandleId, &mut T)>
Gets a mutable iterator over all assets in the collection.
sourcepub fn ids(&self) -> impl Iterator<Item = HandleId> + '_
pub fn ids(&self) -> impl Iterator<Item = HandleId> + '_
Gets an iterator over all HandleId
’s in the collection.
sourcepub fn remove<H: Into<HandleId>>(&mut self, handle: H) -> Option<T>
pub fn remove<H: Into<HandleId>>(&mut self, handle: H) -> Option<T>
Removes an asset for the given handle.
The asset is returned if it existed in the collection, otherwise None
.
Events
sourcepub fn clear(&mut self)
pub fn clear(&mut self)
Clears the inner asset map, removing all key-value pairs.
Keeps the allocated memory for reuse.
sourcepub fn reserve(&mut self, additional: usize)
pub fn reserve(&mut self, additional: usize)
Reserves capacity for at least additional more elements to be inserted into the assets.
The collection may reserve more space to avoid frequent reallocations.
sourcepub fn shrink_to_fit(&mut self)
pub fn shrink_to_fit(&mut self)
Shrinks the capacity of the asset map as much as possible.
It will drop down as much as possible while maintaining the internal rules and possibly leaving some space in accordance with the resize policy.
sourcepub fn asset_event_system(
events: EventWriter<'_, AssetEvent<T>>,
assets: ResMut<'_, Assets<T>>
)
pub fn asset_event_system( events: EventWriter<'_, AssetEvent<T>>, assets: ResMut<'_, Assets<T>> )
A system that creates AssetEvent
s at the end of the frame based on changes in the
asset storage.
Trait Implementations§
impl<T: Asset> Resource for Assets<T>where Self: Send + Sync + 'static,
Auto Trait Implementations§
impl<T> RefUnwindSafe for Assets<T>where T: RefUnwindSafe,
impl<T> Send for Assets<T>
impl<T> Sync for Assets<T>
impl<T> Unpin for Assets<T>where T: Unpin,
impl<T> UnwindSafe for Assets<T>where T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.