UNPKG

@polygonjs/polygonjs

Version:

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

51 lines (45 loc) 1.78 kB
/** * Creates a point light. * * */ import {PointLight} from 'three'; import {PointLightHelper} from './utils/helpers/PointLightHelper'; import {BaseLightTransformedObjNode} from './_BaseLightTransformed'; import {TransformedParamConfig} from './utils/TransformController'; import {NodeParamsConfig} from '../utils/params/ParamsConfig'; import {HelperController, HelperConstructor} from './utils/HelperController'; import {Mesh} from 'three'; import {LightType} from '../../poly/registers/nodes/types/Light'; import {PointLightSopOperation} from '../../operations/sop/PointLight'; import {PointLightParamConfig} from '../../../core/lights/PointLight'; class PointLightObjParamsConfig extends PointLightParamConfig(TransformedParamConfig(NodeParamsConfig)) {} const ParamsConfig = new PointLightObjParamsConfig(); export class PointLightObjNode extends BaseLightTransformedObjNode<PointLight, PointLightObjParamsConfig> { override paramsConfig = ParamsConfig; static override type() { return LightType.POINT; } private _helperController = new HelperController<Mesh, PointLight>( this, (<unknown>PointLightHelper) as HelperConstructor<Mesh, PointLight>, 'PointLightHelper' ); override initializeNode() { this._helperController.initializeNode(); } private __operation__: PointLightSopOperation | undefined; private _operation() { return (this.__operation__ = this.__operation__ || new PointLightSopOperation(this._scene, this.states, this)); } createLight() { return this._operation().createLight(); } protected override updateLightParams() { this._operation().updateLightParams(this.light, this.pv); this._helperController.update(); } protected override updateShadowParams() { this._operation().updateShadowParams(this.light, this.pv); } }