Class Scene
Defined in File scene.h
Class Documentation
-
class Scene
Основной класс сцены, объединяющий менеджеры сущностей, компонентов и систем
Координирует работу всех подсистем ECS (Entity-Component-System)
Public Functions
-
Scene() = default
-
bool destroyEntity(Entity entityId)
Удаляет сущность со сцены
Удаляет все компоненты сущности перед ее уничтожением
- Параметры:
entityId – Идентификатор сущности для удаления
- Результат:
true если сущность успешно удалена
-
void enableSystem(SystemId systemId)
Включает систему на сцене
- Параметры:
systemId – Идентификатор системы для включения
-
void disableSystem(SystemId systemId)
Выключает систему на сцене
- Параметры:
systemId – Идентификатор системы для выключения
-
inline void update()
Обновляет все активные системы сцены
См. также
-
template<typename T>
inline bool addComponent(Entity entityId, T component) Добавляет компонент к сущности на сцене
- Параметры шаблона:
T – Тип компонента
- Параметры:
entityId – Идентификатор сущности
component – Компонент для добавления
- Результат:
true если компонент успешно добавлен
-
template<typename T>
inline bool removeComponent(Entity entityId) Удаляет компонент у сущности на сцене
- Параметры шаблона:
T – Тип компонента
- Параметры:
entityId – Идентификатор сущности
- Результат:
true если компонент существовал и был удален
-
template<typename T>
inline T *getComponent(Entity entityId) Получает компонент сущности
- Параметры шаблона:
T – Тип компонента
- Параметры:
entityId – Идентификатор сущности
- Результат:
Указатель на компонент или nullptr если не найден
-
template<typename T>
inline std::set<Entity> &getEntitiesWith() Получает все сущности, имеющие компонент указанного типа
- Параметры шаблона:
T – Тип компонента
- Результат:
Ссылка на множество сущностей с компонентом
-
template<typename ...ComponentTypes>
inline std::set<Entity> getEntitiesWithAll() Получает сущности, имеющие все указанные типы компонентов
- Параметры шаблона:
ComponentTypes – Типы компонентов для поиска
- Результат:
Множество сущностей, содержащих все запрошенные компоненты
-
template<typename T, typename ...Args>
inline SystemId registerSystem(Args&&... args) Регистрирует новую систему на сцене
- Параметры шаблона:
T – Тип системы (должен наследоваться от ISystem)
Args – Типы аргументов для конструктора системы
- Параметры:
args – Аргументы для передачи в конструктор системы
- Результат:
Идентификатор зарегистрированной системы
-
template<typename T>
inline void setResource(T resource) Устанавливает или заменяет глобальный ресурс на сцене
Ресурсы представляют собой глобальные данные, доступные всем системам. Каждый тип ресурса может существовать только в одном экземпляре на сцене.
Пример:
// Установка стандартных ресурсов scene.setResource<Time>(Time{}); scene.setResource<Input>(Input{}); scene.setResource<Config>(Config{1920, 1080, "My Game"}); // Замена ресурса scene.setResource<Config>(loadConfigFromFile("settings.cfg"));
См. также
- Параметры шаблона:
T – Тип ресурса
- Параметры:
resource – Объект ресурса для установки
-
template<typename T>
inline T *getResource() Получает глобальный ресурс сцены
Обеспечивает доступ к глобальным данным сцены. Возвращаемый указатель можно использовать для модификации ресурса.
Пример:
// В системе времени if (auto* time = scene.getResource<Time>()) { time->update(deltaTime); } // В системе ввода if (auto* input = scene.getResource<Input>()) { if (input->isKeyPressed(KEY_SPACE)) { jump(); } }
См. также
- Параметры шаблона:
T – Тип запрашиваемого ресурса
- Результат:
Указатель на ресурс или nullptr если ресурс не найден
-
template<typename T>
inline const T *getResource() const Получает константный глобальный ресурс сцены
Предназначен для безопасного доступа только для чтения к глобальным ресурсам сцены. Используется в константных контекстах.
Пример:
// В константном методе рендеринга void render(const Scene& scene) { if (const auto* config = scene.getResource<Config>()) { setResolution(config->width, config->height); } }
См. также
- Параметры шаблона:
T – Тип запрашиваемого ресурса
- Результат:
Константный указатель на ресурс или nullptr если ресурс не найден
-
template<typename T>
inline bool hasResource() const Проверяет наличие глобального ресурса на сцене
Быстрая проверка существования ресурса без его загрузки.
Пример:
// Ленивая инициализация ресурса if (!scene.hasResource<Audio>()) { scene.setResource<Audio>(Audio{}); scene.getResource<Audio>()->initialize(); }
См. также
- Параметры шаблона:
T – Тип проверяемого ресурса
- Результат:
true если ресурс существует, false в противном случае
-
template<typename T>
inline bool removeResource() Удаляет глобальный ресурс со сцены
Освобождает память, занимаемую ресурсом. Последующие вызовы getResource() для этого типа вернут nullptr.
Пример:
// Удаление временного ресурса scene.removeResource<DebugOverlay>(); // Удаление при перезагрузке scene.removeResource<Config>(); scene.setResource<Config>(loadNewConfig());
См. также
- Параметры шаблона:
T – Тип удаляемого ресурса
- Результат:
true если ресурс был удален, false если ресурс не существовал
-
Scene() = default