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 a 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
impl Table
Sourcepub fn entities(&self) -> &[Entity]
pub fn entities(&self) -> &[Entity]
Fetches a read-only slice of the entities stored within the Table.
Sourcepub fn capacity(&self) -> usize
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.
Sourcepub unsafe fn get_data_slice_for<T>(
&self,
component_id: ComponentId,
) -> Option<&[UnsafeCell<T>]>
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()
Tmust match thecomponent_id
Sourcepub fn get_added_ticks_slice_for(
&self,
component_id: ComponentId,
) -> Option<&[UnsafeCell<Tick>]>
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.
Sourcepub fn get_changed_ticks_slice_for(
&self,
component_id: ComponentId,
) -> Option<&[UnsafeCell<Tick>]>
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.
Sourcepub fn get_changed_by_slice_for(
&self,
component_id: ComponentId,
) -> MaybeLocation<Option<&[UnsafeCell<&'static Location<'static>>]>>
pub fn get_changed_by_slice_for( &self, component_id: ComponentId, ) -> MaybeLocation<Option<&[UnsafeCell<&'static Location<'static>>]>>
Fetches the calling locations that last changed the each component
Sourcepub fn get_changed_tick(
&self,
component_id: ComponentId,
row: TableRow,
) -> Option<&UnsafeCell<Tick>>
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.
Sourcepub fn get_added_tick(
&self,
component_id: ComponentId,
row: TableRow,
) -> Option<&UnsafeCell<Tick>>
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.
Sourcepub fn get_changed_by(
&self,
component_id: ComponentId,
row: TableRow,
) -> MaybeLocation<Option<&UnsafeCell<&'static Location<'static>>>>
pub fn get_changed_by( &self, component_id: ComponentId, row: TableRow, ) -> MaybeLocation<Option<&UnsafeCell<&'static Location<'static>>>>
Get the specific calling location that changed the component matching component_id in row
Sourcepub unsafe fn get_ticks_unchecked(
&self,
component_id: ComponentId,
row: TableRow,
) -> Option<ComponentTicks>
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()
Sourcepub fn get_column(&self, component_id: ComponentId) -> Option<&ThinColumn>
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.
Sourcepub fn has_column(&self, component_id: ComponentId) -> bool
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.
Sourcepub fn entity_count(&self) -> u32
pub fn entity_count(&self) -> u32
Gets the number of entities currently being stored in the table.
Sourcepub fn get_drop_for(
&self,
component_id: ComponentId,
) -> Option<unsafe fn(OwningPtr<'_>)>
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.
Sourcepub fn component_count(&self) -> usize
pub fn component_count(&self) -> usize
Gets the number of components being stored in the table.
Sourcepub fn entity_capacity(&self) -> usize
pub fn entity_capacity(&self) -> usize
Gets the maximum number of entities the table can currently store without reallocating the underlying memory.
Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Checks if the Table is empty or not.
Returns true if the table contains no entities, false otherwise.
Sourcepub fn iter_columns(&self) -> impl Iterator<Item = &ThinColumn>
pub fn iter_columns(&self) -> impl Iterator<Item = &ThinColumn>
Iterates over the ThinColumns of the Table.