bevy_ecs::world::unsafe_world_cell

Struct UnsafeEntityCell

Source
pub struct UnsafeEntityCell<'w> { /* private fields */ }
Expand description

A interior-mutable reference to a particular Entity and all of its components

Implementations§

Source§

impl<'w> UnsafeEntityCell<'w>

Source

pub fn id(self) -> Entity

Returns the ID of the current entity.

Source

pub fn location(self) -> EntityLocation

Gets metadata indicating the location where the current entity is stored.

Source

pub fn archetype(self) -> &'w Archetype

Returns the archetype that the current entity belongs to.

Source

pub fn world(self) -> UnsafeWorldCell<'w>

Gets the world that the current entity belongs to.

Source

pub fn contains<T: Component>(self) -> bool

Returns true if the current entity has a component of type T. Otherwise, this returns false.

§Notes

If you do not know the concrete type of a component, consider using Self::contains_id or Self::contains_type_id.

Source

pub fn contains_id(self, component_id: ComponentId) -> bool

Returns true if the current entity has a component identified by component_id. Otherwise, this returns false.

§Notes
Source

pub fn contains_type_id(self, type_id: TypeId) -> bool

Returns true if the current entity has a component with the type identified by type_id. Otherwise, this returns false.

§Notes
Source

pub unsafe fn get<T: Component>(self) -> Option<&'w T>

§Safety

It is the callers responsibility to ensure that

  • the UnsafeEntityCell has permission to access the component
  • no other mutable references to the component exist at the same time
Source

pub unsafe fn get_ref<T: Component>(self) -> Option<Ref<'w, T>>

§Safety

It is the callers responsibility to ensure that

  • the UnsafeEntityCell has permission to access the component
  • no other mutable references to the component exist at the same time
Source

pub unsafe fn get_change_ticks<T: Component>(self) -> Option<ComponentTicks>

Retrieves the change ticks for the given component. This can be useful for implementing change detection in custom runtimes.

§Safety

It is the callers responsibility to ensure that

  • the UnsafeEntityCell has permission to access the component
  • no other mutable references to the component exist at the same time
Source

pub unsafe fn get_change_ticks_by_id( &self, component_id: ComponentId, ) -> Option<ComponentTicks>

Retrieves the change ticks for the given ComponentId. This can be useful for implementing change detection in custom runtimes.

You should prefer to use the typed API UnsafeEntityCell::get_change_ticks where possible and only use this in cases where the actual component types are not known at compile time.

§Safety

It is the callers responsibility to ensure that

  • the UnsafeEntityCell has permission to access the component
  • no other mutable references to the component exist at the same time
Source

pub unsafe fn get_mut<T: Component>(self) -> Option<Mut<'w, T>>

§Safety

It is the callers responsibility to ensure that

  • the UnsafeEntityCell has permission to access the component mutably
  • no other references to the component exist at the same time
Source§

impl<'w> UnsafeEntityCell<'w>

Source

pub unsafe fn get_by_id(self, component_id: ComponentId) -> Option<Ptr<'w>>

Gets the component of the given ComponentId from the entity.

You should prefer to use the typed API where possible and only use this in cases where the actual component types are not known at compile time.

Unlike UnsafeEntityCell::get, this returns a raw pointer to the component, which is only valid while the 'w borrow of the lifetime is active.

§Safety

It is the callers responsibility to ensure that

  • the UnsafeEntityCell has permission to access the component
  • no other mutable references to the component exist at the same time
Source

pub unsafe fn get_mut_by_id( self, component_id: ComponentId, ) -> Option<MutUntyped<'w>>

Retrieves a mutable untyped reference to the given entity’s Component of the given ComponentId. Returns None if the entity does not have a Component of the given type.

You should prefer to use the typed API UnsafeEntityCell::get_mut where possible and only use this in cases where the actual types are not known at compile time.

§Safety

It is the callers responsibility to ensure that

  • the UnsafeEntityCell has permission to access the component mutably
  • no other references to the component exist at the same time

Trait Implementations§

Source§

impl<'w> Clone for UnsafeEntityCell<'w>

Source§

fn clone(&self) -> UnsafeEntityCell<'w>

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'w> Copy for UnsafeEntityCell<'w>

Auto Trait Implementations§

§

impl<'w> Freeze for UnsafeEntityCell<'w>

§

impl<'w> !RefUnwindSafe for UnsafeEntityCell<'w>

§

impl<'w> Send for UnsafeEntityCell<'w>

§

impl<'w> Sync for UnsafeEntityCell<'w>

§

impl<'w> Unpin for UnsafeEntityCell<'w>

§

impl<'w> !UnwindSafe for UnsafeEntityCell<'w>

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<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
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 + Sync + Send>

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<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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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> TypeData for T
where T: 'static + Send + Sync + Clone,

Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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<T> ConditionalSend for T
where T: Send,