Signals Controller
Описание
Модуль SignalsController
обеспечивает связь между Signal (сигналами) и Группами Систем в ECS фреймворке. При срабатывании Signal контроллер автоматически запускает связанные с ним Группы Систем через ExecutionController.
Назначение
- Управление связями между Signal и Группами Систем
- Автоматический запуск Групп при срабатывании Signal
- Управление жизненным циклом подписок
- Отслеживание и остановка выполнения Групп
Архитектура
Основные компоненты
- SignalsController - контроллер связей Signal-Группа
- ISignalConfig - конфигурация связи Signal с Группами
- ExecutionController - контроллер выполнения Групп
Диаграмма зависимостей
SignalsController
├── Signal (источник событий)
├── SystemGroup (исполняемые группы)
└── ExecutionController (управление выполнением)
Использование
Базовая настройка
// Создание контроллера
const signalsController = new SignalsController(executionController);
// Настройка связей
signalsController.setup([
{
signal: moveSignal,
groups: [MovementGroup, CollisionGroup]
},
{
signal: attackSignal,
groups: [CombatGroup]
}
]);
// Активация подписок
signalsController.subscribe();
Привязка нескольких Групп к Signal
// Одни Signal может запускать несколько Групп
signalsController.setup([
{
signal: updateSignal,
groups: [
PhysicsGroup,
AnimationGroup,
RenderGroup
]
}
]);
Остановка и очистка
// Отключение всех подписок и остановка Групп
signalsController.unsubscribe();
API
SignalsController
Конструктор
constructor(executionController: ExecutionController)
Методы
setup(configs: ISignalConfig[])
- настройка связей Signal-Группаsubscribe()
- активация подписок на Signalunsubscribe()
- отключение подписок и остановка Групп
ISignalConfig
interface ISignalConfig {
signal: ISignal<any>; // Signal для подписки
groups: GroupType<any>[]; // Массив Групп для выполнения
}
FAQ
Когда срабатывают Группы?
Группы запускаются автоматически каждый раз при срабатывании связанного с ними Signal.
Можно ли привязать одну Группу к разным Signal?
Да, одна и та же Группа может быть привязана к нескольким Signal. Она будет запускаться при срабатывании любого из них.
В каком порядке выполняются Группы?
Группы, привязанные к одному Signal, запускаются в том порядке, в котором они указаны в конфигурации.
Что происходит при unsubscribe?
- Отключаются все подписки на Signal
- Останавливается выполнение всех активных Групп
- Очищаются внутренние списки подписок и выполнений
Как передаются данные от Signal к Группам?
Данные, отправленные через Signal, автоматически передаются в метод setup
соответствующих Групп при их выполнении.