Struct bevy::ecs::world::unsafe_world_cell::UnsafeEntityCell

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

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

Implementations§

§

impl<'w> UnsafeEntityCell<'w>

pub fn id(self) -> Entity

Returns the ID of the current entity.

pub fn location(self) -> EntityLocation

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

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

Returns the archetype that the current entity belongs to.

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

Gets the world that the current entity belongs to.

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

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.

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

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

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

§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

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

§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

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

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

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

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

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

impl<'w> UnsafeEntityCell<'w>

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

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§

§

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

§

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
§

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
§

impl<T, U> AsBindGroupShaderType<U> for T
where U: ShaderType, &'a T: for<'a> Into<U>,

§

fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> 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
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

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

§

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

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

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

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

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

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.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

§

impl<T> Instrument for T

§

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

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

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

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

§

fn into_sample(self) -> T

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

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
§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

§

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

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

§

fn clone_type_data(&self) -> Box<dyn TypeData>

§

impl<T> Upcast<T> for T

§

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

§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

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

§

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

§

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

§

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

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

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