pub struct BundleWriter<'a>(/* private fields */);Expand description
Enables pushing components to the internal BundleScratch, which can then be
written as a dynamic bundle.
Components pushed to this writer should either be followed by a BundleWriter::write or a
BundleScratch::manual_drop to avoid leaking.
Implementations§
Source§impl<'a> BundleWriter<'a>
impl<'a> BundleWriter<'a>
Sourcepub unsafe fn push_component<C: Component>(
&mut self,
components: &mut ComponentsRegistrator<'_>,
component: C,
)
pub unsafe fn push_component<C: Component>( &mut self, components: &mut ComponentsRegistrator<'_>, component: C, )
Pushes the given component to the back of the current bundle scratch space. It will register
the component in components if it does not already exist.
§Safety
components must be from the same world that all previous Self::push_component or Self::push_component_by_id calls were called with,
and the next Self::write or Self::write_with_relationship_hook_insert_mode call.
Sourcepub unsafe fn push_component_by_id(
&mut self,
id: ComponentId,
component: OwningPtr<'_>,
layout: Layout,
)
pub unsafe fn push_component_by_id( &mut self, id: ComponentId, component: OwningPtr<'_>, layout: Layout, )
Pushes the given component ptr to the back of the current bundle scratch space.
§Safety
components must be from the same world that all previous Self::push_component or Self::push_component_by_id calls were called with,
and the next Self::write or Self::write_with_relationship_hook_insert_mode call. component must point to a Component value that matches id.
layout must correspond to the layout of the Component type.
Sourcepub unsafe fn write(self, entity: &mut EntityWorldMut<'_>)
pub unsafe fn write(self, entity: &mut EntityWorldMut<'_>)
Writes the current contents of the bundle to the given entity and clears the scratch space.
Runs with RelationshipHookMode::Run by default.
Use write_with_relationship_hook_insert_mode if you need more flexibility.
§Safety
entity must be from the same world that all Self::push_component or Self::push_component_by_id calls since the last
Self::write or Self::write_with_relationship_hook_insert_mode were called with.
Sourcepub unsafe fn write_with_relationship_hook_insert_mode(
self,
entity: &mut EntityWorldMut<'_>,
relationship_hook_insert_mode: RelationshipHookMode,
)
pub unsafe fn write_with_relationship_hook_insert_mode( self, entity: &mut EntityWorldMut<'_>, relationship_hook_insert_mode: RelationshipHookMode, )
Writes the current contents of the bundle to the given entity and clears the scratch space.
Also accepts RelationshipHookMode as an argument. Prefer write to this if
RelationshipHookMode::Run by default is enough.
§Safety
entity must be from the same world that all Self::push_component or Self::push_component_by_id calls since the last
Self::write or Self::write_with_relationship_hook_insert_mode were called with.
Auto Trait Implementations§
impl<'a> Freeze for BundleWriter<'a>
impl<'a> !RefUnwindSafe for BundleWriter<'a>
impl<'a> Send for BundleWriter<'a>
impl<'a> !Sync for BundleWriter<'a>
impl<'a> Unpin for BundleWriter<'a>
impl<'a> UnsafeUnpin for BundleWriter<'a>
impl<'a> !UnwindSafe for BundleWriter<'a>
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>, which can then be
downcast into Box<dyn 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>, which 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.