@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
55 lines (54 loc) • 1.44 kB
JavaScript
;
import { TypedNumericParam } from "./_Numeric";
import { ParamType } from "../poly/ParamType";
import { CoreString } from "../../core/String";
import { isString, isBoolean, isNumber } from "../../core/Type";
export class BooleanParam extends TypedNumericParam {
static type() {
return ParamType.BOOLEAN;
}
// TODO: be careful as this does not allow serialization of expressions as default value
defaultValueSerialized() {
if (isString(this._default_value)) {
return this._default_value;
} else {
return this.convert(this._default_value) || false;
}
}
rawInputSerialized() {
return this._raw_input;
}
valueSerialized() {
return this.value;
}
_copyValue(param) {
this.set(param.value);
}
static areRawInputEqual(raw_input1, raw_input2) {
return raw_input1 == raw_input2;
}
static areValuesEqual(val1, val2) {
return val1 == val2;
}
convert(raw_val) {
if (isBoolean(raw_val)) {
return raw_val;
} else {
if (isNumber(raw_val)) {
return raw_val >= 1;
} else {
if (isString(raw_val)) {
if (CoreString.isBoolean(raw_val)) {
return CoreString.toBoolean(raw_val);
} else {
if (CoreString.isNumber(raw_val)) {
const parsed = parseFloat(raw_val);
return parsed >= 1;
}
}
}
}
}
return null;
}
}