pub struct LoadingState<State: States> { /* private fields */ }
Expand description

A Bevy plugin to configure automatic asset loading


fn main() {
    App::new()
        .init_state::<GameState>()
        .add_plugins((MinimalPlugins, AssetPlugin::default()))
        .add_loading_state(LoadingState::new(GameState::Loading)
            .continue_to_state(GameState::Menu)
            .load_collection::<AudioAssets>()
            .load_collection::<ImageAssets>()
        )
        .add_systems(OnEnter(GameState::Menu), play_audio)
        .run();
}

fn play_audio(mut commands: Commands, audio_assets: Res<AudioAssets>) {
    commands.spawn(AudioBundle {
        source: audio_assets.background.clone(),
        ..default()
    });
}

#[derive(Clone, Eq, PartialEq, Debug, Hash, Default, States)]
enum GameState {
    #[default]
    Loading,
    Menu
}

#[derive(AssetCollection, Resource)]
pub struct AudioAssets {
    #[asset(path = "audio/background.ogg")]
    pub background: Handle<AudioSource>,
}

#[derive(AssetCollection, Resource)]
pub struct ImageAssets {
    #[asset(path = "images/player.png")]
    pub player: Handle<Image>,
    #[asset(path = "images/tree.png")]
    pub tree: Handle<Image>,
}

Implementations§

source§

impl<S> LoadingState<S>
where S: States,

source

pub fn new(load: S) -> LoadingState<S>

Create a new LoadingState

This function takes a State during which all asset collections will be loaded and inserted as resources.

    App::new()
        .add_loading_state(
          LoadingState::new(GameState::Loading)
            .continue_to_state(GameState::Menu)
            .load_collection::<AudioAssets>()
            .load_collection::<ImageAssets>()
        )
source

pub fn continue_to_state(self, next: S) -> Self

The LoadingState will set this Bevy State after all asset collections are loaded and inserted as resources.

    App::new()
        .add_loading_state(
          LoadingState::new(GameState::Loading)
            .continue_to_state(GameState::Menu)
            .load_collection::<AudioAssets>()
            .load_collection::<ImageAssets>()
        )
source

pub fn on_failure_continue_to_state(self, next: S) -> Self

The LoadingState will set this Bevy State if an asset fails to load.

    App::new()
        .add_loading_state(
          LoadingState::new(GameState::Loading)
            .continue_to_state(GameState::Menu)
            .on_failure_continue_to_state(GameState::Error)
            .load_collection::<MyAssets>()
        )
source

pub fn build(self, app: &mut App)

Finish configuring the LoadingState

Calling this function is required to set up the asset loading. Most of the time you do not want to call this method directly though, but complete the setup using LoadingStateAppExt::add_loading_state.

    App::new()
        .add_loading_state(
          LoadingState::new(GameState::Loading)
            .continue_to_state(GameState::Menu)
            .load_collection::<AudioAssets>()
            .load_collection::<ImageAssets>()
        )

Trait Implementations§

source§

impl<S: States> ConfigureLoadingState for LoadingState<S>

source§

fn load_collection<A: AssetCollection>(self) -> Self

Add the given collection to the loading state. Read more
source§

fn init_resource<R: Resource + FromWorld>(self) -> Self

The resource will be initialized at the end of the loading state using its FromWorld implementation. All asset collections will be available at that point and fully loaded. Read more
source§

fn register_dynamic_asset_collection<C: DynamicAssetCollection + Asset>( self ) -> Self

Register a custom dynamic asset collection type Read more
source§

fn with_dynamic_assets_file<C: DynamicAssetCollection + Asset>( self, file: &str ) -> Self

Add a file containing dynamic assets to the loading state. Keys contained in the file, will be available for asset collections. Read more

Auto Trait Implementations§

§

impl<State> !RefUnwindSafe for LoadingState<State>

§

impl<State> Send for LoadingState<State>

§

impl<State> Sync for LoadingState<State>

§

impl<State> Unpin for LoadingState<State>
where State: Unpin,

§

impl<State> !UnwindSafe for LoadingState<State>

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, U> AsBindGroupShaderType<U> for T
where U: ShaderType, &'a T: for<'a> Into<U>,

source§

fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U

Return the T ShaderType for self. When used in AsBindGroup derives, it is safe to assume that all images in self exist.
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<T> Downcast<T> for T

source§

fn downcast(&self) -> &T

source§

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

source§

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

Convert 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>

Convert 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)

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

Convert &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> DowncastSync for T
where T: Any + Send + Sync,

source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<S> FromSample<S> for S

source§

fn from_sample_(s: S) -> S

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, U> ToSample<U> for T
where U: FromSample<T>,

source§

fn to_sample_(self) -> U

source§

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

§

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>,

§

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> Upcast<T> for T

source§

fn upcast(&self) -> Option<&T>

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
source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

source§

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

source§

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

source§

impl<T> WasmNotSendSync for T

source§

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