pub struct Archetype { /* private fields */ }
Expand description
Metadata for a single archetype within a World
.
For more information, see the module level documentation.
Implementations§
Source§impl Archetype
impl Archetype
Sourcepub fn id(&self) -> ArchetypeId
pub fn id(&self) -> ArchetypeId
Fetches the ID for the archetype.
Sourcepub fn entities(&self) -> &[ArchetypeEntity]
pub fn entities(&self) -> &[ArchetypeEntity]
Fetches the entities contained in this archetype.
Sourcepub fn table_components(&self) -> impl Iterator<Item = ComponentId> + '_
pub fn table_components(&self) -> impl Iterator<Item = ComponentId> + '_
Gets an iterator of all of the components stored in Table
s.
All of the IDs are unique.
Sourcepub fn sparse_set_components(&self) -> impl Iterator<Item = ComponentId> + '_
pub fn sparse_set_components(&self) -> impl Iterator<Item = ComponentId> + '_
Gets an iterator of all of the components stored in ComponentSparseSet
s.
All of the IDs are unique.
Sourcepub fn components(&self) -> impl Iterator<Item = ComponentId> + '_
pub fn components(&self) -> impl Iterator<Item = ComponentId> + '_
Gets an iterator of all of the components in the archetype.
All of the IDs are unique.
Sourcepub fn component_count(&self) -> usize
pub fn component_count(&self) -> usize
Returns the total number of components in the archetype
Sourcepub fn edges(&self) -> &Edges
pub fn edges(&self) -> &Edges
Fetches a immutable reference to the archetype’s Edges
, a cache of
archetypal relationships.
Sourcepub fn entity_table_row(&self, row: ArchetypeRow) -> TableRow
pub fn entity_table_row(&self, row: ArchetypeRow) -> TableRow
Fetches the row in the Table
where the components for the entity at index
is stored.
An entity’s archetype row can be fetched from EntityLocation::archetype_row
, which
can be retrieved from Entities::get
.
§Panics
This function will panic if index >= self.len()
.
Sourcepub fn contains(&self, component_id: ComponentId) -> bool
pub fn contains(&self, component_id: ComponentId) -> bool
Checks if the archetype contains a specific component. This runs in O(1)
time.
Sourcepub fn get_storage_type(&self, component_id: ComponentId) -> Option<StorageType>
pub fn get_storage_type(&self, component_id: ComponentId) -> Option<StorageType>
Gets the type of storage where a component in the archetype can be found.
Returns None
if the component is not part of the archetype.
This runs in O(1)
time.
Sourcepub fn get_archetype_component_id(
&self,
component_id: ComponentId,
) -> Option<ArchetypeComponentId>
pub fn get_archetype_component_id( &self, component_id: ComponentId, ) -> Option<ArchetypeComponentId>
Fetches the corresponding ArchetypeComponentId
for a component in the archetype.
Returns None
if the component is not part of the archetype.
This runs in O(1)
time.
Sourcepub fn has_add_hook(&self) -> bool
pub fn has_add_hook(&self) -> bool
Returns true if any of the components in this archetype have on_add
hooks
Sourcepub fn has_insert_hook(&self) -> bool
pub fn has_insert_hook(&self) -> bool
Returns true if any of the components in this archetype have on_insert
hooks
Sourcepub fn has_remove_hook(&self) -> bool
pub fn has_remove_hook(&self) -> bool
Returns true if any of the components in this archetype have on_remove
hooks
Sourcepub fn has_add_observer(&self) -> bool
pub fn has_add_observer(&self) -> bool
Returns true if any of the components in this archetype have at least one OnAdd
observer
Sourcepub fn has_insert_observer(&self) -> bool
pub fn has_insert_observer(&self) -> bool
Returns true if any of the components in this archetype have at least one OnInsert
observer
Sourcepub fn has_remove_observer(&self) -> bool
pub fn has_remove_observer(&self) -> bool
Returns true if any of the components in this archetype have at least one OnRemove
observer
Trait Implementations§
Source§impl WorldQuery for &Archetype
impl WorldQuery for &Archetype
SAFETY:
update_component_access
and update_archetype_component_access
do nothing.
This is sound because fetch
does not access components.
Source§const IS_DENSE: bool = true
const IS_DENSE: bool = true
WorldQuery::set_table
must be used before
WorldQuery::fetch
can be called for iterators. If this returns false,
WorldQuery::set_archetype
must be used before WorldQuery::fetch
can be called for
iterators.Source§type Item<'w> = &'w Archetype
type Item<'w> = &'w Archetype
WorldQuery
For QueryData
this will be the item returned by the query.
For QueryFilter
this will be either ()
, or a bool
indicating whether the entity should be included
or a tuple of such things.Source§type Fetch<'w> = (&'w Entities, &'w Archetypes)
type Fetch<'w> = (&'w Entities, &'w Archetypes)
WorldQuery
to fetch Self::Item
Source§type State = ()
type State = ()
Self::Fetch
. This will be cached inside QueryState
,
so it is best to move as much data / computation here as possible to reduce the cost of
constructing Self::Fetch
.Source§fn shrink<'wlong: 'wshort, 'wshort>(
item: Self::Item<'wlong>,
) -> Self::Item<'wshort>
fn shrink<'wlong: 'wshort, 'wshort>( item: Self::Item<'wlong>, ) -> Self::Item<'wshort>
Source§unsafe fn init_fetch<'w>(
world: UnsafeWorldCell<'w>,
_state: &Self::State,
_last_run: Tick,
_this_run: Tick,
) -> Self::Fetch<'w>
unsafe fn init_fetch<'w>( world: UnsafeWorldCell<'w>, _state: &Self::State, _last_run: Tick, _this_run: Tick, ) -> Self::Fetch<'w>
Source§unsafe fn set_archetype<'w>(
_fetch: &mut Self::Fetch<'w>,
_state: &Self::State,
_archetype: &'w Archetype,
_table: &Table,
)
unsafe fn set_archetype<'w>( _fetch: &mut Self::Fetch<'w>, _state: &Self::State, _archetype: &'w Archetype, _table: &Table, )
Archetype
. This will always be called on
archetypes that match this WorldQuery
. Read moreSource§unsafe fn set_table<'w>(
_fetch: &mut Self::Fetch<'w>,
_state: &Self::State,
_table: &'w Table,
)
unsafe fn set_table<'w>( _fetch: &mut Self::Fetch<'w>, _state: &Self::State, _table: &'w Table, )
Table
. This will always be called on tables
that match this WorldQuery
. Read moreSource§unsafe fn fetch<'w>(
fetch: &mut Self::Fetch<'w>,
entity: Entity,
_table_row: TableRow,
) -> Self::Item<'w>
unsafe fn fetch<'w>( fetch: &mut Self::Fetch<'w>, entity: Entity, _table_row: TableRow, ) -> Self::Item<'w>
Self::Item
for either the given entity
in the current Table
,
or for the given entity
in the current Archetype
. This must always be called after
WorldQuery::set_table
with a table_row
in the range of the current Table
or after
WorldQuery::set_archetype
with a entity
in the current archetype. Read moreSource§fn update_component_access(
_state: &Self::State,
_access: &mut FilteredAccess<ComponentId>,
)
fn update_component_access( _state: &Self::State, _access: &mut FilteredAccess<ComponentId>, )
Source§fn init_state(_world: &mut World)
fn init_state(_world: &mut World)
State
for this WorldQuery
type.Source§fn matches_component_set(
_state: &Self::State,
_set_contains_id: &impl Fn(ComponentId) -> bool,
) -> bool
fn matches_component_set( _state: &Self::State, _set_contains_id: &impl Fn(ComponentId) -> bool, ) -> bool
Source§fn set_access(_state: &mut Self::State, _access: &FilteredAccess<ComponentId>)
fn set_access(_state: &mut Self::State, _access: &FilteredAccess<ComponentId>)
FilteredEntityRef
or FilteredEntityMut
. Read moreimpl ReadOnlyQueryData for &Archetype
SAFETY: access is read only