MAGE  v0.171.0
Matthias Advanced Game Engine
mage::ComponentManager< T > Class Template Reference

#include <ecs.hpp>

Classes

class  Record
 
class  RecordIterator
 

Public Types

using ComponentContainer = AlignedVector< T >
 
using EntityContainer = AlignedVector< Entity >
 
using MappingContainer = std::unordered_map< Entity, std::size_t >
 
using value_type = typename ComponentContainer::value_type
 
using size_type = typename ComponentContainer::size_type
 
using difference_type = typename ComponentContainer::difference_type
 
using reference = typename ComponentContainer::reference
 
using const_reference = typename ComponentContainer::const_reference
 
using pointer = typename ComponentContainer::pointer
 
using const_pointer = typename ComponentContainer::const_pointer
 
using iterator = typename ComponentContainer::iterator
 
using const_iterator = typename ComponentContainer::const_iterator
 
using reverse_iterator = typename ComponentContainer::reverse_iterator
 
using const_reverse_iterator = typename ComponentContainer::const_reverse_iterator
 

Public Member Functions

 ComponentManager ()=default
 
 ComponentManager (const ComponentManager &manager)=default
 
 ComponentManager (ComponentManager &&manager) noexcept=default
 
 ~ComponentManager ()=default
 
ComponentManageroperator= (const ComponentManager &manager)=default
 
ComponentManageroperator= (ComponentManager &&manager) noexcept=default
 
bool Contains (Entity entity) const noexcept
 
pointer Get (Entity entity) noexcept
 
const_pointer Get (Entity entity) const noexcept
 
reference at (size_type index)
 
const_reference at (size_type index) const
 
reference operator[] (size_type index) noexcept
 
const_reference operator[] (size_type index) const noexcept
 
reference front () noexcept
 
const_reference front () const noexcept
 
reference back () noexcept
 
const_reference back () const noexcept
 
pointer data () noexcept
 
const_pointer data () const noexcept
 
RecordIterator RecordBegin () noexcept
 
RecordIterator RecordEnd () noexcept
 
iterator begin () noexcept
 
const_iterator begin () const noexcept
 
const_iterator cbegin () const noexcept
 
iterator end () noexcept
 
const_iterator end () const noexcept
 
const_iterator cend () const noexcept
 
reverse_iterator rbegin () noexcept
 
const_reverse_iterator rbegin () const noexcept
 
const_reverse_iterator crbegin () const noexcept
 
reverse_iterator rend () noexcept
 
const_reverse_iterator rend () const noexcept
 
const_reverse_iterator crend () const noexcept
 
bool empty () const noexcept
 
size_type size () const noexcept
 
size_type max_size () const noexcept
 
void reserve (size_type new_capacity)
 
size_type capacity () const noexcept
 
void shrink_to_fit ()
 
void clear () noexcept
 
void push_back (Entity entity, const value_type &value)
 
void push_back (Entity entity, value_type &&value)
 
template<typename... ConstructorArgsT>
reference emplace_back (Entity entity, ConstructorArgsT &&... args)
 
void pop_back ()
 
void erase (Entity entity)
 
void swap (ComponentManager &other) noexcept
 

Private Member Functions

void SwapComponents (std::size_t index1, std::size_t index2) noexcept
 

Private Attributes

AlignedVector< value_typem_components
 
AlignedVector< Entitym_entities
 
std::unordered_map< Entity, std::size_t > m_mapping
 

Member Typedef Documentation

◆ ComponentContainer

template<typename T >
using mage::ComponentManager< T >::ComponentContainer = AlignedVector< T >

◆ const_iterator

template<typename T >
using mage::ComponentManager< T >::const_iterator = typename ComponentContainer::const_iterator

◆ const_pointer

template<typename T >
using mage::ComponentManager< T >::const_pointer = typename ComponentContainer::const_pointer

◆ const_reference

template<typename T >
using mage::ComponentManager< T >::const_reference = typename ComponentContainer::const_reference

◆ const_reverse_iterator

template<typename T >
using mage::ComponentManager< T >::const_reverse_iterator = typename ComponentContainer::const_reverse_iterator

◆ difference_type

template<typename T >
using mage::ComponentManager< T >::difference_type = typename ComponentContainer::difference_type

◆ EntityContainer

template<typename T >
using mage::ComponentManager< T >::EntityContainer = AlignedVector< Entity >

◆ iterator

template<typename T >
using mage::ComponentManager< T >::iterator = typename ComponentContainer::iterator

◆ MappingContainer

template<typename T >
using mage::ComponentManager< T >::MappingContainer = std::unordered_map< Entity, std::size_t >

◆ pointer

template<typename T >
using mage::ComponentManager< T >::pointer = typename ComponentContainer::pointer

◆ reference

template<typename T >
using mage::ComponentManager< T >::reference = typename ComponentContainer::reference

◆ reverse_iterator

template<typename T >
using mage::ComponentManager< T >::reverse_iterator = typename ComponentContainer::reverse_iterator

◆ size_type

template<typename T >
using mage::ComponentManager< T >::size_type = typename ComponentContainer::size_type

◆ value_type

template<typename T >
using mage::ComponentManager< T >::value_type = typename ComponentContainer::value_type

Constructor & Destructor Documentation

◆ ComponentManager() [1/3]

template<typename T >
mage::ComponentManager< T >::ComponentManager ( )
default

◆ ComponentManager() [2/3]

template<typename T >
mage::ComponentManager< T >::ComponentManager ( const ComponentManager< T > &  manager)
default

◆ ComponentManager() [3/3]

template<typename T >
mage::ComponentManager< T >::ComponentManager ( ComponentManager< T > &&  manager)
defaultnoexcept

◆ ~ComponentManager()

template<typename T >
mage::ComponentManager< T >::~ComponentManager ( )
default

Member Function Documentation

◆ at() [1/2]

template<typename T >
reference mage::ComponentManager< T >::at ( size_type  index)

◆ at() [2/2]

template<typename T >
const_reference mage::ComponentManager< T >::at ( size_type  index) const

◆ back() [1/2]

template<typename T >
reference mage::ComponentManager< T >::back ( )
noexcept

◆ back() [2/2]

template<typename T >
const_reference mage::ComponentManager< T >::back ( ) const
noexcept

◆ begin() [1/2]

template<typename T >
iterator mage::ComponentManager< T >::begin ( )
noexcept

◆ begin() [2/2]

template<typename T >
const_iterator mage::ComponentManager< T >::begin ( ) const
noexcept

◆ capacity()

template<typename T >
size_type mage::ComponentManager< T >::capacity ( ) const
noexcept

◆ cbegin()

template<typename T >
const_iterator mage::ComponentManager< T >::cbegin ( ) const
noexcept

◆ cend()

template<typename T >
const_iterator mage::ComponentManager< T >::cend ( ) const
noexcept

◆ clear()

template<typename T >
void mage::ComponentManager< T >::clear ( )
noexcept

◆ Contains()

template<typename T >
bool mage::ComponentManager< T >::Contains ( Entity  entity) const
noexcept

◆ crbegin()

template<typename T >
const_reverse_iterator mage::ComponentManager< T >::crbegin ( ) const
noexcept

◆ crend()

template<typename T >
const_reverse_iterator mage::ComponentManager< T >::crend ( ) const
noexcept

◆ data() [1/2]

template<typename T >
pointer mage::ComponentManager< T >::data ( )
noexcept

◆ data() [2/2]

template<typename T >
const_pointer mage::ComponentManager< T >::data ( ) const
noexcept

◆ emplace_back()

template<typename T >
template<typename... ConstructorArgsT>
reference mage::ComponentManager< T >::emplace_back ( Entity  entity,
ConstructorArgsT &&...  args 
)

◆ empty()

template<typename T >
bool mage::ComponentManager< T >::empty ( ) const
noexcept

◆ end() [1/2]

template<typename T >
iterator mage::ComponentManager< T >::end ( )
noexcept

◆ end() [2/2]

template<typename T >
const_iterator mage::ComponentManager< T >::end ( ) const
noexcept

◆ erase()

template<typename T >
void mage::ComponentManager< T >::erase ( Entity  entity)

◆ front() [1/2]

template<typename T >
reference mage::ComponentManager< T >::front ( )
noexcept

◆ front() [2/2]

template<typename T >
const_reference mage::ComponentManager< T >::front ( ) const
noexcept

◆ Get() [1/2]

template<typename T >
pointer mage::ComponentManager< T >::Get ( Entity  entity)
noexcept

◆ Get() [2/2]

template<typename T >
const_pointer mage::ComponentManager< T >::Get ( Entity  entity) const
noexcept

◆ max_size()

template<typename T >
size_type mage::ComponentManager< T >::max_size ( ) const
noexcept

◆ operator=() [1/2]

template<typename T >
ComponentManager& mage::ComponentManager< T >::operator= ( const ComponentManager< T > &  manager)
default

◆ operator=() [2/2]

template<typename T >
ComponentManager& mage::ComponentManager< T >::operator= ( ComponentManager< T > &&  manager)
defaultnoexcept

◆ operator[]() [1/2]

template<typename T >
reference mage::ComponentManager< T >::operator[] ( size_type  index)
noexcept

◆ operator[]() [2/2]

template<typename T >
const_reference mage::ComponentManager< T >::operator[] ( size_type  index) const
noexcept

◆ pop_back()

template<typename T >
void mage::ComponentManager< T >::pop_back ( )

◆ push_back() [1/2]

template<typename T >
void mage::ComponentManager< T >::push_back ( Entity  entity,
const value_type value 
)

◆ push_back() [2/2]

template<typename T >
void mage::ComponentManager< T >::push_back ( Entity  entity,
value_type &&  value 
)

◆ rbegin() [1/2]

template<typename T >
reverse_iterator mage::ComponentManager< T >::rbegin ( )
noexcept

◆ rbegin() [2/2]

template<typename T >
const_reverse_iterator mage::ComponentManager< T >::rbegin ( ) const
noexcept

◆ RecordBegin()

template<typename T >
RecordIterator mage::ComponentManager< T >::RecordBegin ( )
noexcept

◆ RecordEnd()

template<typename T >
RecordIterator mage::ComponentManager< T >::RecordEnd ( )
noexcept

◆ rend() [1/2]

template<typename T >
reverse_iterator mage::ComponentManager< T >::rend ( )
noexcept

◆ rend() [2/2]

template<typename T >
const_reverse_iterator mage::ComponentManager< T >::rend ( ) const
noexcept

◆ reserve()

template<typename T >
void mage::ComponentManager< T >::reserve ( size_type  new_capacity)

◆ shrink_to_fit()

template<typename T >
void mage::ComponentManager< T >::shrink_to_fit ( )

◆ size()

template<typename T >
size_type mage::ComponentManager< T >::size ( ) const
noexcept

◆ swap()

template<typename T >
void mage::ComponentManager< T >::swap ( ComponentManager< T > &  other)
noexcept

◆ SwapComponents()

template<typename T >
void mage::ComponentManager< T >::SwapComponents ( std::size_t  index1,
std::size_t  index2 
)
privatenoexcept

Member Data Documentation

◆ m_components

template<typename T >
AlignedVector< value_type > mage::ComponentManager< T >::m_components
private

◆ m_entities

template<typename T >
AlignedVector< Entity > mage::ComponentManager< T >::m_entities
private

◆ m_mapping

template<typename T >
std::unordered_map< Entity, std::size_t > mage::ComponentManager< T >::m_mapping
private