UNPKG

mylingo3d

Version:

Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor

69 lines (58 loc) 1.75 kB
import { SpotLight as ThreeSpotLight, SpotLightHelper } from "three" import LightBase from "../core/LightBase" import ISpotLight, { spotLightDefaults, spotLightSchema } from "../../interface/ISpotLight" export default class SpotLight extends LightBase<typeof ThreeSpotLight> implements ISpotLight { public static componentName = "spotLight" public static defaults = spotLightDefaults public static schema = spotLightSchema public constructor() { super(ThreeSpotLight, SpotLightHelper) this.innerY = 0 } public get angle() { const light = this.lightState.get() if (!light) return 1 return light.angle } public set angle(val) { this.cancelHandle("angle", () => this.lightState.get((light) => light && (light.angle = val)) ) } public get penumbra() { const light = this.lightState.get() if (!light) return 0 return light.penumbra } public set penumbra(val) { this.cancelHandle("penumbra", () => this.lightState.get((light) => light && (light.penumbra = val)) ) } public get decay() { const light = this.lightState.get() if (!light) return 1 return light.decay } public set decay(val) { this.cancelHandle("decay", () => this.lightState.get((light) => light && (light.decay = val)) ) } public get distance() { const light = this.lightState.get() if (!light) return 0 return light.distance } public set distance(val) { this.cancelHandle("distance", () => this.lightState.get((light) => light && (light.distance = val)) ) } }