@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
75 lines (74 loc) • 1.84 kB
JavaScript
;
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;
}
}
}