UNPKG

@polygonjs/polygonjs

Version:

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

75 lines (74 loc) 1.84 kB
"use strict"; import { TypedNumericParam } from "./_Numeric"; import { ParamType } from "../poly/ParamType"; import { CoreString } from "../../core/String"; import { isArray, isString, isNumber, isBoolean } from "../../core/Type"; export class FloatParam extends TypedNumericParam { static type() { return ParamType.FLOAT; } defaultValueSerialized() { return this._default_value; } rawInputSerialized() { return this._raw_input; } valueSerialized() { return this.value; } _copyValue(param) { this.set(param.valueSerialized()); } _prefilterInvalidRawInput(raw_input) { if (isArray(raw_input)) { return raw_input[0]; } if (isString(raw_input) && CoreString.isNumber(raw_input)) { const num = parseFloat(raw_input); if (num != null) { const converted = this.convert(num); if (converted != null) { return converted; } } } if (isNumber(raw_input)) { const converted = this.convert(raw_input); if (converted != null) { return converted; } } return raw_input; } static areRawInputEqual(raw_input1, raw_input2) { return raw_input1 == raw_input2; } static areValuesEqual(val1, val2) { return val1 == val2; } static convert(raw_val) { if (isNumber(raw_val)) { return raw_val; } else { if (isBoolean(raw_val)) { return raw_val ? 1 : 0; } else { if (CoreString.isNumber(raw_val)) { const parsed = parseFloat(raw_val); if (isNumber(parsed)) { return parsed; } } } return null; } } convert(raw_val) { const result = FloatParam.convert(raw_val); if (result != null) { return this.options.ensureInRange(result); } else { return result; } } }