feat(rbxl): Day/Night ускорение 8x для импортированных карт

Roblox Day/Night скрипт идёт wait(0.01) + 0.1 минуты = очень медленно.
В оригинале это типичный паттерн, юзеру не очень видно.

Ускоряем в 8x для импортированных скриптов: накопленная дельта часов
от Lua-скрипта × 8 → реальный hour для setTimeOfDay. Юзер видит полный
цикл день↔ночь за 10-15 секунд вместо часа.

Также убрал debug-лог lightingTimeUpdate (мешал).
This commit is contained in:
min 2026-06-08 16:05:30 +03:00
parent 66aac4826e
commit b820ad11bd

View File

@ -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;
// Ускоряем в 8x чтобы юзер увидел переход день↔ночь
// в течение ~5 секунд после Play.
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 });
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) {
// Δigh-час относительно стартовой
const dGame = baseHour - this._lightBaseHour;
const accel = 8;
const hour = ((this._lightBaseHour + dGame * accel) % 24 + 24) % 24;
this.scene3d?.setTimeOfDay?.(hour);
}
} catch (e) {
console.error('[lightingTimeUpdate] error:', e);
}
}
} catch (_) {}
} else if (cmd === 'particleCreated') {
// Roblox Instance.new('Sparkles') — запомнили какие
// partlcle-эффекты есть у Tool. При equip покажем у руки.