UNPKG

polygonjs-engine

Version:

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

68 lines (66 loc) 1.98 kB
import {TypedNumericParam} from './_Numeric'; import {ParamType} from '../poly/ParamType'; import {CoreString} from '../../core/String'; import {ParamInitValuesTypeMap} from './types/ParamInitValuesTypeMap'; import {ParamValuesTypeMap} from './types/ParamValuesTypeMap'; import {CoreType} from '../../core/Type'; export class FloatParam extends TypedNumericParam<ParamType.FLOAT> { static type() { return ParamType.FLOAT; } get default_value_serialized() { return this.default_value; } get raw_input_serialized() { return this._raw_input; } get value_serialized() { return this.value; } protected _copy_value(param: FloatParam) { this.set(param.value_serialized); } protected _prefilter_invalid_raw_input(raw_input: any): ParamInitValuesTypeMap[ParamType.INTEGER] { if (CoreType.isArray(raw_input)) { return raw_input[0] as ParamInitValuesTypeMap[ParamType.INTEGER]; } if (CoreType.isString(raw_input) && CoreString.isNumber(raw_input)) { return parseFloat(raw_input); } return raw_input; } static are_raw_input_equal( raw_input1: ParamInitValuesTypeMap[ParamType.FLOAT], raw_input2: ParamInitValuesTypeMap[ParamType.FLOAT] ) { return raw_input1 == raw_input2; } static are_values_equal(val1: ParamValuesTypeMap[ParamType.FLOAT], val2: ParamValuesTypeMap[ParamType.FLOAT]) { return val1 == val2; } static convert(raw_val: ParamInitValuesTypeMap[ParamType.FLOAT]): number | null { if (CoreType.isNumber(raw_val)) { return raw_val; } else { if (CoreType.isBoolean(raw_val)) { return raw_val ? 1 : 0; } else { if (CoreString.isNumber(raw_val)) { const parsed = parseFloat(raw_val); if (CoreType.isNumber(parsed)) { return parsed; } } } return null; } } convert(raw_val: ParamInitValuesTypeMap[ParamType.FLOAT]): number | null { const result = FloatParam.convert(raw_val); if (result) { return this.options.ensure_in_range(result); } else { return result; } } }