Gaia-ECS v0.9.3
A simple and powerful entity component system
Loading...
Searching...
No Matches
gaia::ecs::detail::ChunkIterImpl< IterConstraint > Class Template Reference

Public Member Functions

 ChunkIterImpl (ChunkIterImpl &&) noexcept=default
 
ChunkIterImploperator= (ChunkIterImpl &&) noexcept=default
 
 ChunkIterImpl (const ChunkIterImpl &)=delete
 
ChunkIterImploperator= (const ChunkIterImpl &)=delete
 
void set_world (const World *pWorld)
 
GAIA_NODISCARD Worldworld ()
 
GAIA_NODISCARD const Worldworld () const
 
void set_archetype (const Archetype *pArchetype)
 
GAIA_NODISCARD const Archetypearchetype () const
 
void set_chunk (Chunk *pChunk)
 
void set_chunk (Chunk *pChunk, uint16_t from, uint16_t to)
 
GAIA_NODISCARD const Chunkchunk () const
 
void set_remapping_indices (const uint8_t *pCompIndicesMapping)
 
void set_group_id (GroupId groupId)
 
GAIA_NODISCARD GroupId group_id () const
 
GAIA_NODISCARD CommandBufferSTcmd_buffer_st () const
 
GAIA_NODISCARD CommandBufferMTcmd_buffer_mt () const
 
template<typename T >
GAIA_NODISCARD auto view () const
 Returns a read-only entity or component view.
 
template<typename T >
GAIA_NODISCARD auto view (uint32_t termIdx)
 
template<typename T >
GAIA_NODISCARD auto view_mut ()
 Returns a mutable entity or component view.
 
template<typename T >
GAIA_NODISCARD auto view_mut (uint32_t termIdx)
 
template<typename T >
GAIA_NODISCARD auto sview_mut ()
 Returns a mutable component view. Doesn't update the world version when the access is acquired.
 
template<typename T >
GAIA_NODISCARD auto sview_mut (uint32_t termIdx)
 
template<typename T , bool TriggerHooks>
void modify ()
 Marks the component T as modified. Best used with sview to manually trigger an update at user's whim. If.
 
template<typename T >
GAIA_NODISCARD auto view_auto ()
 Returns either a mutable or immutable entity/component view based on the requested type. Value and const types are considered immutable. Anything else is mutable.
 
template<typename T >
GAIA_NODISCARD auto sview_auto ()
 Returns either a mutable or immutable entity/component view based on the requested type. Value and const types are considered immutable. Anything else is mutable. Doesn't update the world version when read-write access is acquired.
 
GAIA_NODISCARD bool enabled (uint32_t index) const
 Checks if the entity at the current iterator index is enabled.
 
GAIA_NODISCARD bool has (Entity entity) const
 Checks if entity entity is present in the chunk.
 
GAIA_NODISCARD bool has (Pair pair) const
 Checks if relationship pair pair is present in the chunk.
 
template<typename T >
GAIA_NODISCARD bool has () const
 Checks if component T is present in the chunk.
 
GAIA_NODISCARD uint16_t size () const noexcept
 Returns the number of entities accessible via the iterator.
 
template<typename T >
uint32_t acc_index (uint32_t idx) const noexcept
 Returns the absolute index that should be used to access an item in the chunk. AoS indices map directly, SoA indices need some adjustments because the view is always considered {0..ChunkCapacity} instead of {FirstEnabled..ChunkSize}.
 

Static Public Member Functions

static GAIA_NODISCARD uint16_t start_index (Chunk *pChunk) noexcept
 
static GAIA_NODISCARD uint16_t end_index (Chunk *pChunk) noexcept
 
static GAIA_NODISCARD uint16_t size (Chunk *pChunk) noexcept
 

Protected Types

using CompIndicesBitView = core::bit_view< ChunkHeader::MAX_COMPONENTS_BITS >
 

Protected Member Functions

GAIA_NODISCARD uint16_t from () const noexcept
 Returns the starting index of the iterator.
 
GAIA_NODISCARD uint16_t to () const noexcept
 Returns the ending index of the iterator (one past the last valid index)
 

Protected Attributes

const Worldm_pWorld = nullptr
 World pointer.
 
const Archetypem_pArchetype = nullptr
 Currently iterated archetype.
 
Chunkm_pChunk = nullptr
 Chunk currently associated with the iterator.
 
const uint8_t * m_pCompIdxMapping = nullptr
 ChunkHeader::MAX_COMPONENTS values for component indices mapping for the parent archetype.
 
uint16_t m_from
 Row of the first entity we iterate from.
 
uint16_t m_to
 Row of the last entity we iterate to.
 
GroupId m_groupId = 0
 GroupId. 0 if not set.
 

Member Function Documentation

◆ enabled()

template<Constraints IterConstraint>
GAIA_NODISCARD bool gaia::ecs::detail::ChunkIterImpl< IterConstraint >::enabled ( uint32_t  index) const
inline

Checks if the entity at the current iterator index is enabled.

Returns
True it the entity is enabled. False otherwise.

◆ has() [1/3]

template<Constraints IterConstraint>
template<typename T >
GAIA_NODISCARD bool gaia::ecs::detail::ChunkIterImpl< IterConstraint >::has ( ) const
inline

Checks if component T is present in the chunk.

Template Parameters
TComponent
Returns
True if the component is present. False otherwise.

◆ has() [2/3]

template<Constraints IterConstraint>
GAIA_NODISCARD bool gaia::ecs::detail::ChunkIterImpl< IterConstraint >::has ( Entity  entity) const
inline

Checks if entity entity is present in the chunk.

Parameters
entityEntity
Returns
True if the component is present. False otherwise.

◆ has() [3/3]

template<Constraints IterConstraint>
GAIA_NODISCARD bool gaia::ecs::detail::ChunkIterImpl< IterConstraint >::has ( Pair  pair) const
inline

Checks if relationship pair pair is present in the chunk.

Parameters
pairRelationship pair
Returns
True if the component is present. False otherwise.

◆ modify()

template<Constraints IterConstraint>
template<typename T , bool TriggerHooks>
void gaia::ecs::detail::ChunkIterImpl< IterConstraint >::modify ( )
inline

Marks the component T as modified. Best used with sview to manually trigger an update at user's whim. If.

Template Parameters
TriggerHooksis true, also triggers the component's set hooks.

◆ sview_auto()

template<Constraints IterConstraint>
template<typename T >
GAIA_NODISCARD auto gaia::ecs::detail::ChunkIterImpl< IterConstraint >::sview_auto ( )
inline

Returns either a mutable or immutable entity/component view based on the requested type. Value and const types are considered immutable. Anything else is mutable. Doesn't update the world version when read-write access is acquired.

Warning
If T is a component it is expected to be present. Undefined behavior otherwise.
Template Parameters
TComponent or Entity
Returns
Entity or component view

◆ sview_mut()

template<Constraints IterConstraint>
template<typename T >
GAIA_NODISCARD auto gaia::ecs::detail::ChunkIterImpl< IterConstraint >::sview_mut ( )
inline

Returns a mutable component view. Doesn't update the world version when the access is acquired.

Warning
It is expected the component T is present. Undefined behavior otherwise.
Template Parameters
TComponent
Returns
Component view with read-write access

◆ view()

template<Constraints IterConstraint>
template<typename T >
GAIA_NODISCARD auto gaia::ecs::detail::ChunkIterImpl< IterConstraint >::view ( ) const
inline

Returns a read-only entity or component view.

Warning
If T is a component it is expected it is present. Undefined behavior otherwise.
Template Parameters
TComponent or Entity
Returns
Entity of component view with read-only access

◆ view_auto()

template<Constraints IterConstraint>
template<typename T >
GAIA_NODISCARD auto gaia::ecs::detail::ChunkIterImpl< IterConstraint >::view_auto ( )
inline

Returns either a mutable or immutable entity/component view based on the requested type. Value and const types are considered immutable. Anything else is mutable.

Warning
If T is a component it is expected to be present. Undefined behavior otherwise.
Template Parameters
TComponent or Entity
Returns
Entity or component view

◆ view_mut()

template<Constraints IterConstraint>
template<typename T >
GAIA_NODISCARD auto gaia::ecs::detail::ChunkIterImpl< IterConstraint >::view_mut ( )
inline

Returns a mutable entity or component view.

Warning
If T is a component it is expected it is present. Undefined behavior otherwise.
Template Parameters
TComponent or Entity
Returns
Entity or component view with read-write access

The documentation for this class was generated from the following file: