CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
Component.hpp File Reference

Go to the source code of this file.

Classes

struct  CeresEngine::AbstractComponent
 A abstract class that provides a trait that allows checking for component implementations. More...
 
struct  CeresEngine::Component< T >
 Components serve as the base for data storage for an entity. More...
 
struct  CeresEngine::Component< T >::Accessor
 An accessor class that implements high-level access to an entity that has the given component. More...
 
class  CeresEngine::ComponentMaskSet
 A object that manages a set of components masks. More...
 
struct  CeresEngine::ComponentSet< Cs >
 
struct  CeresEngine::ComponentSet<>
 
struct  CeresEngine::AbstractComponentListener
 An abstract type that represents a generic component listener. More...
 
struct  CeresEngine::ComponentListener< Cs >
 The ComponentListener is a EntityManager listener type that gets notified whenever an entity matching a given mask() gets added or removed in the entity manager. More...
 
struct  CeresEngine::ComponentChange
 A structure that encodes a change to a single component field. More...
 
struct  CeresEngine::ComponentChangeSet
 A structure that encodes a set of changes done to a component. More...
 
class  CeresEngine::ComponentType
 A type that describes and provides type-erased operations on a component. More...
 
class  CeresEngine::TComponentType< C >
 An implementation of the ComponentType interface that implements type-erased operations for components. More...
 

Namespaces

namespace  CeresEngine
 

Concepts

concept  CeresEngine::CComponent
 

Macros

#define CE_EXTERN_COMPONENT_BASE(T, EXTERN)
 
#define CE_EXTERN_COMPONENT(T)   CE_EXTERN_COMPONENT_BASE(T, extern);
 
#define CE_EXTERN_COMPONENT_IMPL(T)   CE_EXTERN_COMPONENT_BASE(T, );
 

Typedefs

using CeresEngine::ComponentID = unsigned int
 A numeric type that represents a component.
 
using CeresEngine::ComponentMask = std::bitset< 128 >
 A bitset that represents a components mask (i.e. a set of components)
 
template<typename T , typename C >
using CeresEngine::ifComponent = typename std::enable_if< isComponent< C >, T >::type
 If the type C is a component (as defined by isComponent<C>), this type is aliased to T.
 
template<typename T , typename... Cs>
using CeresEngine::ifComponents = typename std::enable_if< areComponents< Cs... >, T >::type
 If the types Cs are all components (as defined by areComponents<Cs>), this type is aliased to T.
 

Functions

template<CComponent C>
constexpr void CeresEngine::checkComponent ()
 A trait that checks if the type C is a valid component type.
 
template<typename T >
void CeresEngine::buildComponentMask (ComponentMask &mask)
 
template<typename T , typename T1 , typename... Ts>
void CeresEngine::buildComponentMask (ComponentMask &mask)
 
template<typename... Ts>
ComponentMask CeresEngine::buildComponentMask ()
 

Variables

template<typename C >
constexpr bool CeresEngine::isComponent = std::is_base_of<AbstractComponent, C>::value
 A trait that checks if the type C is a component.
 
template<typename... Cs>
constexpr bool CeresEngine::areComponents = (isComponent<Cs> && ...)
 A trait that checks if the types Cs are all components.
 

Macro Definition Documentation

◆ CE_EXTERN_COMPONENT

#define CE_EXTERN_COMPONENT (   T)    CE_EXTERN_COMPONENT_BASE(T, extern);

◆ CE_EXTERN_COMPONENT_BASE

#define CE_EXTERN_COMPONENT_BASE (   T,
  EXTERN 
)
Value:
EXTERN template struct ::CeresEngine::Component<T>; \
EXTERN template class ::CeresEngine::TComponentType<T>; \
EXTERN template class ::CeresEngine::ComponentStore<T>

◆ CE_EXTERN_COMPONENT_IMPL

#define CE_EXTERN_COMPONENT_IMPL (   T)    CE_EXTERN_COMPONENT_BASE(T, );