@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
35 lines (30 loc) • 1.18 kB
text/typescript
/**
* Creates a hemisphere light.
*
*
*/
import {HemisphereLight} from 'three';
import {TypedLightObjNode} from './_BaseLight';
import {NodeParamsConfig} from '../utils/params/ParamsConfig';
import {LightType} from '../../poly/registers/nodes/types/Light';
import {HemisphereLightParamConfig} from '../../../core/lights/HemisphereLight';
import {HemisphereLightSopOperation} from '../../operations/sop/HemisphereLight';
class HemisphereLightObjParamsConfig extends HemisphereLightParamConfig(NodeParamsConfig) {}
const ParamsConfig = new HemisphereLightObjParamsConfig();
export class HemisphereLightObjNode extends TypedLightObjNode<HemisphereLight, HemisphereLightObjParamsConfig> {
override paramsConfig = ParamsConfig;
static override type() {
return LightType.HEMISPHERE;
}
private __operation__: HemisphereLightSopOperation | undefined;
private _operation() {
return (this.__operation__ =
this.__operation__ || new HemisphereLightSopOperation(this._scene, this.states, this));
}
override createLight() {
return this._operation().createLight();
}
protected override updateLightParams() {
this._operation().updateLightParams(this.light, this.pv);
}
}