@openhps/core
Version:
Open Hybrid Positioning System - Core component
57 lines (52 loc) • 1.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _InputNode = _interopRequireDefault(require("./InputNode.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const _regNum = /float|u?int/;
/**
* Class for representing a constant value in the shader.
*
* @augments InputNode
*/
class ConstNode extends _InputNode.default {
static get type() {
return 'ConstNode';
}
/**
* Constructs a new input node.
*
* @param {any} value - The value of this node. Usually a JS primitive or three.js object (vector, matrix, color).
* @param {?string} nodeType - The node type. If no explicit type is defined, the node tries to derive the type from its value.
*/
constructor(value, nodeType = null) {
super(value, nodeType);
/**
* This flag can be used for type testing.
*
* @type {boolean}
* @readonly
* @default true
*/
this.isConstNode = true;
}
/**
* Generates the shader string of the value with the current node builder.
*
* @param {NodeBuilder} builder - The current node builder.
* @return {string} The generated value as a shader string.
*/
generateConst(builder) {
return builder.generateConst(this.getNodeType(builder), this.value);
}
generate(builder, output) {
const type = this.getNodeType(builder);
if (_regNum.test(type) && _regNum.test(output)) {
return builder.generateConst(output, this.value);
}
return builder.format(this.generateConst(builder), type, output);
}
}
var _default = exports.default = ConstNode;