Class ComponentManager

Nested Relationships

Nested Types

Class Documentation

class ComponentManager

Менеджер для управления компонентами сущностей

Обеспечивает хранение, добавление, удаление и поиск компонентов

Public Functions

ComponentManager() = default
template<typename T>
inline bool addComponent(Entity entityId, T component)

Добавляет компонент к сущности

Создает копию компонента и связывает его с сущностью

Параметры шаблона:

T – Тип компонента

Параметры:
  • entityId – Идентификатор сущности

  • component – Компонент для добавления

Результат:

true если компонент успешно добавлен, false в противном случае

template<typename T>
inline bool removeComponent(Entity entityId)

Удаляет компонент у сущности

Параметры шаблона:

T – Тип компонента

Параметры:

entityId – Идентификатор сущности

Результат:

true если компонент существовал и был удален, false в противном случае

template<typename T>
inline T *getComponent(Entity entityId)

Получает компонент сущности

Параметры шаблона:

T – Тип компонента

Параметры:

entityId – Идентификатор сущности

Результат:

Указатель на компонент или nullptr если компонент не найден

template<typename T>
inline const std::set<Entity> &getEntitiesWith() const

Получает все сущности, имеющие компонент указанного типа

Параметры шаблона:

T – Тип компонента

Результат:

Константная ссылка на множество сущностей с компонентом

template<typename T>
inline std::set<Entity> &getEntitiesWith()
template<typename ...ComponentTypes>
inline std::set<Entity> getEntitiesWithAll() const

Получает все сущности, имеющие все указанные типы компонентов

Выполняет пересечение множеств сущностей для каждого типа компонента

Параметры шаблона:

ComponentTypes – Типы компонентов для поиска

Результат:

Множество сущностей, содержащих все запрошенные компоненты

void removeAllComponents(Entity entityId)

Удаляет все компоненты у сущности

Параметры:

entityId – Идентификатор сущности