SDEngine
Game Engine
Loading...
Searching...
No Matches
sd::SparseEntitySet< T > Class Template Reference

#include <SparseEntitySet.hpp>

+ Inheritance diagram for sd::SparseEntitySet< T >:
+ Collaboration diagram for sd::SparseEntitySet< T >:

Public Member Functions

template<typename... Args>
void add (Entity entity, Args &&... args)
 
bool remove (Entity entity) override
 
T * get (Entity entity)
 
const T * get (Entity entity) const
 
std::optional< ComponentDebugInfoget_debug_info (Entity e) override
 
T * operator[] (const Entity idx)
 
const std::vector< Entity > & get_dense_entities () const
 
usize size () const
 
void serialize_to (std::vector< char > &out) const
 
void deserialize_from (const std::vector< char > &data)
 
void serialize (Serializer &s) const override
 
void deserialize (Serializer &s) override
 
template<typename... Args>
void add (Entity entity, Args &&... args)
 
- Public Member Functions inherited from sd::SparseEntitySetBase
 ~SparseEntitySetBase () override=default
 
- Public Member Functions inherited from sd::Serializable
virtual ~Serializable ()=default
 

Private Member Functions

void ValidateInvariants () const
 

Private Attributes

std::vector< std::unique_ptr< usize[]> > sparse
 
std::vector< T > dense_data
 
std::vector< Entitydense_entities
 

Static Private Attributes

static constexpr usize PAGE_SIZE = 1024
 
static constexpr usize SHIFT = math::log2_int(PAGE_SIZE)
 
static constexpr usize MASK = PAGE_SIZE - 1
 

Friends

class RuntimeStateManager
 

Detailed Description

template<typename T>
class sd::SparseEntitySet< T >

Sparse -> Dense set for enitities.

Template Parameters
TData associated, for instance component structs

Member Function Documentation

◆ add() [1/2]

template<typename T >
template<typename... Args>
void sd::SparseEntitySet< T >::add ( Entity  entity,
Args &&...  args 
)

◆ add() [2/2]

template<typename T >
template<typename... Args>
void sd::SparseEntitySet< T >::add ( Entity  entity,
Args &&...  args 
)

◆ deserialize()

template<typename T >
void sd::SparseEntitySet< T >::deserialize ( Serializer s)
inlineoverridevirtual

Implements sd::Serializable.

◆ deserialize_from()

template<typename T >
void sd::SparseEntitySet< T >::deserialize_from ( const std::vector< char > &  data)
inline

◆ get() [1/2]

template<typename T >
T * SparseEntitySet::get ( Entity  entity)

Retrieve data for this entity

Parameters
entity
Returns
Data associated for this entity, or nullptr if it doesn't exist

◆ get() [2/2]

template<typename T >
const T * sd::SparseEntitySet< T >::get ( Entity  entity) const

◆ get_debug_info()

template<typename T >
std::optional< ComponentDebugInfo > SparseEntitySet::get_debug_info ( Entity  e)
overridevirtual

◆ get_dense_entities()

template<typename T >
const std::vector< Entity > & sd::SparseEntitySet< T >::get_dense_entities ( ) const
inline

◆ operator[]()

template<typename T >
T * sd::SparseEntitySet< T >::operator[] ( const Entity  idx)
inline

◆ remove()

template<typename T >
bool SparseEntitySet::remove ( Entity  entity)
overridevirtual

Remove an entity from the set

Parameters
entityEntity to remove
Returns
true if successfully removed, false if it doesn't exist

Implements sd::SparseEntitySetBase.

◆ serialize()

template<typename T >
void sd::SparseEntitySet< T >::serialize ( Serializer s) const
inlineoverridevirtual

Implements sd::Serializable.

◆ serialize_to()

template<typename T >
void sd::SparseEntitySet< T >::serialize_to ( std::vector< char > &  out) const
inline

◆ size()

template<typename T >
usize sd::SparseEntitySet< T >::size ( ) const
inline

◆ ValidateInvariants()

template<typename T >
void sd::SparseEntitySet< T >::ValidateInvariants ( ) const
inlineprivate

Friends And Related Symbol Documentation

◆ RuntimeStateManager

Member Data Documentation

◆ dense_data

template<typename T >
std::vector<T> sd::SparseEntitySet< T >::dense_data
private

◆ dense_entities

template<typename T >
std::vector<Entity> sd::SparseEntitySet< T >::dense_entities
private

◆ MASK

template<typename T >
constexpr usize sd::SparseEntitySet< T >::MASK = PAGE_SIZE - 1
staticconstexprprivate

◆ PAGE_SIZE

template<typename T >
constexpr usize sd::SparseEntitySet< T >::PAGE_SIZE = 1024
staticconstexprprivate

◆ SHIFT

template<typename T >
constexpr usize sd::SparseEntitySet< T >::SHIFT = math::log2_int(PAGE_SIZE)
staticconstexprprivate

◆ sparse

template<typename T >
std::vector<std::unique_ptr<usize[]> > sd::SparseEntitySet< T >::sparse
private

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