ECSM v0.5.0
DoNotDestroySystem

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

#include <ecsm.hpp>

Public Types

typedef DoNotDestroyComponent ComponentType
using ComponentPool
typedef DoNotDestroySystem ItemType
typedef Singleton< DoNotDestroySystem, 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 DoNotDestroySystemget ()
 Returns class singleton or manager instance.
static DoNotDestroySystemtryGet ()
 Returns class singleton or manager instance if exist.

Protected Member Functions

 DoNotDestroySystem (bool setSingleton=true)
 Creates a new do not destroy system instance.
 ~DoNotDestroySystem () override
 Destroys do not destroy 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 DoNotDestroySystemsingletonInstance

Friends

class ecsm::Manager

Detailed Description

Handles entities that should not be destroyed.

Member Typedef Documentation

◆ ComponentType

Type of the system component.

◆ ComponentPool

using ComponentPool
inherited

System component pool type.

◆ ItemType

typedef DoNotDestroySystem ItemType
inherited

Type of the singleton class.

◆ Instance

typedef Singleton<DoNotDestroySystem, true> Instance
inherited

Singleton instance class type.

Constructor & Destructor Documentation

◆ DoNotDestroySystem()

DoNotDestroySystem ( bool setSingleton = true)
protected

Creates a new do not destroy 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< DoNotDestroyComponent, 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

DoNotDestroySystem* singletonInstance
inlinestaticprotectedinherited

Singleton class instance.