bevy_ecs::storage

Struct Table

Source
pub struct Table { /* private fields */ }
Expand description

A column-oriented structure-of-arrays based storage for Components of entities in a World.

Conceptually, a Table can be thought of as an HashMap<ComponentId, Column>, where each ThinColumn is a type-erased Vec<T: Component>. Each row corresponds to a single entity (i.e. index 3 in Column A and index 3 in Column B point to different components on the same entity). Fetching components from a table involves fetching the associated column for a component type (via its ComponentId), then fetching the entity’s row within that column.

Implementations§

Source§

impl Table

Source

pub fn entities(&self) -> &[Entity]

Fetches a read-only slice of the entities stored within the Table.

Source

pub fn capacity(&self) -> usize

Get the capacity of this table, in entities. Note that if an allocation is in process, this might not match the actual capacity of the columns, but it should once the allocation ends.

Source

pub unsafe fn get_data_slice_for<T>( &self, component_id: ComponentId, ) -> Option<&[UnsafeCell<T>]>

Get the data of the column matching component_id as a slice.

§Safety

row.as_usize() < self.len()

  • T must match the component_id
Source

pub fn get_added_ticks_slice_for( &self, component_id: ComponentId, ) -> Option<&[UnsafeCell<Tick>]>

Get the added ticks of the column matching component_id as a slice.

Source

pub fn get_changed_ticks_slice_for( &self, component_id: ComponentId, ) -> Option<&[UnsafeCell<Tick>]>

Get the changed ticks of the column matching component_id as a slice.

Source

pub fn get_changed_tick( &self, component_id: ComponentId, row: TableRow, ) -> Option<&UnsafeCell<Tick>>

Get the specific change tick of the component matching component_id in row.

Source

pub fn get_added_tick( &self, component_id: ComponentId, row: TableRow, ) -> Option<&UnsafeCell<Tick>>

Get the specific added tick of the component matching component_id in row.

Source

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

Get the ComponentTicks of the component matching component_id in row.

§Safety
  • row.as_usize() < self.len()
Source

pub fn get_column(&self, component_id: ComponentId) -> Option<&ThinColumn>

Fetches a read-only reference to the ThinColumn for a given Component within the table.

Returns None if the corresponding component does not belong to the table.

Source

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

Checks if the table contains a ThinColumn for a given Component.

Returns true if the column is present, false otherwise.

Source

pub fn entity_count(&self) -> usize

Gets the number of entities currently being stored in the table.

Source

pub fn get_drop_for( &self, component_id: ComponentId, ) -> Option<unsafe fn(_: OwningPtr<'_>)>

Get the drop function for some component that is stored in this table.

Source

pub fn component_count(&self) -> usize

Gets the number of components being stored in the table.

Source

pub fn entity_capacity(&self) -> usize

Gets the maximum number of entities the table can currently store without reallocating the underlying memory.

Source

pub fn is_empty(&self) -> bool

Checks if the Table is empty or not.

Returns true if the table contains no entities, false otherwise.

Source

pub fn iter_columns(&self) -> impl Iterator<Item = &ThinColumn>

Iterates over the ThinColumns of the Table.

Source

pub unsafe fn get_component( &self, component_id: ComponentId, row: TableRow, ) -> Option<Ptr<'_>>

Get the component at a given row, if the Table stores components with the given component_id

§Safety

row.as_usize() < self.len()

Trait Implementations§

Source§

impl Drop for Table

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl Freeze for Table

§

impl !RefUnwindSafe for Table

§

impl !Send for Table

§

impl !Sync for Table

§

impl Unpin for Table

§

impl !UnwindSafe for Table

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