Skip to main content

Assets

Struct Assets 

Source
pub struct Assets<A: Asset> { /* private fields */ }
Expand description

Stores Asset values identified by their AssetId.

Assets identified by AssetId::Index will be stored in a “dense” vec-like storage. This is more efficient, but it means that the assets can only be identified at runtime. This is the default behavior.

Assets identified by AssetId::Uuid will be stored in a hashmap. This is less efficient, but it means that the assets can be referenced at compile time.

This tracks (and queues) AssetEvent events whenever changes to the collection occur. To check whether the asset used by a given component has changed (due to a change in the handle or the underlying asset) use the AssetChanged query filter.

Implementations§

Source§

impl<A: Asset> Assets<A>

Source

pub fn get_handle_provider(&self) -> AssetHandleProvider

Retrieves an AssetHandleProvider capable of reserving new Handle values for assets that will be stored in this collection.

Source

pub fn reserve_handle(&self) -> Handle<A>

Reserves a new Handle for an asset that will be stored in this collection.

Source

pub fn insert( &mut self, id: impl Into<AssetId<A>>, asset: A, ) -> Result<(), InvalidGenerationError>

Inserts the given asset, identified by the given id. If an asset already exists for id, it will be replaced.

Note: This will never return an error for UUID asset IDs.

Source

pub fn get_or_insert_with( &mut self, id: impl Into<AssetId<A>>, insert_fn: impl FnOnce() -> A, ) -> Result<AssetMut<'_, A>, InvalidGenerationError>

Retrieves an Asset stored for the given id if it exists. If it does not exist, it will be inserted using insert_fn.

Note: This will never return an error for UUID asset IDs.

Source

pub fn contains(&self, id: impl Into<AssetId<A>>) -> bool

Returns true if the id exists in this collection. Otherwise it returns false.

Source

pub fn add(&mut self, asset: impl Into<A>) -> Handle<A>

Adds the given asset and allocates a new strong Handle for it.

Source

pub fn get_strong_handle(&mut self, id: AssetId<A>) -> Option<Handle<A>>

Upgrade an AssetId into a strong Handle that will prevent asset drop.

Returns None if the provided id is not part of this Assets collection. For example, it may have been dropped earlier.

Source

pub fn get(&self, id: impl Into<AssetId<A>>) -> Option<&A>

Retrieves a reference to the Asset with the given id, if it exists. Note that this supports anything that implements Into<AssetId<A>>, which includes Handle and AssetId.

Source

pub fn get_mut(&mut self, id: impl Into<AssetId<A>>) -> Option<AssetMut<'_, A>>

Retrieves a mutable reference to the Asset with the given id, if it exists. Note that this supports anything that implements Into<AssetId<A>>, which includes Handle and AssetId.

Source

pub fn get_mut_untracked(&mut self, id: impl Into<AssetId<A>>) -> Option<&mut A>

Retrieves a mutable reference to the Asset with the given id, if it exists.

This is the same as Assets::get_mut except it doesn’t emit AssetEvent::Modified.

Source

pub fn remove(&mut self, id: impl Into<AssetId<A>>) -> Option<A>

Removes (and returns) the Asset with the given id, if it exists. Note that this supports anything that implements Into<AssetId<A>>, which includes Handle and AssetId.

Source

pub fn remove_untracked(&mut self, id: impl Into<AssetId<A>>) -> Option<A>

Removes (and returns) the Asset with the given id, if it exists. This skips emitting AssetEvent::Removed. Note that this supports anything that implements Into<AssetId<A>>, which includes Handle and AssetId.

This is the same as Assets::remove except it doesn’t emit AssetEvent::Removed.

Source

pub fn is_empty(&self) -> bool

Returns true if there are no assets in this collection.

Source

pub fn len(&self) -> usize

Returns the number of assets currently stored in the collection.

Source

pub fn ids(&self) -> impl Iterator<Item = AssetId<A>> + '_

Returns an iterator over the AssetId of every Asset stored in this collection.

Source

pub fn iter(&self) -> impl Iterator<Item = (AssetId<A>, &A)>

Returns an iterator over the AssetId and Asset ref of every asset in this collection.

Source

pub fn iter_mut(&mut self) -> AssetsMutIterator<'_, A>

Returns an iterator over the AssetId and mutable Asset ref of every asset in this collection.

Source

pub fn track_assets( assets: ResMut<'_, Self>, asset_server: Res<'_, AssetServer>, )

A system that synchronizes the state of assets in this collection with the AssetServer. This manages Handle drop events.

Trait Implementations§

Source§

impl<A: Asset> Component for Assets<A>
where Self: Send + Sync + 'static,

Source§

const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::SparseSet

A constant indicating the storage type used for this component.
Source§

type Mutability = Mutable

A marker type to assist Bevy with determining if this component is mutable, or immutable. Mutable components will have Component<Mutability = Mutable>, while immutable components will instead have Component<Mutability = Immutable>. Read more
Source§

fn register_required_components( _requiree: ComponentId, required_components: &mut RequiredComponentsRegistrator<'_, '_>, )

Registers required components. Read more
Source§

fn clone_behavior() -> ComponentCloneBehavior

Called when registering this component, allowing to override clone function (or disable cloning altogether) for this component. Read more
Source§

fn relationship_accessor() -> Option<ComponentRelationshipAccessor<Self>>

Returns ComponentRelationshipAccessor required for working with relationships in dynamic contexts. Read more
Source§

fn on_add() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_add ComponentHook for this Component if one is defined.
Source§

fn on_insert() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_insert ComponentHook for this Component if one is defined.
Source§

fn on_discard() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_discard ComponentHook for this Component if one is defined.
Source§

fn on_remove() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_remove ComponentHook for this Component if one is defined.
Source§

fn on_despawn() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_despawn ComponentHook for this Component if one is defined.
Source§

fn map_entities<E>(_this: &mut Self, _mapper: &mut E)
where E: EntityMapper,

Maps the entities on this component using the given EntityMapper. This is used to remap entities in contexts like scenes and entity cloning. When deriving Component, this is populated by annotating fields containing entities with #[entities] Read more
Source§

impl<A: Asset> Default for Assets<A>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<A: Asset> Resource for Assets<A>
where Self: Send + Sync + 'static,

Auto Trait Implementations§

§

impl<A> Freeze for Assets<A>

§

impl<A> RefUnwindSafe for Assets<A>
where A: RefUnwindSafe,

§

impl<A> Send for Assets<A>

§

impl<A> Sync for Assets<A>

§

impl<A> Unpin for Assets<A>
where A: Unpin,

§

impl<A> UnsafeUnpin for Assets<A>

§

impl<A> UnwindSafe for Assets<A>
where A: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<C> Bundle for C
where C: Component,

Source§

fn component_ids( components: &mut ComponentsRegistrator<'_>, ) -> impl Iterator<Item = ComponentId> + use<C>

Source§

fn get_component_ids( components: &Components, ) -> impl Iterator<Item = Option<ComponentId>>

Return a iterator over this Bundle’s component ids. This will be None if the component has not been registered.
Source§

impl<C> BundleFromComponents for C
where C: Component,

Source§

unsafe fn from_components<T, F>(ctx: &mut T, func: &mut F) -> C
where F: for<'a> FnMut(&'a mut T) -> OwningPtr<'a>, C: Sized,

Source§

impl<T> ConditionalSend for T
where T: Send,

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &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)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<C> DynamicBundle for C
where C: Component,

Source§

type Effect = ()

An operation on the entity that happens after inserting this bundle.
Source§

unsafe fn get_components( ptr: MovingPtr<'_, C>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), ) -> <C as DynamicBundle>::Effect

Moves the components out of the bundle. Read more
Source§

unsafe fn apply_effect( _ptr: MovingPtr<'_, MaybeUninit<C>>, _entity: &mut EntityWorldMut<'_>, )

Applies the after-effects of spawning this bundle. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromWorld for T
where T: Default,

Source§

fn from_world(_world: &mut World) -> T

Creates Self using default().

Source§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

Source§

const WITNESS: W = W::MAKE

A constant of the type witness
Source§

impl<T> Identity for T
where T: ?Sized,

Source§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
Source§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoResult<T> for T

Source§

fn into_result(self) -> Result<T, RunSystemError>

Converts this type into the system output type.
Source§

impl<A> Is for A
where A: Any,

Source§

fn is<T>() -> bool
where T: Any,

Checks if the current type “is” another type, using a TypeId equality comparison. This is most useful in the context of generic logic. Read more
Source§

impl<T> Settings for T
where T: 'static + Send + Sync,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more