DynamicBundle

Trait DynamicBundle 

Source
pub trait DynamicBundle: Sized {
    type Effect;

    // Required methods
    unsafe fn get_components(
        ptr: MovingPtr<'_, Self>,
        func: &mut impl FnMut(StorageType, OwningPtr<'_>),
    );
    unsafe fn apply_effect(
        ptr: MovingPtr<'_, MaybeUninit<Self>>,
        entity: &mut EntityWorldMut<'_>,
    );
}
Expand description

The parts from Bundle that don’t require statically knowing the components of the bundle.

Required Associated Types§

Source

type Effect

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

Required Methods§

Source

unsafe fn get_components( ptr: MovingPtr<'_, Self>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), )

Moves the components out of the bundle.

§Safety

For callers:

  • Must be called exactly once before apply_effect
  • The StorageType argument passed into func must be correct for the component being fetched.
  • apply_effect must be called exactly once after this has been called if Effect: !NoBundleEffect

For implementors:

Source

unsafe fn apply_effect( ptr: MovingPtr<'_, MaybeUninit<Self>>, entity: &mut EntityWorldMut<'_>, )

Applies the after-effects of spawning this bundle.

This is applied after all residual changes to the World, including flushing the internal command queue.

§Safety

For callers:

  • Must be called exactly once after get_components has been called.
  • ptr must point to the instance of Self that get_components was called on, all of fields that were moved out of in get_components will not be valid anymore.

For implementors:

  • If any part of ptr is to be accessed in this function, it must not be dropped at any point in get_components. Calling bevy_ptr::deconstruct_moving_ptr in get_components automatically ensures this is the case.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl DynamicBundle for ()

Source§

type Effect = ()

Source§

unsafe fn get_components( ptr: MovingPtr<'_, Self>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), )

Source§

unsafe fn apply_effect( ptr: MovingPtr<'_, MaybeUninit<Self>>, entity: &mut EntityWorldMut<'_>, )

Source§

impl<B0: Bundle, B1: Bundle> DynamicBundle for (B0, B1)

Source§

type Effect = (<B0 as DynamicBundle>::Effect, <B1 as DynamicBundle>::Effect)

Source§

unsafe fn get_components( ptr: MovingPtr<'_, Self>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), )

Source§

unsafe fn apply_effect( ptr: MovingPtr<'_, MaybeUninit<Self>>, entity: &mut EntityWorldMut<'_>, )

Source§

impl<B0: Bundle, B1: Bundle, B2: Bundle> DynamicBundle for (B0, B1, B2)

Source§

type Effect = (<B0 as DynamicBundle>::Effect, <B1 as DynamicBundle>::Effect, <B2 as DynamicBundle>::Effect)

Source§

unsafe fn get_components( ptr: MovingPtr<'_, Self>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), )

Source§

unsafe fn apply_effect( ptr: MovingPtr<'_, MaybeUninit<Self>>, entity: &mut EntityWorldMut<'_>, )

Source§

impl<B0: Bundle, B1: Bundle, B2: Bundle, B3: Bundle> DynamicBundle for (B0, B1, B2, B3)

Source§

type Effect = (<B0 as DynamicBundle>::Effect, <B1 as DynamicBundle>::Effect, <B2 as DynamicBundle>::Effect, <B3 as DynamicBundle>::Effect)

Source§

unsafe fn get_components( ptr: MovingPtr<'_, Self>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), )

Source§

unsafe fn apply_effect( ptr: MovingPtr<'_, MaybeUninit<Self>>, entity: &mut EntityWorldMut<'_>, )

Source§

impl<B0: Bundle, B1: Bundle, B2: Bundle, B3: Bundle, B4: Bundle> DynamicBundle for (B0, B1, B2, B3, B4)

Source§

type Effect = (<B0 as DynamicBundle>::Effect, <B1 as DynamicBundle>::Effect, <B2 as DynamicBundle>::Effect, <B3 as DynamicBundle>::Effect, <B4 as DynamicBundle>::Effect)

Source§

unsafe fn get_components( ptr: MovingPtr<'_, Self>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), )

Source§

unsafe fn apply_effect( ptr: MovingPtr<'_, MaybeUninit<Self>>, entity: &mut EntityWorldMut<'_>, )

Source§

impl<B0: Bundle, B1: Bundle, B2: Bundle, B3: Bundle, B4: Bundle, B5: Bundle> DynamicBundle for (B0, B1, B2, B3, B4, B5)

Source§

type Effect = (<B0 as DynamicBundle>::Effect, <B1 as DynamicBundle>::Effect, <B2 as DynamicBundle>::Effect, <B3 as DynamicBundle>::Effect, <B4 as DynamicBundle>::Effect, <B5 as DynamicBundle>::Effect)

Source§

unsafe fn get_components( ptr: MovingPtr<'_, Self>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), )

Source§

unsafe fn apply_effect( ptr: MovingPtr<'_, MaybeUninit<Self>>, entity: &mut EntityWorldMut<'_>, )

Source§

impl<B0: Bundle, B1: Bundle, B2: Bundle, B3: Bundle, B4: Bundle, B5: Bundle, B6: Bundle> DynamicBundle for (B0, B1, B2, B3, B4, B5, B6)

Source§

type Effect = (<B0 as DynamicBundle>::Effect, <B1 as DynamicBundle>::Effect, <B2 as DynamicBundle>::Effect, <B3 as DynamicBundle>::Effect, <B4 as DynamicBundle>::Effect, <B5 as DynamicBundle>::Effect, <B6 as DynamicBundle>::Effect)

Source§

unsafe fn get_components( ptr: MovingPtr<'_, Self>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), )

Source§

unsafe fn apply_effect( ptr: MovingPtr<'_, MaybeUninit<Self>>, entity: &mut EntityWorldMut<'_>, )

Source§

impl<B0: Bundle, B1: Bundle, B2: Bundle, B3: Bundle, B4: Bundle, B5: Bundle, B6: Bundle, B7: Bundle> DynamicBundle for (B0, B1, B2, B3, B4, B5, B6, B7)

Source§

type Effect = (<B0 as DynamicBundle>::Effect, <B1 as DynamicBundle>::Effect, <B2 as DynamicBundle>::Effect, <B3 as DynamicBundle>::Effect, <B4 as DynamicBundle>::Effect, <B5 as DynamicBundle>::Effect, <B6 as DynamicBundle>::Effect, <B7 as DynamicBundle>::Effect)

Source§

unsafe fn get_components( ptr: MovingPtr<'_, Self>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), )

Source§

unsafe fn apply_effect( ptr: MovingPtr<'_, MaybeUninit<Self>>, entity: &mut EntityWorldMut<'_>, )

Source§

impl<B0: Bundle, B1: Bundle, B2: Bundle, B3: Bundle, B4: Bundle, B5: Bundle, B6: Bundle, B7: Bundle, B8: Bundle> DynamicBundle for (B0, B1, B2, B3, B4, B5, B6, B7, B8)

Source§

type Effect = (<B0 as DynamicBundle>::Effect, <B1 as DynamicBundle>::Effect, <B2 as DynamicBundle>::Effect, <B3 as DynamicBundle>::Effect, <B4 as DynamicBundle>::Effect, <B5 as DynamicBundle>::Effect, <B6 as DynamicBundle>::Effect, <B7 as DynamicBundle>::Effect, <B8 as DynamicBundle>::Effect)

Source§

unsafe fn get_components( ptr: MovingPtr<'_, Self>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), )

Source§

unsafe fn apply_effect( ptr: MovingPtr<'_, MaybeUninit<Self>>, entity: &mut EntityWorldMut<'_>, )

Source§

impl<B0: Bundle, B1: Bundle, B2: Bundle, B3: Bundle, B4: Bundle, B5: Bundle, B6: Bundle, B7: Bundle, B8: Bundle, B9: Bundle> DynamicBundle for (B0, B1, B2, B3, B4, B5, B6, B7, B8, B9)

Source§

type Effect = (<B0 as DynamicBundle>::Effect, <B1 as DynamicBundle>::Effect, <B2 as DynamicBundle>::Effect, <B3 as DynamicBundle>::Effect, <B4 as DynamicBundle>::Effect, <B5 as DynamicBundle>::Effect, <B6 as DynamicBundle>::Effect, <B7 as DynamicBundle>::Effect, <B8 as DynamicBundle>::Effect, <B9 as DynamicBundle>::Effect)

Source§

unsafe fn get_components( ptr: MovingPtr<'_, Self>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), )

Source§

unsafe fn apply_effect( ptr: MovingPtr<'_, MaybeUninit<Self>>, entity: &mut EntityWorldMut<'_>, )

Source§

impl<B0: Bundle, B1: Bundle, B2: Bundle, B3: Bundle, B4: Bundle, B5: Bundle, B6: Bundle, B7: Bundle, B8: Bundle, B9: Bundle, B10: Bundle> DynamicBundle for (B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10)

Source§

type Effect = (<B0 as DynamicBundle>::Effect, <B1 as DynamicBundle>::Effect, <B2 as DynamicBundle>::Effect, <B3 as DynamicBundle>::Effect, <B4 as DynamicBundle>::Effect, <B5 as DynamicBundle>::Effect, <B6 as DynamicBundle>::Effect, <B7 as DynamicBundle>::Effect, <B8 as DynamicBundle>::Effect, <B9 as DynamicBundle>::Effect, <B10 as DynamicBundle>::Effect)

Source§

unsafe fn get_components( ptr: MovingPtr<'_, Self>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), )

Source§

unsafe fn apply_effect( ptr: MovingPtr<'_, MaybeUninit<Self>>, entity: &mut EntityWorldMut<'_>, )

Source§

impl<B0: Bundle, B1: Bundle, B2: Bundle, B3: Bundle, B4: Bundle, B5: Bundle, B6: Bundle, B7: Bundle, B8: Bundle, B9: Bundle, B10: Bundle, B11: Bundle> DynamicBundle for (B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11)

Source§

type Effect = (<B0 as DynamicBundle>::Effect, <B1 as DynamicBundle>::Effect, <B2 as DynamicBundle>::Effect, <B3 as DynamicBundle>::Effect, <B4 as DynamicBundle>::Effect, <B5 as DynamicBundle>::Effect, <B6 as DynamicBundle>::Effect, <B7 as DynamicBundle>::Effect, <B8 as DynamicBundle>::Effect, <B9 as DynamicBundle>::Effect, <B10 as DynamicBundle>::Effect, <B11 as DynamicBundle>::Effect)

Source§

unsafe fn get_components( ptr: MovingPtr<'_, Self>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), )

Source§

unsafe fn apply_effect( ptr: MovingPtr<'_, MaybeUninit<Self>>, entity: &mut EntityWorldMut<'_>, )

Source§

impl<B0: Bundle, B1: Bundle, B2: Bundle, B3: Bundle, B4: Bundle, B5: Bundle, B6: Bundle, B7: Bundle, B8: Bundle, B9: Bundle, B10: Bundle, B11: Bundle, B12: Bundle> DynamicBundle for (B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12)

Source§

type Effect = (<B0 as DynamicBundle>::Effect, <B1 as DynamicBundle>::Effect, <B2 as DynamicBundle>::Effect, <B3 as DynamicBundle>::Effect, <B4 as DynamicBundle>::Effect, <B5 as DynamicBundle>::Effect, <B6 as DynamicBundle>::Effect, <B7 as DynamicBundle>::Effect, <B8 as DynamicBundle>::Effect, <B9 as DynamicBundle>::Effect, <B10 as DynamicBundle>::Effect, <B11 as DynamicBundle>::Effect, <B12 as DynamicBundle>::Effect)

Source§

unsafe fn get_components( ptr: MovingPtr<'_, Self>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), )

Source§

unsafe fn apply_effect( ptr: MovingPtr<'_, MaybeUninit<Self>>, entity: &mut EntityWorldMut<'_>, )

Source§

impl<B0: Bundle, B1: Bundle, B2: Bundle, B3: Bundle, B4: Bundle, B5: Bundle, B6: Bundle, B7: Bundle, B8: Bundle, B9: Bundle, B10: Bundle, B11: Bundle, B12: Bundle, B13: Bundle> DynamicBundle for (B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13)

Source§

type Effect = (<B0 as DynamicBundle>::Effect, <B1 as DynamicBundle>::Effect, <B2 as DynamicBundle>::Effect, <B3 as DynamicBundle>::Effect, <B4 as DynamicBundle>::Effect, <B5 as DynamicBundle>::Effect, <B6 as DynamicBundle>::Effect, <B7 as DynamicBundle>::Effect, <B8 as DynamicBundle>::Effect, <B9 as DynamicBundle>::Effect, <B10 as DynamicBundle>::Effect, <B11 as DynamicBundle>::Effect, <B12 as DynamicBundle>::Effect, <B13 as DynamicBundle>::Effect)

Source§

unsafe fn get_components( ptr: MovingPtr<'_, Self>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), )

Source§

unsafe fn apply_effect( ptr: MovingPtr<'_, MaybeUninit<Self>>, entity: &mut EntityWorldMut<'_>, )

Source§

impl<B0: Bundle, B1: Bundle, B2: Bundle, B3: Bundle, B4: Bundle, B5: Bundle, B6: Bundle, B7: Bundle, B8: Bundle, B9: Bundle, B10: Bundle, B11: Bundle, B12: Bundle, B13: Bundle, B14: Bundle> DynamicBundle for (B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14)

Source§

type Effect = (<B0 as DynamicBundle>::Effect, <B1 as DynamicBundle>::Effect, <B2 as DynamicBundle>::Effect, <B3 as DynamicBundle>::Effect, <B4 as DynamicBundle>::Effect, <B5 as DynamicBundle>::Effect, <B6 as DynamicBundle>::Effect, <B7 as DynamicBundle>::Effect, <B8 as DynamicBundle>::Effect, <B9 as DynamicBundle>::Effect, <B10 as DynamicBundle>::Effect, <B11 as DynamicBundle>::Effect, <B12 as DynamicBundle>::Effect, <B13 as DynamicBundle>::Effect, <B14 as DynamicBundle>::Effect)

Source§

unsafe fn get_components( ptr: MovingPtr<'_, Self>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), )

Source§

unsafe fn apply_effect( ptr: MovingPtr<'_, MaybeUninit<Self>>, entity: &mut EntityWorldMut<'_>, )

Source§

impl<B: Bundle> DynamicBundle for (B,)

Source§

type Effect = (<B as DynamicBundle>::Effect,)

Source§

unsafe fn get_components( ptr: MovingPtr<'_, Self>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), )

Source§

unsafe fn apply_effect( ptr: MovingPtr<'_, MaybeUninit<Self>>, entity: &mut EntityWorldMut<'_>, )

Implementors§