/
RaskolnickOFF
/
3D
Обзор
Документация
Войти
/
RaskolnickOFF
/
3D
Код
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
js/source/core/RenderContext.js
60 строк
3 KB
RaskolnickOFF
feat: implement boundless 3x3 tile streaming manager and border tracking system
18 июн 2026, 03:54
18 июн 2026, 03:54
e8f9134
Код
Авторство
О чём код?
// js/source/core/RenderContext.js — контекст для систем рендера (Camera, RenderSync, HealthBars...) export class RenderContext { /** * @param {Object} deps * @param {import('three').Scene} deps.scene * @param {import('three').PerspectiveCamera} deps.camera * @param {import('three').WebGPURenderer} deps.renderer * @param {Object} deps.settings * @param {import('./EventBus.js').EventBus} deps.eventBus * @param {import('../world/WorldMapData.js').WorldMapData} [deps.worldMapData] * @param {import('../environment/EnvironmentState.js').EnvironmentState} [deps.environmentState] */ constructor({ SCENE, CAMERA, RENDERER, SETTINGS, EVENTBUS, worldMapData, environmentState, tileManager }) { this.scene = SCENE; this.camera = CAMERA; this.renderer = RENDERER; this.settings = SETTINGS; this.eventBus = EVENTBUS; this.worldMapData = worldMapData || null; this.environmentState = environmentState || null; this.tileManager = tileManager || null; } // УЛУЧШЕНИЯ ДЛЯ ТЕСТИРОВАНИЯ: // 1. resize(width, height) — единый метод ресайза вместо разбросанных по файлам. // Вызывается из обработчика resize в Main.js один раз: // renderContext.resize(window.innerWidth, window.innerHeight) // resize(width, height) { // this.camera.aspect = width / height; // this.camera.updateProjectionMatrix(); // this.renderer.setSize(width, height); // if (this.settings.renderer?.pixelRatio === 'device') { // this.renderer.setPixelRatio(window.devicePixelRatio); // } // this.eventBus.emit('RENDER_RESIZED', { width, height }); // } // 2. getSize() — текущий размер рендера. Удобно для систем, которым нужны // ширина/высота без прямого доступа к renderer. // getSize() { // const size = new THREE.Vector2(); // this.renderer.getSize(size); // return { width: size.x, height: size.y }; // } // 3. screenshot() — скриншот в base64 (для отладки, багрепортов, save-превью). // Вызывает renderer.render() и дёргает toDataURL. // screenshot() { // this.renderer.render(this.scene, this.camera); // return this.renderer.domElement.toDataURL('image/png'); // } // 4. dispose() — очистка контекста при destroy сцены. // Отписывается от событий, диспозит renderer. // dispose() { // this.renderer.dispose(); // } }