ECSTASY
All in the name
Loading...
Searching...
No Matches
ecstasy Namespace Reference

Namespace containing all symbols specific to ecstasy. More...

Namespaces

namespace  integration
 Parent namespace of all ecstasy integrations.
 
namespace  query
 Namespace regrouping the internal ecstasy query system.
 
namespace  rtti
 Namespace regrouping the cross platform rtti symbols.
 
namespace  serialization
 Namespace regrouping the serialization ecstasy classes.
 
namespace  thread
 Namespace regrouping the thread safe ecstasy symbols.
 

Classes

struct  And
 Placeholder for And. More...
 
struct  AndEx
 Placeholder for And. More...
 
class  AStorage
 Abstract class for all components storage. More...
 
struct  component_type
 Get the component type of the given type. More...
 
class  DeletionStack
 Helper to manage entity deletion safely within an iteration. More...
 
struct  EmptyType
 
class  Entities
 Resource holding all the Registry entities. More...
 
class  Entity
 Encapsulate an index to an entity. More...
 
struct  getStorageTypeImpl
 
struct  getStorageTypeImpl< C >
 
struct  getStorageTypeImpl< const C >
 
class  Instances
 Set of instances inheriting from the Base type. More...
 
class  IResource
 Base class of all registry resources. More...
 
class  IStorage
 Base class of all components storage. More...
 
class  ISystem
 System interface, base class of all systems. More...
 
class  MapStorage
 Associative Map to store entity components Recommended for sparse components. More...
 
class  MarkerStorage
 Storage for empty components. More...
 
struct  Maybe
 Placeholder for Maybe. More...
 
struct  modifier_allocator_size
 Get the allocator required size for this queryable. More...
 
struct  modifier_allocator_size< M >
 Get the allocator required size for this queryable. More...
 
struct  modifier_allocator_size< util::meta::Traits< Q, Qs... > >
 Get the allocator required size for this queryable. More...
 
struct  modifiers_allocator_size
 Get the allocator required size for a list of queryables. More...
 
struct  modifiers_allocator_size< Q, Qs... >
 Get the allocator required size for a list of queryables. More...
 
struct  Not
 Placeholder for Not. More...
 
class  ObjectWrapper
 Basic object wrapper as a resource. More...
 
struct  Or
 Placeholder for Or. More...
 
struct  OrEx
 Placeholder for Or. More...
 
class  Pipeline
 Pipeline of systems to orchestrate the execution of systems. More...
 
struct  queryable_type
 Try to get the type of a queryable associated to a type stored in the registry (component, storage, resource...). More...
 
struct  queryable_type< const Q >
 Try to get the type of a queryable associated to a type stored in the registry (component, storage, resource...). More...
 
struct  queryable_type< M >
 Try to get the type of a queryable associated to a type stored in the registry (component, storage, resource...). More...
 
struct  queryable_type< R >
 Try to get the type of a queryable associated to a type stored in the registry (component, storage, resource...). More...
 
struct  queryable_type< S >
 Try to get the type of a queryable associated to a type stored in the registry (component, storage, resource...). More...
 
class  Registry
 Base of an ECS architecture. More...
 
class  RegistryEntity
 Entity containing a reference to the registry. More...
 
class  SystemInstances
 Set of instances inheriting from the Base type. More...
 
class  Timer
 Timer class to control the execution of systems. More...
 
class  VectorStorage
 Linear vector to store entity components. More...
 
struct  Xor
 Placeholder for Xor. More...
 
struct  XorEx
 Placeholder for Xor. More...
 

Concepts

concept  RegistryModifier
 Registry Modifier concept, which are placeholders for the actual query modifiers.
 
concept  ExplicitComponentStorage
 
concept  IsStorage
 Concept to check if a type is a storage.
 
concept  IsContainerStorage
 Concept to check if a storage is a container storage.
 

Typedefs

template<auto Left, auto Right>
using EqualTo = query::Condition< Left, Right, std::equal_to<> >
 Equality condition.
 
template<auto Left, auto Right>
using Greater = query::Condition< Left, Right, std::greater<> >
 Greater than condition.
 
template<auto Left, auto Right>
using GreaterEqual = query::Condition< Left, Right, std::greater_equal<> >
 Greater than or equal condition.
 
template<auto Left, auto Right>
using Less = query::Condition< Left, Right, std::less<> >
 Less than condition.
 
template<auto Left, auto Right>
using LessEqual = query::Condition< Left, Right, std::less_equal<> >
 Less than or equal condition.
 
template<auto Left, auto Right>
using NotEqualTo = query::Condition< Left, Right, std::not_equal_to<> >
 Inequality condition.
 
template<typename T >
using component_type_t = typename component_type< T >::type
 Helper for component_type<T>::type.
 
template<typename C >
using queryable_type_t = typename queryable_type< C >::type
 Helper to queryable_type<C>::type.
 
template<typename R , bool AutoLock = thread::AUTO_LOCK_RESOURCES_DEFAULT>
using ResourceReference = query::thread_safe_reference_t< R, AutoLock >
 Resource reference type.
 
template<typename R , bool AutoLock = thread::AUTO_LOCK_RESOURCES_DEFAULT>
using RR = ResourceReference< R, AutoLock >
 ResourceReference alias
 
template<typename C >
using getStorageType = typename getStorageTypeImpl< C >::type
 Get the storage type to use for a component.
 

Variables

template<typename Q >
size_t constexpr modifier_allocator_size_v = modifier_allocator_size<Q>::value
 Helper for modifier_allocator_size<Q>::value.
 
template<typename Q , typename... Qs>
size_t constexpr modifiers_allocator_size_v = modifiers_allocator_size<Q, Qs...>::value
 Helper for modifiers_allocator_size<Q, Qs...>::value.
 

Detailed Description

Namespace containing all symbols specific to ecstasy.

Forward declaration of map storage to use as default storage.

Author
Andréas Leroux (andre.nosp@m.as.l.nosp@m.eroux.nosp@m.@epi.nosp@m.tech..nosp@m.eu)
Since
1.0.0 (2022-11-18)

Typedef Documentation

◆ component_type_t

template<typename T >
using ecstasy::component_type_t = typedef typename component_type<T>::type

Helper for component_type<T>::type.

Template Parameters
TEvaluated type.
Author
Andréas Leroux (andre.nosp@m.as.l.nosp@m.eroux.nosp@m.@epi.nosp@m.tech..nosp@m.eu)
Since
1.0.0 (2022-10-24)

Definition at line 67 of file component_type.hpp.

◆ EqualTo

template<auto Left, auto Right>
using ecstasy::EqualTo = typedef query::Condition<Left, Right, std::equal_to<> >

Equality condition.

Definition at line 21 of file EqualTo.hpp.

◆ getStorageType

template<typename C >
using ecstasy::getStorageType = typedef typename getStorageTypeImpl<C>::type

Get the storage type to use for a component.

You can set the storage type to use for a component by defining a StorageType member type in the component. If you can't modify the component, you can still use the SET_COMPONENT_STORAGE macro.

Note
By default, it uses MapStorage.
If C is const, the storage type will be const.
Template Parameters
CComponent type to get the storage type for.
Author
Andréas Leroux (andre.nosp@m.as.l.nosp@m.eroux.nosp@m.@epi.nosp@m.tech..nosp@m.eu)
Since
1.0.0 (2024-04-22)

Definition at line 94 of file StorageConcepts.hpp.

◆ Greater

template<auto Left, auto Right>
using ecstasy::Greater = typedef query::Condition<Left, Right, std::greater<> >

Greater than condition.

Definition at line 21 of file Greater.hpp.

◆ GreaterEqual

template<auto Left, auto Right>
using ecstasy::GreaterEqual = typedef query::Condition<Left, Right, std::greater_equal<> >

Greater than or equal condition.

Definition at line 21 of file GreaterEqual.hpp.

◆ Less

template<auto Left, auto Right>
using ecstasy::Less = typedef query::Condition<Left, Right, std::less<> >

Less than condition.

Definition at line 21 of file Less.hpp.

◆ LessEqual

template<auto Left, auto Right>
using ecstasy::LessEqual = typedef query::Condition<Left, Right, std::less_equal<> >

Less than or equal condition.

Definition at line 21 of file LessEqual.hpp.

◆ NotEqualTo

template<auto Left, auto Right>
using ecstasy::NotEqualTo = typedef query::Condition<Left, Right, std::not_equal_to<> >

Inequality condition.

Definition at line 21 of file NotEqualTo.hpp.

◆ queryable_type_t

template<typename C >
using ecstasy::queryable_type_t = typedef typename queryable_type<C>::type

Helper to queryable_type<C>::type.

Template Parameters
CEvaluated type.
Author
Andréas Leroux (andre.nosp@m.as.l.nosp@m.eroux.nosp@m.@epi.nosp@m.tech..nosp@m.eu)
Since
1.0.0 (2022-10-25)

Definition at line 88 of file queryable_type.hpp.

◆ ResourceReference

template<typename R , bool AutoLock = thread::AUTO_LOCK_RESOURCES_DEFAULT>
using ecstasy::ResourceReference = typedef query::thread_safe_reference_t<R, AutoLock>

Resource reference type.

This type is used to reference a resource in a thread-safe way depending on the AutoLock parameter.

Note
Consider this as a thread_safe std::reference_wrapper.
Template Parameters
RResource type.
AutoLockWhether the resource should be locked automatically.
Author
Andréas Leroux (andre.nosp@m.as.l.nosp@m.eroux.nosp@m.@epi.nosp@m.tech..nosp@m.eu)
Since
1.0.0 (2024-10-17)

Definition at line 63 of file Registry.hpp.

◆ RR

template<typename R , bool AutoLock = thread::AUTO_LOCK_RESOURCES_DEFAULT>
using ecstasy::RR = typedef ResourceReference<R, AutoLock>

ResourceReference alias

Definition at line 66 of file Registry.hpp.

Variable Documentation

◆ modifier_allocator_size_v

template<typename Q >
size_t constexpr ecstasy::modifier_allocator_size_v = modifier_allocator_size<Q>::value
constexpr

Helper for modifier_allocator_size<Q>::value.

Template Parameters
QEvaluated type.
Author
Andréas Leroux (andre.nosp@m.as.l.nosp@m.eroux.nosp@m.@epi.nosp@m.tech..nosp@m.eu)
Since
1.0.0 (2023-11-08)

Definition at line 68 of file modifier_allocator_size.hpp.

◆ modifiers_allocator_size_v

template<typename Q , typename... Qs>
size_t constexpr ecstasy::modifiers_allocator_size_v = modifiers_allocator_size<Q, Qs...>::value
constexpr

Helper for modifiers_allocator_size<Q, Qs...>::value.

Template Parameters
QEvaluated type.
QsNext evaluated types.
Author
Andréas Leroux (andre.nosp@m.as.l.nosp@m.eroux.nosp@m.@epi.nosp@m.tech..nosp@m.eu)
Since
1.0.0 (2023-11-08)

Definition at line 86 of file modifier_allocator_size.hpp.