diff --git a/src/editor/engine/GameRuntime.js b/src/editor/engine/GameRuntime.js index 544de79..6a0ae5a 100644 --- a/src/editor/engine/GameRuntime.js +++ b/src/editor/engine/GameRuntime.js @@ -213,8 +213,7 @@ export class GameRuntime { } } else if (cmd === 'lightingTimeUpdate') { // Roblox Lighting:SetMinutesAfterMidnight → Babylon небо. - // Ускоряем в 8x чтобы юзер увидел переход день↔ночь - // в течение ~5 секунд после Play. + // Ускоряем в 8x + меняем пресет skybox (clear/sunset/night). try { const baseHour = Number(payload?.hour); if (baseHour >= 0 && baseHour < 24) { @@ -222,11 +221,25 @@ export class GameRuntime { this._lightBaseHour = baseHour; this._lightStartReal = performance.now(); } - // Δigh-час относительно стартовой const dGame = baseHour - this._lightBaseHour; const accel = 8; const hour = ((this._lightBaseHour + dGame * accel) % 24 + 24) % 24; this.scene3d?.setTimeOfDay?.(hour); + // Skybox preset по фазе: + // 06-08 sunset, 08-17 clear, 17-19 sunset, 19-06 starry-night + let targetPreset; + if (hour >= 6 && hour < 8) targetPreset = 'sunset'; + else if (hour >= 8 && hour < 17) targetPreset = 'lowpoly-roblox'; + else if (hour >= 17 && hour < 19) targetPreset = 'sunset'; + else targetPreset = 'starry-night'; + if (this._lightPreset !== targetPreset) { + this._lightPreset = targetPreset; + try { + const sb = this.scene3d?.skybox; + if (sb?.fadeTo) sb.fadeTo({ preset: targetPreset }, 2); + else this.scene3d?.setSkybox?.({ preset: targetPreset }); + } catch (_) {} + } } } catch (_) {} } else if (cmd === 'particleCreated') {