UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

28 lines (25 loc) 993 B
import {Object3D, SpotLight} from 'three'; import {SpotLightContainer} from '../../core/lights/SpotLight'; import {ObjectNamedFunction2} from './_Base'; import {isFunction} from '../../core/Type'; export class setSpotLightIntensity extends ObjectNamedFunction2<[number, number]> { static override type() { return 'setSpotLightIntensity'; } func(object3D: Object3D, intensity: number, lerp: number): void { let spotLight = object3D as SpotLight; // test the presence of the intensity property, instead of testing with instanceof // as this is not reliable when using multiple versions of threejs are loaded, // or when using PhysicalSpotLight if (spotLight.intensity == null) { if (isFunction((object3D as SpotLightContainer).light)) { spotLight = (object3D as SpotLightContainer).light(); } } if (spotLight.intensity == null) { return; } const newIntensity = lerp * intensity + (1 - lerp) * spotLight.intensity; spotLight.intensity = newIntensity; } }