import { Color, Fog as Fog3 } from "three"; import { serializable } from "../engine/engine_serialization.js"; import { Behaviour } from "./Component.js"; enum FogMode { Linear = 1, Exponential = 2, ExponentialSquared = 3, } /** @internal */ export class Fog extends Behaviour { get fog() { if (!this._fog) this._fog = new Fog3(0x000000, 0, 50); return this._fog; } get mode() { return FogMode.Linear; } @serializable() set near(value: number) { this.fog.near = value; } get near() { return this.fog.near; } @serializable() set far(value: number) { this.fog.far = value; } get far() { return this.fog.far; } @serializable(Color) set color(value: Color) { this.fog.color.copy(value); } get color() { return this.fog.color; } private _fog?: Fog3; onEnable() { this.scene.fog = this.fog; } onDisable() { if (this.scene.fog === this._fog) this.scene.fog = null; } }