UNPKG

@polygonjs/polygonjs

Version:

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

45 lines (41 loc) 1.47 kB
import {ParamConfig} from '../../engine/nodes/utils/params/ParamsConfig'; import {Constructor, Number3} from '../../types/GlobalTypes'; // import {ColorConversion} from '../Color'; import {Vector3, Color} from 'three'; import {DefaultOperationParams} from '../operations/_Base'; export interface HemisphereLightParams extends DefaultOperationParams { skyColor: Color; groundColor: Color; intensity: number; position: Vector3; name: string; } export const DEFAULT_HEMISPHERE_LIGHT_PARAMS: HemisphereLightParams = { skyColor: new Color(1, 1, 1), groundColor: new Color(0, 0, 0), intensity: 1, position: new Vector3(0, 1, 0), name: 'hemisphereLight', }; const DEFAULT = DEFAULT_HEMISPHERE_LIGHT_PARAMS; export function HemisphereLightParamConfig<TBase extends Constructor>(Base: TBase) { return class Mixin extends Base { /** @param sky color */ skyColor = ParamConfig.COLOR(DEFAULT.skyColor.toArray() as Number3, { // conversion: ColorConversion.SRGB_TO_LINEAR, }); /** @param ground color */ groundColor = ParamConfig.COLOR(DEFAULT.groundColor.toArray() as Number3, { // conversion: ColorConversion.SRGB_TO_LINEAR, }); /** @param light intensity */ intensity = ParamConfig.FLOAT(DEFAULT.intensity, { range: [0, 2], rangeLocked: [true, false], }); /** @param light position */ position = ParamConfig.VECTOR3(DEFAULT.position.toArray() as Number3); /** @param light name */ name = ParamConfig.STRING('`$OS`'); }; }