ECSM v0.5.0
DoNotDuplicateSystem

Handles entities that should not be duplicated. More...

#include <ecsm.hpp>

Public Types

typedef DoNotDuplicateComponent ComponentType
using ComponentPool
typedef DoNotDuplicateSystem ItemType
typedef Singleton< DoNotDuplicateSystem, true > Instance

Public Member Functions

const ComponentPoolgetComponents () const noexcept
 Returns system component pool.
std::type_index getComponentType () const override
 Returns specific component typeid() of the system.
View< ComponentgetComponent (ID< Component > instance) override
 Returns specific component View.
void disposeComponents () override
 Actually destroys system components.

Static Public Member Functions

static bool has ()
 Returns true if class singleton or manager instance is exist.
static DoNotDuplicateSystemget ()
 Returns class singleton or manager instance.
static DoNotDuplicateSystemtryGet ()
 Returns class singleton or manager instance if exist.

Protected Member Functions

 DoNotDuplicateSystem (bool setSingleton=true)
 Creates a new do not duplicate system instance.
 ~DoNotDuplicateSystem () override
 Destroys do not duplicate system instance.
std::string_view getComponentName () const override
 Returns specific component name of the system.
ID< ComponentcreateComponent (ID< Entity > entity) override
 Creates a new system component instance for the entity.
void destroyComponent (ID< Component > instance) override
 Destroys system component instance.
void resetComponent (View< Component > component, bool full) override
 Resets system component data.
void copyComponent (View< Component > source, View< Component > destination) override
 Copies system component data from the source to destination.
void setSingleton ()
 Sets a new class singleton instance.
void unsetSingleton () noexcept
 Unsets this class singleton instance.

Protected Attributes

ComponentPool components

Static Protected Attributes

static DoNotDuplicateSystemsingletonInstance

Friends

class ecsm::Manager

Detailed Description

Handles entities that should not be duplicated.

Member Typedef Documentation

◆ ComponentType

Type of the system component.

◆ ComponentPool

using ComponentPool
inherited

System component pool type.

◆ ItemType

typedef DoNotDuplicateSystem ItemType
inherited

Type of the singleton class.

◆ Instance

typedef Singleton<DoNotDuplicateSystem, true> Instance
inherited

Singleton instance class type.

Constructor & Destructor Documentation

◆ DoNotDuplicateSystem()

DoNotDuplicateSystem ( bool setSingleton = true)
protected

Creates a new do not duplicate system instance.

Parameters
setSingletonset system singleton instance

Member Function Documentation

◆ getComponentName()

std::string_view getComponentName ( ) const
overrideprotectedvirtual

Returns specific component name of the system.

Reimplemented from ComponentSystem< DoNotDuplicateComponent, false >.

◆ createComponent()

ID< Component > createComponent ( ID< Entity > entity)
inlineoverrideprotectedvirtualinherited

Creates a new system component instance for the entity.

You should use Manager to add components to the entity.

Reimplemented from System.

◆ destroyComponent()

void destroyComponent ( ID< Component > instance)
inlineoverrideprotectedvirtualinherited

Destroys system component instance.

You should use Manager to remove components from the entity.

Reimplemented from System.

◆ resetComponent()

void resetComponent ( View< Component > component,
bool full )
inlineoverrideprotectedvirtualinherited

Resets system component data.

You should use Manager to remove components from the entity.

Reimplemented from System.

◆ copyComponent()

void copyComponent ( View< Component > source,
View< Component > destination )
inlineoverrideprotectedvirtualinherited

Copies system component data from the source to destination.

You should use Manager to copy component data of entities.

Reimplemented from System.

◆ getComponentType()

std::type_index getComponentType ( ) const
inlineoverridevirtualinherited

Returns specific component typeid() of the system.

Note
Override it to define a custom component of the system.

Reimplemented from System.

◆ getComponent()

View< Component > getComponent ( ID< Component > instance)
inlineoverridevirtualinherited

Returns specific component View.

Parameters
instancetarget system component instance

Reimplemented from System.

◆ disposeComponents()

void disposeComponents ( )
inlineoverridevirtualinherited

Actually destroys system components.

Components are not destroyed immediately, only after the dispose call.

Reimplemented from System.

Member Data Documentation

◆ components

ComponentPool components
protectedinherited

System component pool.

◆ singletonInstance

DoNotDuplicateSystem* singletonInstance
inlinestaticprotectedinherited

Singleton class instance.