/
RaskolnickOFF
/
3D
Обзор
Документация
Войти
/
RaskolnickOFF
/
3D
Код
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
js/source/core/SimulationContext.js
42 строки
2 KB
RaskolnickOFF
Structure update
06 июн 2026, 03:18
06 июн 2026, 03:18
9bc1c25
Код
Авторство
О чём код?
// js/source/core/SimulationContext.js — контекст для систем симуляции (AI, Movement, Combat...) export class SimulationContext { /** * @param {Object} deps * @param {import('./Engine.js').Engine} deps.engine * @param {import('./EventBus.js').EventBus} deps.eventBus * @param {Object} deps.settings */ constructor({ ENGINE, EVENTBUS, SETTINGS }) { this.engine = ENGINE; this.eventBus = EVENTBUS; this.settings = SETTINGS; } // УЛУЧШЕНИЯ ДЛЯ ТЕСТИРОВАНИЯ: // 1. dt (дельта времени) — если передавать dt в контекст, каждая система // сможет читать его без параметра в update(). Но это смешивание контекста // и временных данных. Альтернатива: передавать dt через execute() в пайплайне. // Пока не добавляй, текущая архитектура (dt через параметр) — правильнее. // 2. getEntities(componentClass) — часто используемый запрос. // Чтобы системы не писали engine.getAll(Component.POSITION), можно добавить // хелпер прямо в контекст: // getEntities(...componentClasses) { // return this.engine.getAll(...componentClasses); // } // 3. getSingleton(componentClass) — для компонентов, которые в единственном // экземпляре (Player, Camera, EnvironmentState). // getSingleton(componentClass) { // const entities = this.engine.getAll(componentClass); // return entities.length > 0 ? entities[0] : null; // } // 4. dispose() — очистка при перезапуске. Сбрасывает engine, // отписывается от событий. // dispose() { // this.engine.clear(); // } }