feat(lighting): persistence настроек света в проект
Слайдеры sun/hemi/ambient/exposure/contrast/saturation теперь сохраняются в projectData.scene.lighting при save и применяются обратно при load. Раньше параметры жили только в текущей сессии — после refresh страницы возвращались к дефолтам. Импортированные .rbxl карты также сохраняют выставленные пользователем параметры света.
This commit is contained in:
parent
5b44a286a9
commit
e45a9968c4
@ -7776,6 +7776,15 @@ export class BabylonScene {
|
|||||||
crosshair: this._crosshair || 'dot',
|
crosshair: this._crosshair || 'dot',
|
||||||
shadowQuality: this._shadowQuality || 'soft',
|
shadowQuality: this._shadowQuality || 'soft',
|
||||||
environment: this.environment ? this.environment.serialize() : null,
|
environment: this.environment ? this.environment.serialize() : null,
|
||||||
|
// Кастомные настройки света — слайдеры из «Свет и атмосфера»
|
||||||
|
lighting: {
|
||||||
|
sunIntensity: this._sunIntensity ?? this._sunLight?.intensity ?? 0.8,
|
||||||
|
hemiIntensity: this._hemiIntensity ?? this._hemiLight?.intensity ?? 0.65,
|
||||||
|
sceneAmbient: this._sceneAmbient ?? 0.3,
|
||||||
|
exposure: this._exposure ?? 1.0,
|
||||||
|
contrast: this._contrast ?? 1.0,
|
||||||
|
saturation: this._saturation ?? 1.0,
|
||||||
|
},
|
||||||
skybox: this.skybox ? this.skybox.serialize() : null,
|
skybox: this.skybox ? this.skybox.serialize() : null,
|
||||||
leaderstats: this.leaderstats ? this.leaderstats.serialize() : null,
|
leaderstats: this.leaderstats ? this.leaderstats.serialize() : null,
|
||||||
achievements: this.achievements ? this.achievements.serialize() : null,
|
achievements: this.achievements ? this.achievements.serialize() : null,
|
||||||
@ -8260,6 +8269,12 @@ export class BabylonScene {
|
|||||||
if (state.scene.environment && this.environment) {
|
if (state.scene.environment && this.environment) {
|
||||||
this.environment.load(state.scene.environment);
|
this.environment.load(state.scene.environment);
|
||||||
}
|
}
|
||||||
|
// Кастомные настройки света/цветокоррекции — применяем через
|
||||||
|
// setLightingProps (он сам подхватит default-ы если значения нет).
|
||||||
|
if (state.scene.lighting) {
|
||||||
|
try { this.setLightingProps(state.scene.lighting); }
|
||||||
|
catch (e) { console.warn('[BabylonScene] lighting load failed:', e); }
|
||||||
|
}
|
||||||
// Кастомное небо (задача 16)
|
// Кастомное небо (задача 16)
|
||||||
if (state.scene.skybox && this.skybox) {
|
if (state.scene.skybox && this.skybox) {
|
||||||
this.skybox.load(state.scene.skybox);
|
this.skybox.load(state.scene.skybox);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user