@openhps/core
Version:
Open Hybrid Positioning System - Core component
58 lines (55 loc) • 1.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.expression = exports.default = void 0;
var _Node = _interopRequireDefault(require("../core/Node.js"));
var _TSLCore = require("../tsl/TSLCore.js");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* This class can be used to implement basic expressions in shader code.
* Basic examples for that are `return`, `continue` or `discard` statements.
*
* @augments Node
*/
class ExpressionNode extends _Node.default {
static get type() {
return 'ExpressionNode';
}
/**
* Constructs a new expression node.
*
* @param {string} [snippet=''] - The native code snippet.
* @param {string} [nodeType='void'] - The node type.
*/
constructor(snippet = '', nodeType = 'void') {
super(nodeType);
/**
* The native code snippet.
*
* @type {string}
* @default ''
*/
this.snippet = snippet;
}
generate(builder, output) {
const type = this.getNodeType(builder);
const snippet = this.snippet;
if (type === 'void') {
builder.addLineFlowCode(snippet, this);
} else {
return builder.format(snippet, type, output);
}
}
}
var _default = exports.default = ExpressionNode;
/**
* TSL function for creating an expression node.
*
* @tsl
* @function
* @param {string} [snippet] - The native code snippet.
* @param {?string} [nodeType='void'] - The node type.
* @returns {ExpressionNode}
*/
const expression = exports.expression = /*@__PURE__*/(0, _TSLCore.nodeProxy)(ExpressionNode).setParameterLength(1, 2);