diff --git a/src/editor/engine/GameRuntime.js b/src/editor/engine/GameRuntime.js index 2d2f777..544de79 100644 --- a/src/editor/engine/GameRuntime.js +++ b/src/editor/engine/GameRuntime.js @@ -213,26 +213,22 @@ export class GameRuntime { } } else if (cmd === 'lightingTimeUpdate') { // Roblox Lighting:SetMinutesAfterMidnight → Babylon небо. - const now = performance.now(); - if (!this._lastLightUpdate || now - this._lastLightUpdate > 250) { - this._lastLightUpdate = now; - try { - const hour = Number(payload?.hour); - // Debug-лог (первые несколько раз) - if (!this._lightDbgCount) this._lightDbgCount = 0; - if (this._lightDbgCount < 5) { - this._lightDbgCount++; - console.log('[lightingTimeUpdate]', { payload, hour, - hasSetTimeOfDay: typeof this.scene3d?.setTimeOfDay, - hasEnvironment: !!this.scene3d?.environment }); + // Ускоряем в 8x чтобы юзер увидел переход день↔ночь + // в течение ~5 секунд после Play. + try { + const baseHour = Number(payload?.hour); + if (baseHour >= 0 && baseHour < 24) { + if (this._lightBaseHour == null) { + this._lightBaseHour = baseHour; + this._lightStartReal = performance.now(); } - if (hour >= 0 && hour < 24) { - this.scene3d?.setTimeOfDay?.(hour); - } - } catch (e) { - console.error('[lightingTimeUpdate] error:', e); + // Δigh-час относительно стартовой + const dGame = baseHour - this._lightBaseHour; + const accel = 8; + const hour = ((this._lightBaseHour + dGame * accel) % 24 + 24) % 24; + this.scene3d?.setTimeOfDay?.(hour); } - } + } catch (_) {} } else if (cmd === 'particleCreated') { // Roblox Instance.new('Sparkles') — запомнили какие // partlcle-эффекты есть у Tool. При equip покажем у руки.