1 |
- {"ast":null,"code":"import { RegisterClass } from \"../../../../Misc/typeStore.js\";\nimport { RichTypeAny, RichTypeBoolean, RichTypeFlowGraphInteger, RichTypeMatrix, RichTypeNumber, RichTypeVector2, RichTypeVector3 } from \"../../../flowGraphRichTypes.js\";\nimport { FlowGraphBinaryOperationBlock } from \"../flowGraphBinaryOperationBlock.js\";\nimport { FlowGraphConstantOperationBlock } from \"../flowGraphConstantOperationBlock.js\";\nimport { Matrix, Vector2, Vector3, Vector4 } from \"../../../../Maths/math.vector.js\";\nimport { FlowGraphUnaryOperationBlock } from \"../flowGraphUnaryOperationBlock.js\";\nimport { FlowGraphTernaryOperationBlock } from \"../flowGraphTernaryOperationBlock.js\";\nimport { FlowGraphInteger } from \"../../../flowGraphInteger.js\";\n/**\n * @internal\n */\nfunction _getClassNameOf(v) {\n if (v.getClassName) {\n return v.getClassName();\n }\n return \"\";\n}\n/**\n * @internal\n * @returns\n */\nfunction _areSameVectorClass(className, className2) {\n return className === \"Vector2\" && className2 === \"Vector2\" || className === \"Vector3\" && className2 === \"Vector3\" || className === \"Vector4\" && className2 === \"Vector4\";\n}\n/**\n * @internal\n * @returns\n */\nfunction _areSameMatrixClass(className, className2) {\n return className === \"Matrix\" && className2 === \"Matrix\";\n}\n/**\n * @internal\n * @returns\n */\nfunction _areSameIntegerClass(className, className2) {\n return className === \"FlowGraphInteger\" && className2 === \"FlowGraphInteger\";\n}\n/**\n * @experimental\n * Polymorphic add block.\n */\nexport class FlowGraphAddBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicAdd(a, b), FlowGraphAddBlock.ClassName, config);\n }\n _polymorphicAdd(a, b) {\n const aClassName = _getClassNameOf(a);\n const bClassName = _getClassNameOf(b);\n if (_areSameVectorClass(aClassName, bClassName) || _areSameMatrixClass(aClassName, bClassName) || _areSameIntegerClass(aClassName, bClassName)) {\n return a.add(b);\n } else {\n return a + b;\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAddBlock.ClassName = \"FGAddBlock\";\nRegisterClass(FlowGraphAddBlock.ClassName, FlowGraphAddBlock);\n/**\n * @experimental\n * Polymorphic add block.\n */\nexport class FlowGraphSubtractBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicAdd(a, b), FlowGraphSubtractBlock.ClassName, config);\n }\n _polymorphicAdd(a, b) {\n const aClassName = _getClassNameOf(a);\n const bClassName = _getClassNameOf(b);\n if (_areSameVectorClass(aClassName, bClassName) || _areSameIntegerClass(aClassName, bClassName)) {\n return a.subtract(b);\n } else if (_areSameMatrixClass(aClassName, bClassName)) {\n return a.add(b.scale(-1));\n } else {\n return a - b;\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSubtractBlock.ClassName = \"FGSubBlock\";\nRegisterClass(FlowGraphSubtractBlock.ClassName, FlowGraphSubtractBlock);\n/**\n * @experimental\n * Polymorphic multiply block.\n * In case of matrix, it is a component wise multiplication.\n */\nexport class FlowGraphMultiplyBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicMultiply(a, b), FlowGraphMultiplyBlock.ClassName, config);\n }\n _polymorphicMultiply(a, b) {\n const aClassName = _getClassNameOf(a);\n const bClassName = _getClassNameOf(b);\n if (_areSameVectorClass(aClassName, bClassName) || _areSameIntegerClass(aClassName, bClassName)) {\n return a.multiply(b);\n } else if (_areSameMatrixClass(aClassName, bClassName)) {\n return Matrix.FromValues(a.m[0] * b.m[0], a.m[4] * b.m[4], a.m[8] * b.m[8], a.m[12] * b.m[12], a.m[1] * b.m[1], a.m[5] * b.m[5], a.m[9] * b.m[9], a.m[13] * b.m[13], a.m[2] * b.m[2], a.m[6] * b.m[6], a.m[10] * b.m[10], a.m[14] * b.m[14], a.m[3] * b.m[3], a.m[7] * b.m[7], a.m[11] * b.m[11], a.m[15] * b.m[15]);\n } else {\n return a * b;\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphMultiplyBlock.ClassName = \"FGMultiplyBlock\";\nRegisterClass(FlowGraphMultiplyBlock.ClassName, FlowGraphMultiplyBlock);\n/**\n * @experimental\n * Polymorphic division block.\n */\nexport class FlowGraphDivideBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicDivide(a, b), FlowGraphDivideBlock.ClassName, config);\n }\n _polymorphicDivide(a, b) {\n const aClassName = _getClassNameOf(a);\n const bClassName = _getClassNameOf(b);\n if (_areSameVectorClass(aClassName, bClassName) || _areSameIntegerClass(aClassName, bClassName)) {\n return a.divide(b);\n } else if (_areSameMatrixClass(aClassName, bClassName)) {\n return Matrix.FromValues(a.m[0] / b.m[0], a.m[4] / b.m[4], a.m[8] / b.m[8], a.m[12] / b.m[12], a.m[1] / b.m[1], a.m[5] / b.m[5], a.m[9] / b.m[9], a.m[13] / b.m[13], a.m[2] / b.m[2], a.m[6] / b.m[6], a.m[10] / b.m[10], a.m[14] / b.m[14], a.m[3] / b.m[3], a.m[7] / b.m[7], a.m[11] / b.m[11], a.m[15] / b.m[15]);\n } else {\n return a / b;\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphDivideBlock.ClassName = \"FGDivideBlock\";\nRegisterClass(FlowGraphDivideBlock.ClassName, FlowGraphDivideBlock);\n/**\n * @experimental\n * Random number between 0 and 1.\n */\nexport class FlowGraphRandomBlock extends FlowGraphConstantOperationBlock {\n constructor(config) {\n super(RichTypeNumber, () => Math.random(), FlowGraphRandomBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphRandomBlock.ClassName = \"FGRandomBlock\";\nRegisterClass(FlowGraphRandomBlock.ClassName, FlowGraphRandomBlock);\n/**\n * @experimental\n * Dot product block.\n */\nexport class FlowGraphDotBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeNumber, (a, b) => this._polymorphicDot(a, b), FlowGraphDotBlock.ClassName, config);\n }\n _polymorphicDot(a, b) {\n const className = _getClassNameOf(a);\n switch (className) {\n case \"Vector2\":\n return Vector2.Dot(a, b);\n case \"Vector3\":\n return Vector3.Dot(a, b);\n case \"Vector4\":\n return Vector4.Dot(a, b);\n default:\n throw new Error(`Cannot get dot product of ${a} and ${b}`);\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphDotBlock.ClassName = \"FGDotBlock\";\nRegisterClass(FlowGraphDotBlock.ClassName, FlowGraphDotBlock);\n/**\n * @experimental\n * E constant.\n */\nexport class FlowGraphEBlock extends FlowGraphConstantOperationBlock {\n constructor(config) {\n super(RichTypeNumber, () => Math.E, FlowGraphEBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphEBlock.ClassName = \"FGEBlock\";\nRegisterClass(FlowGraphEBlock.ClassName, FlowGraphEBlock);\n/**\n * @experimental\n * Pi constant.\n */\nexport class FlowGraphPiBlock extends FlowGraphConstantOperationBlock {\n constructor(config) {\n super(RichTypeNumber, () => Math.PI, FlowGraphPiBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphPiBlock.ClassName = \"FGPIBlock\";\nRegisterClass(FlowGraphPiBlock.ClassName, FlowGraphPiBlock);\n/**\n * @experimental\n * Positive inf constant.\n */\nexport class FlowGraphInfBlock extends FlowGraphConstantOperationBlock {\n constructor(config) {\n super(RichTypeNumber, () => Number.POSITIVE_INFINITY, FlowGraphInfBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphInfBlock.ClassName = \"FGInfBlock\";\nRegisterClass(FlowGraphInfBlock.ClassName, FlowGraphInfBlock);\n/**\n * @experimental\n * NaN constant.\n */\nexport class FlowGraphNaNBlock extends FlowGraphConstantOperationBlock {\n constructor(config) {\n super(RichTypeNumber, () => Number.NaN, FlowGraphNaNBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphNaNBlock.ClassName = \"FGNaNBlock\";\nRegisterClass(FlowGraphNaNBlock.ClassName, FlowGraphNaNBlock);\nfunction _componentWiseUnaryOperation(a, op) {\n const aClassName = _getClassNameOf(a);\n switch (aClassName) {\n case \"FlowGraphInteger\":\n return new FlowGraphInteger(op(a.value));\n case \"Vector2\":\n return new Vector2(op(a.x), op(a.y));\n case \"Vector3\":\n return new Vector3(op(a.x), op(a.y), op(a.z));\n case \"Vector4\":\n return new Vector4(op(a.x), op(a.y), op(a.z), op(a.w));\n case \"Matrix\":\n return Matrix.FromValues(op(a.m[0]), op(a.m[4]), op(a.m[8]), op(a.m[12]), op(a.m[1]), op(a.m[5]), op(a.m[9]), op(a.m[13]), op(a.m[2]), op(a.m[6]), op(a.m[10]), op(a.m[14]), op(a.m[3]), op(a.m[7]), op(a.m[11]), op(a.m[15]));\n default:\n return op(a);\n }\n}\n/**\n * @experimental\n * Absolute value block.\n */\nexport class FlowGraphAbsBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, a => this._polymorphicAbs(a), FlowGraphAbsBlock.ClassName, config);\n }\n _polymorphicAbs(a) {\n return _componentWiseUnaryOperation(a, Math.abs);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAbsBlock.ClassName = \"FGAbsBlock\";\nRegisterClass(FlowGraphAbsBlock.ClassName, FlowGraphAbsBlock);\n/**\n * @experimental\n * Sign block.\n */\nexport class FlowGraphSignBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, a => this._polymorphicSign(a), FlowGraphSignBlock.ClassName, config);\n }\n _polymorphicSign(a) {\n return _componentWiseUnaryOperation(a, Math.sign);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSignBlock.ClassName = \"FGSignBlock\";\nRegisterClass(FlowGraphSignBlock.ClassName, FlowGraphSignBlock);\n/**\n * @experimental\n * Truncation block.\n */\nexport class FlowGraphTruncBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, a => this._polymorphicTrunc(a), FlowGraphTruncBlock.ClassName, config);\n }\n _polymorphicTrunc(a) {\n return _componentWiseUnaryOperation(a, Math.trunc);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphTruncBlock.ClassName = \"FGTruncBlock\";\nRegisterClass(FlowGraphTruncBlock.ClassName, FlowGraphTruncBlock);\n/**\n * @experimental\n * Floor block.\n */\nexport class FlowGraphFloorBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, a => this._polymorphicFloor(a), FlowGraphFloorBlock.ClassName, config);\n }\n _polymorphicFloor(a) {\n return _componentWiseUnaryOperation(a, Math.floor);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphFloorBlock.ClassName = \"FGFloorBlock\";\nRegisterClass(FlowGraphFloorBlock.ClassName, FlowGraphFloorBlock);\n/**\n * @experimental\n * Ceiling block.\n */\nexport class FlowGraphCeilBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, a => this._polymorphicCeiling(a), FlowGraphCeilBlock.ClassName, config);\n }\n _polymorphicCeiling(a) {\n return _componentWiseUnaryOperation(a, Math.ceil);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCeilBlock.ClassName = \"FGCeilBlock\";\nRegisterClass(FlowGraphCeilBlock.ClassName, FlowGraphCeilBlock);\n/**\n * @experimental\n * Fract block.\n */\nexport class FlowGraphFractBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, a => this._polymorphicFract(a), FlowGraphFractBlock.ClassName, config);\n }\n _polymorphicFract(a) {\n return _componentWiseUnaryOperation(a, a => a - Math.floor(a));\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphFractBlock.ClassName = \"FGFractBlock\";\nRegisterClass(FlowGraphFractBlock.ClassName, FlowGraphFractBlock);\n/**\n * @experimental\n * Negation block.\n */\nexport class FlowGraphNegBlock extends FlowGraphUnaryOperationBlock {\n /**\n * construct a new negation block.\n * @param config optional configuration\n */\n constructor(config) {\n super(RichTypeAny, RichTypeAny, a => this._polymorphicNeg(a), FlowGraphNegBlock.ClassName, config);\n }\n _polymorphicNeg(a) {\n return _componentWiseUnaryOperation(a, a => -a);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphNegBlock.ClassName = \"FGNegBlock\";\nRegisterClass(FlowGraphNegBlock.ClassName, FlowGraphNegBlock);\nfunction _componentWiseBinaryOperation(a, b, op) {\n const aClassName = _getClassNameOf(a);\n switch (aClassName) {\n case \"FlowGraphInteger\":\n return new FlowGraphInteger(op(a.value, b.value));\n case \"Vector2\":\n return new Vector2(op(a.x, b.x), op(a.y, b.y));\n case \"Vector3\":\n return new Vector3(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z));\n case \"Vector4\":\n return new Vector4(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z), op(a.w, b.w));\n case \"Matrix\":\n return Matrix.FromValues(op(a.m[0], b.m[0]), op(a.m[4], b.m[4]), op(a.m[8], b.m[8]), op(a.m[12], b.m[12]), op(a.m[1], b.m[1]), op(a.m[5], b.m[5]), op(a.m[9], b.m[9]), op(a.m[13], b.m[13]), op(a.m[2], b.m[2]), op(a.m[6], b.m[6]), op(a.m[10], b.m[10]), op(a.m[14], b.m[14]), op(a.m[3], b.m[3]), op(a.m[7], b.m[7]), op(a.m[11], b.m[11]), op(a.m[15], b.m[15]));\n default:\n return op(a, b);\n }\n}\n/**\n * @experimental\n * Remainder block.\n */\nexport class FlowGraphRemainderBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicRemainder(a, b), FlowGraphRemainderBlock.ClassName, config);\n }\n _polymorphicRemainder(a, b) {\n return _componentWiseBinaryOperation(a, b, (a, b) => a % b);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphRemainderBlock.ClassName = \"FGRemainderBlock\";\nRegisterClass(FlowGraphRemainderBlock.ClassName, FlowGraphRemainderBlock);\n/**\n * @experimental\n * Min block.\n */\nexport class FlowGraphMinBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicMin(a, b), FlowGraphMinBlock.ClassName, config);\n }\n _polymorphicMin(a, b) {\n return _componentWiseBinaryOperation(a, b, Math.min);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphMinBlock.ClassName = \"FGMinBlock\";\nRegisterClass(FlowGraphMinBlock.ClassName, FlowGraphMinBlock);\n/**\n * @experimental\n * Max block\n */\nexport class FlowGraphMaxBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicMax(a, b), FlowGraphMaxBlock.ClassName, config);\n }\n _polymorphicMax(a, b) {\n return _componentWiseBinaryOperation(a, b, Math.max);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphMaxBlock.ClassName = \"FGMaxBlock\";\nRegisterClass(FlowGraphMaxBlock.ClassName, FlowGraphMaxBlock);\nfunction _clamp(a, b, c) {\n return Math.min(Math.max(a, Math.min(b, c)), Math.max(b, c));\n}\nfunction _componentWiseTernaryOperation(a, b, c, op) {\n const aClassName = _getClassNameOf(a);\n switch (aClassName) {\n case \"FlowGraphInteger\":\n return new FlowGraphInteger(op(a.value, b.value, c.value));\n case \"Vector2\":\n return new Vector2(op(a.x, b.x, c.x), op(a.y, b.y, c.y));\n case \"Vector3\":\n return new Vector3(op(a.x, b.x, c.x), op(a.y, b.y, c.y), op(a.z, b.z, c.z));\n case \"Vector4\":\n return new Vector4(op(a.x, b.x, c.x), op(a.y, b.y, c.y), op(a.z, b.z, c.z), op(a.w, b.w, c.w));\n case \"Matrix\":\n return Matrix.FromValues(op(a.m[0], b.m[0], c.m[0]), op(a.m[4], b.m[4], c.m[4]), op(a.m[8], b.m[8], c.m[8]), op(a.m[12], b.m[12], c.m[12]), op(a.m[1], b.m[1], c.m[1]), op(a.m[5], b.m[5], c.m[5]), op(a.m[9], b.m[9], c.m[9]), op(a.m[13], b.m[13], c.m[13]), op(a.m[2], b.m[2], c.m[2]), op(a.m[6], b.m[6], c.m[6]), op(a.m[10], b.m[10], c.m[10]), op(a.m[14], b.m[14], c.m[14]), op(a.m[3], b.m[3], c.m[3]), op(a.m[7], b.m[7], c.m[7]), op(a.m[11], b.m[11], c.m[11]), op(a.m[15], b.m[15], c.m[15]));\n default:\n return op(a, b, c);\n }\n}\n/**\n * @experimental\n * Clamp block.\n */\nexport class FlowGraphClampBlock extends FlowGraphTernaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, RichTypeAny, (a, b, c) => this._polymorphicClamp(a, b, c), FlowGraphClampBlock.ClassName, config);\n }\n _polymorphicClamp(a, b, c) {\n return _componentWiseTernaryOperation(a, b, c, _clamp);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphClampBlock.ClassName = \"FGClampBlock\";\nRegisterClass(FlowGraphClampBlock.ClassName, FlowGraphClampBlock);\nfunction _saturate(a) {\n return Math.min(Math.max(a, 0), 1);\n}\n/**\n * @experimental\n * Saturate block.\n */\nexport class FlowGraphSaturateBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, a => this._polymorphicSaturate(a), FlowGraphSaturateBlock.ClassName, config);\n }\n _polymorphicSaturate(a) {\n return _componentWiseUnaryOperation(a, _saturate);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSaturateBlock.ClassName = \"FGSaturateBlock\";\nRegisterClass(FlowGraphSaturateBlock.ClassName, FlowGraphSaturateBlock);\n/**\n * @experimental\n * Interpolate block.\n */\nexport class FlowGraphInterpolateBlock extends FlowGraphTernaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, RichTypeAny, (a, b, c) => this._polymorphicInterpolate(a, b, c), FlowGraphInterpolateBlock.ClassName, config);\n }\n _interpolate(a, b, c) {\n return (1 - c) * a + c * b;\n }\n _polymorphicInterpolate(a, b, c) {\n return _componentWiseTernaryOperation(a, b, c, this._interpolate);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphInterpolateBlock.ClassName = \"FGInterpolateBlock\";\nRegisterClass(FlowGraphInterpolateBlock.ClassName, FlowGraphInterpolateBlock);\n/**\n * @experimental\n * Equals block.\n */\nexport class FlowGraphEqBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeBoolean, (a, b) => this._polymorphicEq(a, b), FlowGraphEqBlock.ClassName, config);\n }\n _polymorphicEq(a, b) {\n const aClassName = _getClassNameOf(a);\n const bClassName = _getClassNameOf(b);\n if (_areSameVectorClass(aClassName, bClassName) || _areSameMatrixClass(aClassName, bClassName) || _areSameIntegerClass(aClassName, bClassName)) {\n return a.equals(b);\n } else {\n return a === b;\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphEqBlock.ClassName = \"FGEqBlock\";\nRegisterClass(FlowGraphEqBlock.ClassName, FlowGraphEqBlock);\nfunction _comparisonOperators(a, b, op) {\n const aClassName = _getClassNameOf(a);\n const bClassName = _getClassNameOf(b);\n if (aClassName === bClassName) {\n // float\n if (aClassName === \"\") {\n return op(a, b);\n } else if (aClassName === \"FlowGraphInteger\") {\n return op(a.value, b.value);\n } else {\n throw new Error(`Cannot compare ${a} and ${b}`);\n }\n }\n throw new Error(`${a} and ${b} are of different types.`);\n}\n/**\n * @experimental\n * Less than block.\n */\nexport class FlowGraphLessThanBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeBoolean, (a, b) => this._polymorphicLessThan(a, b), FlowGraphLessThanBlock.ClassName, config);\n }\n _polymorphicLessThan(a, b) {\n return _comparisonOperators(a, b, (a, b) => a < b);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphLessThanBlock.ClassName = \"FGLessThanBlock\";\nRegisterClass(FlowGraphLessThanBlock.ClassName, FlowGraphLessThanBlock);\n/**\n * @experimental\n * Less than or equal block.\n */\nexport class FlowGraphLessThanOrEqualBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeBoolean, (a, b) => this._polymorphicLessThanOrEqual(a, b), FlowGraphLessThanOrEqualBlock.ClassName, config);\n }\n _polymorphicLessThanOrEqual(a, b) {\n return _comparisonOperators(a, b, (a, b) => a <= b);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphLessThanOrEqualBlock.ClassName = \"FGLessThanOrEqualBlock\";\n/**\n * @experimental\n * Greater than block.\n */\nexport class FlowGraphGreaterThanBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeBoolean, (a, b) => this._polymorphicGreaterThan(a, b), FlowGraphGreaterThanBlock.ClassName, config);\n }\n _polymorphicGreaterThan(a, b) {\n return _comparisonOperators(a, b, (a, b) => a > b);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphGreaterThanBlock.ClassName = \"FGGreaterThanBlock\";\nRegisterClass(FlowGraphGreaterThanBlock.ClassName, FlowGraphGreaterThanBlock);\n/**\n * @experimental\n * Greater than or equal block.\n */\nexport class FlowGraphGreaterThanOrEqualBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeBoolean, (a, b) => this._polymorphicGreaterThanOrEqual(a, b), FlowGraphGreaterThanOrEqualBlock.ClassName, config);\n }\n _polymorphicGreaterThanOrEqual(a, b) {\n return _comparisonOperators(a, b, (a, b) => a >= b);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphGreaterThanOrEqualBlock.ClassName = \"FGGreaterThanOrEqualBlock\";\nRegisterClass(FlowGraphGreaterThanOrEqualBlock.ClassName, FlowGraphGreaterThanOrEqualBlock);\n/**\n * @experimental\n * Is NaN block.\n */\nexport class FlowGraphIsNanBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeBoolean, a => this._polymorphicIsNan(a), FlowGraphIsNanBlock.ClassName, config);\n }\n _polymorphicIsNan(a) {\n const aClassName = _getClassNameOf(a);\n if (aClassName === \"\") {\n return isNaN(a);\n } else if (aClassName === \"FlowGraphInteger\") {\n return isNaN(a.value);\n } else {\n throw new Error(`Cannot get NaN of ${a}`);\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphIsNanBlock.ClassName = \"FGIsNanBlock\";\nRegisterClass(FlowGraphIsNanBlock.ClassName, FlowGraphIsNanBlock);\n/**\n * @experimental\n * Is Inf block.\n */\nexport class FlowGraphIsInfBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeBoolean, a => this._polymorphicIsInf(a), FlowGraphIsInfBlock.ClassName, config);\n }\n _polymorphicIsInf(a) {\n const aClassName = _getClassNameOf(a);\n if (aClassName === \"\") {\n return !isFinite(a);\n } else if (aClassName === \"FlowGraphInteger\") {\n return !isFinite(a.value);\n } else {\n throw new Error(`Cannot get isInf of ${a}`);\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphIsInfBlock.ClassName = \"FGIsInfBlock\";\n/**\n * @experimental\n * Convert degrees to radians block.\n */\nexport class FlowGraphDegToRadBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, a => this._polymorphicDegToRad(a), FlowGraphDegToRadBlock.ClassName, config);\n }\n _degToRad(a) {\n return a * Math.PI / 180;\n }\n _polymorphicDegToRad(a) {\n return _componentWiseUnaryOperation(a, this._degToRad);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphDegToRadBlock.ClassName = \"FGDegToRadBlock\";\nRegisterClass(FlowGraphDegToRadBlock.ClassName, FlowGraphDegToRadBlock);\n/**\n * @experimental\n * Convert radians to degrees block.\n */\nexport class FlowGraphRadToDegBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, a => this._polymorphicRadToDeg(a), FlowGraphRadToDegBlock.ClassName, config);\n }\n _radToDeg(a) {\n return a * 180 / Math.PI;\n }\n _polymorphicRadToDeg(a) {\n return _componentWiseUnaryOperation(a, this._radToDeg);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphRadToDegBlock.ClassName = \"FGRadToDegBlock\";\nRegisterClass(FlowGraphRadToDegBlock.ClassName, FlowGraphRadToDegBlock);\n/**\n * @experimental\n * Sin block.\n */\nexport class FlowGraphSinBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, a => this._polymorphicSin(a), FlowGraphSinBlock.ClassName, config);\n }\n _polymorphicSin(a) {\n return _componentWiseUnaryOperation(a, Math.sin);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSinBlock.ClassName = \"FGSinBlock\";\nRegisterClass(FlowGraphSinBlock.ClassName, FlowGraphSinBlock);\n/**\n * @experimental\n * Cos block.\n */\nexport class FlowGraphCosBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, a => this._polymorphicCos(a), FlowGraphCosBlock.ClassName, config);\n }\n _polymorphicCos(a) {\n return _componentWiseUnaryOperation(a, Math.cos);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCosBlock.ClassName = \"FGCosBlock\";\nRegisterClass(FlowGraphCosBlock.ClassName, FlowGraphCosBlock);\n/**\n * @experimental\n * Tan block.\n */\nexport class FlowGraphTanBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, a => this._polymorphicTan(a), FlowGraphTanBlock.ClassName, config);\n }\n _polymorphicTan(a) {\n return _componentWiseUnaryOperation(a, Math.tan);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphTanBlock.ClassName = \"FGTanBlock\";\nRegisterClass(FlowGraphTanBlock.ClassName, FlowGraphTanBlock);\n/**\n * @experimental\n * Arcsin block.\n */\nexport class FlowGraphAsinBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, a => this._polymorphicAsin(a), FlowGraphAsinBlock.ClassName, config);\n }\n _polymorphicAsin(a) {\n return _componentWiseUnaryOperation(a, Math.asin);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAsinBlock.ClassName = \"FGAsinBlock\";\nRegisterClass(FlowGraphAsinBlock.ClassName, FlowGraphAsinBlock);\n/**\n * @experimental\n * Arccos block.\n */\nexport class FlowGraphAcosBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, a => this._polymorphicAcos(a), FlowGraphAcosBlock.ClassName, config);\n }\n _polymorphicAcos(a) {\n return _componentWiseUnaryOperation(a, Math.acos);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAcosBlock.ClassName = \"FGAcosBlock\";\nRegisterClass(FlowGraphAcosBlock.ClassName, FlowGraphAcosBlock);\n/**\n * @experimental\n * Arctan block.\n */\nexport class FlowGraphAtanBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, a => this._polymorphicAtan(a), FlowGraphAtanBlock.ClassName, config);\n }\n _polymorphicAtan(a) {\n return _componentWiseUnaryOperation(a, Math.atan);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAtanBlock.ClassName = \"FGAtanBlock\";\nRegisterClass(FlowGraphAtanBlock.ClassName, FlowGraphAtanBlock);\n/**\n * @experimental\n * Arctan2 block.\n */\nexport class FlowGraphAtan2Block extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicAtan2(a, b), FlowGraphAtan2Block.ClassName, config);\n }\n _polymorphicAtan2(a, b) {\n return _componentWiseBinaryOperation(a, b, Math.atan2);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAtan2Block.ClassName = \"FGAtan2Block\";\nRegisterClass(FlowGraphAtan2Block.ClassName, FlowGraphAtan2Block);\n/**\n * @experimental\n * Hyperbolic sin block.\n */\nexport class FlowGraphSinhBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, a => this._polymorphicSinh(a), FlowGraphSinhBlock.ClassName, config);\n }\n _polymorphicSinh(a) {\n return _componentWiseUnaryOperation(a, Math.sinh);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSinhBlock.ClassName = \"FGSinhBlock\";\nRegisterClass(FlowGraphSinhBlock.ClassName, FlowGraphSinhBlock);\n/**\n * @experimental\n * Hyperbolic cos block.\n */\nexport class FlowGraphCoshBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, a => this._polymorphicCosh(a), FlowGraphCoshBlock.ClassName, config);\n }\n _polymorphicCosh(a) {\n return _componentWiseUnaryOperation(a, Math.cosh);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCoshBlock.ClassName = \"FGCoshBlock\";\nRegisterClass(FlowGraphCoshBlock.ClassName, FlowGraphCoshBlock);\n/**\n * @experimental\n * Hyperbolic tan block.\n */\nexport class FlowGraphTanhBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, a => this._polymorphicTanh(a), FlowGraphTanhBlock.ClassName, config);\n }\n _polymorphicTanh(a) {\n return _componentWiseUnaryOperation(a, Math.tanh);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphTanhBlock.ClassName = \"FGTanhBlock\";\nRegisterClass(FlowGraphTanhBlock.ClassName, FlowGraphTanhBlock);\n/**\n * @experimental\n * Hyperbolic arcsin block.\n */\nexport class FlowGraphAsinhBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, a => this._polymorphicAsinh(a), FlowGraphAsinhBlock.ClassName, config);\n }\n _polymorphicAsinh(a) {\n return _componentWiseUnaryOperation(a, Math.asinh);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAsinhBlock.ClassName = \"FGAsinhBlock\";\nRegisterClass(FlowGraphAsinhBlock.ClassName, FlowGraphAsinhBlock);\n/**\n * @experimental\n * Hyperbolic arccos block.\n */\nexport class FlowGraphAcoshBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, a => this._polymorphicAcosh(a), FlowGraphAcoshBlock.ClassName, config);\n }\n _polymorphicAcosh(a) {\n return _componentWiseUnaryOperation(a, Math.acosh);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAcoshBlock.ClassName = \"FGAcoshBlock\";\nRegisterClass(FlowGraphAcoshBlock.ClassName, FlowGraphAcoshBlock);\n/**\n * @experimental\n * Hyperbolic arctan block.\n */\nexport class FlowGraphAtanhBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, a => this._polymorphicAtanh(a), FlowGraphAtanhBlock.ClassName, config);\n }\n _polymorphicAtanh(a) {\n return _componentWiseUnaryOperation(a, Math.atanh);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAtanhBlock.ClassName = \"FGAtanhBlock\";\nRegisterClass(FlowGraphAtanhBlock.ClassName, FlowGraphAtanhBlock);\n/**\n * @experimental\n * Exponential block.\n */\nexport class FlowGraphExpBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, a => this._polymorphicExp(a), FlowGraphExpBlock.ClassName, config);\n }\n _polymorphicExp(a) {\n return _componentWiseUnaryOperation(a, Math.exp);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphExpBlock.ClassName = \"FGExpBlock\";\nRegisterClass(FlowGraphExpBlock.ClassName, FlowGraphExpBlock);\n/**\n * @experimental\n * Logarithm block.\n */\nexport class FlowGraphLogBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, a => this._polymorphicLog(a), FlowGraphLogBlock.ClassName, config);\n }\n _polymorphicLog(a) {\n return _componentWiseUnaryOperation(a, Math.log);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphLogBlock.ClassName = \"FGLogBlock\";\nRegisterClass(FlowGraphLogBlock.ClassName, FlowGraphLogBlock);\n/**\n * @experimental\n * Base 2 logarithm block.\n */\nexport class FlowGraphLog2Block extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, a => this._polymorphicLog2(a), FlowGraphLog2Block.ClassName, config);\n }\n _polymorphicLog2(a) {\n return _componentWiseUnaryOperation(a, Math.log2);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphLog2Block.ClassName = \"FGLog2Block\";\nRegisterClass(FlowGraphLog2Block.ClassName, FlowGraphLog2Block);\n/**\n * @experimental\n * Base 10 logarithm block.\n */\nexport class FlowGraphLog10Block extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, a => this._polymorphicLog10(a), FlowGraphLog10Block.ClassName, config);\n }\n _polymorphicLog10(a) {\n return _componentWiseUnaryOperation(a, Math.log10);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphLog10Block.ClassName = \"FGLog10Block\";\nRegisterClass(FlowGraphLog10Block.ClassName, FlowGraphLog10Block);\n/**\n * @experimental\n * Square root block.\n */\nexport class FlowGraphSqrtBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, a => this._polymorphicSqrt(a), FlowGraphSqrtBlock.ClassName, config);\n }\n _polymorphicSqrt(a) {\n return _componentWiseUnaryOperation(a, Math.sqrt);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSqrtBlock.ClassName = \"FGSqrtBlock\";\nRegisterClass(FlowGraphSqrtBlock.ClassName, FlowGraphSqrtBlock);\n/**\n * @experimental\n * Cube root block.\n */\nexport class FlowGraphCubeRootBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, a => this._polymorphicCubeRoot(a), FlowGraphCubeRootBlock.ClassName, config);\n }\n _polymorphicCubeRoot(a) {\n return _componentWiseUnaryOperation(a, Math.cbrt);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCubeRootBlock.ClassName = \"FGCubeRootBlock\";\nRegisterClass(FlowGraphCubeRootBlock.ClassName, FlowGraphCubeRootBlock);\n/**\n * @experimental\n * Power block.\n */\nexport class FlowGraphPowBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, RichTypeNumber, (a, b) => this._polymorphicPow(a, b), FlowGraphPowBlock.ClassName, config);\n }\n _polymorphicPow(a, b) {\n return _componentWiseBinaryOperation(a, b, Math.pow);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphPowBlock.ClassName = \"FGPowBlock\";\nRegisterClass(FlowGraphPowBlock.ClassName, FlowGraphPowBlock);\n/**\n * @experimental\n * Vector length block.\n */\nexport class FlowGraphLengthBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, a => this._polymorphicLength(a), FlowGraphLengthBlock.ClassName, config);\n }\n _polymorphicLength(a) {\n const aClassName = _getClassNameOf(a);\n switch (aClassName) {\n case \"Vector2\":\n case \"Vector3\":\n case \"Vector4\":\n return a.length();\n default:\n throw new Error(`Cannot compute length of value ${a}`);\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphLengthBlock.ClassName = \"FGLengthBlock\";\nRegisterClass(FlowGraphLengthBlock.ClassName, FlowGraphLengthBlock);\n/**\n * @experimental\n * Vector normalize block.\n */\nexport class FlowGraphNormalizeBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, a => this._polymorphicNormalize(a), FlowGraphNormalizeBlock.ClassName, config);\n }\n _polymorphicNormalize(a) {\n const aClassName = _getClassNameOf(a);\n switch (aClassName) {\n case \"Vector2\":\n case \"Vector3\":\n case \"Vector4\":\n return a.normalize();\n default:\n throw new Error(`Cannot normalize value ${a}`);\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphNormalizeBlock.ClassName = \"FGNormalizeBlock\";\nRegisterClass(FlowGraphNormalizeBlock.ClassName, FlowGraphNormalizeBlock);\n/**\n * @experimental\n * Cross product block.\n */\nexport class FlowGraphCrossBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeVector3, RichTypeVector3, RichTypeVector3, (a, b) => Vector3.Cross(a, b), FlowGraphCrossBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCrossBlock.ClassName = \"FGCrossBlock\";\nRegisterClass(FlowGraphCrossBlock.ClassName, FlowGraphCrossBlock);\n/**\n * @experimental\n * 2D rotation block.\n */\nexport class FlowGraphRotate2DBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeVector2, RichTypeNumber, RichTypeVector2, (a, b) => Vector2.Transform(a, Matrix.RotationZ(b)), FlowGraphRotate2DBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphRotate2DBlock.ClassName = \"FGRotate2DBlock\";\nRegisterClass(FlowGraphRotate2DBlock.ClassName, FlowGraphRotate2DBlock);\n/**\n * @experimental\n * 3D rotation block.\n */\nexport class FlowGraphRotate3DBlock extends FlowGraphTernaryOperationBlock {\n constructor(config) {\n super(RichTypeVector3, RichTypeVector3, RichTypeNumber, RichTypeVector3, (a, b, c) => Vector3.TransformCoordinates(a, Matrix.RotationAxis(b, c)), FlowGraphRotate3DBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphRotate3DBlock.ClassName = \"FGRotate3DBlock\";\nRegisterClass(FlowGraphRotate3DBlock.ClassName, FlowGraphRotate3DBlock);\n/**\n * @experimental\n * Transposes a matrix.\n */\nexport class FlowGraphTransposeBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeMatrix, RichTypeMatrix, a => Matrix.Transpose(a), FlowGraphTransposeBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphTransposeBlock.ClassName = \"FGTransposeBlock\";\nRegisterClass(FlowGraphTransposeBlock.ClassName, FlowGraphTransposeBlock);\n/**\n * @experimental\n * Gets the determinant of a matrix.\n */\nexport class FlowGraphDeterminantBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeMatrix, RichTypeNumber, a => a.determinant(), FlowGraphDeterminantBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphDeterminantBlock.ClassName = \"FGDeterminantBlock\";\nRegisterClass(FlowGraphDeterminantBlock.ClassName, FlowGraphDeterminantBlock);\n/**\n * @experimental\n * Inverts a matrix.\n */\nexport class FlowGraphInvertMatrixBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeMatrix, RichTypeMatrix, a => Matrix.Invert(a), FlowGraphInvertMatrixBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphInvertMatrixBlock.ClassName = \"FGInvertMatrixBlock\";\nRegisterClass(FlowGraphInvertMatrixBlock.ClassName, FlowGraphInvertMatrixBlock);\n/**\n * @experimental\n * Multiplies two matrices.\n */\nexport class FlowGraphMatMulBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeMatrix, RichTypeMatrix, RichTypeMatrix, (a, b) => b.multiply(a), FlowGraphMatMulBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphMatMulBlock.ClassName = \"FGMatMulBlock\";\nRegisterClass(FlowGraphMatMulBlock.ClassName, FlowGraphMatMulBlock);\n/**\n * @experimental\n * Bitwise NOT operation\n */\nexport class FlowGraphBitwiseNotBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, a => new FlowGraphInteger(~a.value), FlowGraphBitwiseNotBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphBitwiseNotBlock.ClassName = \"FGBitwiseNotBlock\";\nRegisterClass(FlowGraphBitwiseNotBlock.ClassName, FlowGraphBitwiseNotBlock);\n/**\n * @experimental\n * Bitwise AND operation\n */\nexport class FlowGraphBitwiseAndBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a, b) => new FlowGraphInteger(a.value & b.value), FlowGraphBitwiseAndBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphBitwiseAndBlock.ClassName = \"FGBitwiseAndBlock\";\nRegisterClass(FlowGraphBitwiseAndBlock.ClassName, FlowGraphBitwiseAndBlock);\n/**\n * @experimental\n * Bitwise OR operation\n */\nexport class FlowGraphBitwiseOrBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a, b) => new FlowGraphInteger(a.value | b.value), FlowGraphBitwiseOrBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphBitwiseOrBlock.ClassName = \"FGBitwiseOrBlock\";\nRegisterClass(FlowGraphBitwiseOrBlock.ClassName, FlowGraphBitwiseOrBlock);\n/**\n * @experimental\n * Bitwise XOR operation\n */\nexport class FlowGraphBitwiseXorBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a, b) => new FlowGraphInteger(a.value ^ b.value), FlowGraphBitwiseXorBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphBitwiseXorBlock.ClassName = \"FGBitwiseXorBlock\";\nRegisterClass(FlowGraphBitwiseXorBlock.ClassName, FlowGraphBitwiseXorBlock);\n/**\n * @experimental\n * Bitwise left shift operation\n */\nexport class FlowGraphBitwiseLeftShiftBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a, b) => new FlowGraphInteger(a.value << b.value), FlowGraphBitwiseLeftShiftBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphBitwiseLeftShiftBlock.ClassName = \"FGBitwiseLeftShiftBlock\";\nRegisterClass(FlowGraphBitwiseLeftShiftBlock.ClassName, FlowGraphBitwiseLeftShiftBlock);\n/**\n * @experimental\n * Bitwise right shift operation\n */\nexport class FlowGraphBitwiseRightShiftBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a, b) => new FlowGraphInteger(a.value >> b.value), FlowGraphBitwiseRightShiftBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphBitwiseRightShiftBlock.ClassName = \"FGBitwiseRightShiftBlock\";\nRegisterClass(FlowGraphBitwiseRightShiftBlock.ClassName, FlowGraphBitwiseRightShiftBlock);\n/**\n * @experimental\n * Count leading zeros operation\n */\nexport class FlowGraphCountLeadingZerosBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, a => new FlowGraphInteger(Math.clz32(a.value)), FlowGraphCountLeadingZerosBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCountLeadingZerosBlock.ClassName = \"FGCountLeadingZerosBlock\";\nRegisterClass(FlowGraphCountLeadingZerosBlock.ClassName, FlowGraphCountLeadingZerosBlock);\n/**\n * @experimental\n * Count trailing zeros operation\n */\nexport class FlowGraphCountTrailingZerosBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, a => new FlowGraphInteger(a.value ? 31 - Math.clz32(a.value & -a.value) : 32), FlowGraphCountTrailingZerosBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCountTrailingZerosBlock.ClassName = \"FGCountTrailingZerosBlock\";\nRegisterClass(FlowGraphCountTrailingZerosBlock.ClassName, FlowGraphCountTrailingZerosBlock);\n/**\n * Given a number (which is converted to a 32-bit integer), return the\n * number of bits set to one on that number.\n * @internal\n * @param n\n */\nfunction _countOnes(n) {\n let result = 0;\n while (n) {\n // This zeroes out all bits except for the least significant one.\n // So if the bit is set, it will be 1, otherwise it will be 0.\n result += n & 1;\n // This shifts n's bits to the right by one\n n >>= 1;\n }\n return result;\n}\n/**\n * @experimental\n * Count one bits operation\n */\nexport class FlowGraphCountOneBitsBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, a => new FlowGraphInteger(_countOnes(a.value)), FlowGraphCountOneBitsBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCountOneBitsBlock.ClassName = \"FGCountOneBitsBlock\";\nRegisterClass(FlowGraphCountOneBitsBlock.ClassName, FlowGraphCountOneBitsBlock);","map":{"version":3,"names":["RegisterClass","RichTypeAny","RichTypeBoolean","RichTypeFlowGraphInteger","RichTypeMatrix","RichTypeNumber","RichTypeVector2","RichTypeVector3","FlowGraphBinaryOperationBlock","FlowGraphConstantOperationBlock","Matrix","Vector2","Vector3","Vector4","FlowGraphUnaryOperationBlock","FlowGraphTernaryOperationBlock","FlowGraphInteger","_getClassNameOf","v","getClassName","_areSameVectorClass","className","className2","_areSameMatrixClass","_areSameIntegerClass","FlowGraphAddBlock","constructor","config","a","b","_polymorphicAdd","ClassName","aClassName","bClassName","add","FlowGraphSubtractBlock","subtract","scale","FlowGraphMultiplyBlock","_polymorphicMultiply","multiply","FromValues","m","FlowGraphDivideBlock","_polymorphicDivide","divide","FlowGraphRandomBlock","Math","random","FlowGraphDotBlock","_polymorphicDot","Dot","Error","FlowGraphEBlock","E","FlowGraphPiBlock","PI","FlowGraphInfBlock","Number","POSITIVE_INFINITY","FlowGraphNaNBlock","NaN","_componentWiseUnaryOperation","op","value","x","y","z","w","FlowGraphAbsBlock","_polymorphicAbs","abs","FlowGraphSignBlock","_polymorphicSign","sign","FlowGraphTruncBlock","_polymorphicTrunc","trunc","FlowGraphFloorBlock","_polymorphicFloor","floor","FlowGraphCeilBlock","_polymorphicCeiling","ceil","FlowGraphFractBlock","_polymorphicFract","FlowGraphNegBlock","_polymorphicNeg","_componentWiseBinaryOperation","FlowGraphRemainderBlock","_polymorphicRemainder","FlowGraphMinBlock","_polymorphicMin","min","FlowGraphMaxBlock","_polymorphicMax","max","_clamp","c","_componentWiseTernaryOperation","FlowGraphClampBlock","_polymorphicClamp","_saturate","FlowGraphSaturateBlock","_polymorphicSaturate","FlowGraphInterpolateBlock","_polymorphicInterpolate","_interpolate","FlowGraphEqBlock","_polymorphicEq","equals","_comparisonOperators","FlowGraphLessThanBlock","_polymorphicLessThan","FlowGraphLessThanOrEqualBlock","_polymorphicLessThanOrEqual","FlowGraphGreaterThanBlock","_polymorphicGreaterThan","FlowGraphGreaterThanOrEqualBlock","_polymorphicGreaterThanOrEqual","FlowGraphIsNanBlock","_polymorphicIsNan","isNaN","FlowGraphIsInfBlock","_polymorphicIsInf","isFinite","FlowGraphDegToRadBlock","_polymorphicDegToRad","_degToRad","FlowGraphRadToDegBlock","_polymorphicRadToDeg","_radToDeg","FlowGraphSinBlock","_polymorphicSin","sin","FlowGraphCosBlock","_polymorphicCos","cos","FlowGraphTanBlock","_polymorphicTan","tan","FlowGraphAsinBlock","_polymorphicAsin","asin","FlowGraphAcosBlock","_polymorphicAcos","acos","FlowGraphAtanBlock","_polymorphicAtan","atan","FlowGraphAtan2Block","_polymorphicAtan2","atan2","FlowGraphSinhBlock","_polymorphicSinh","sinh","FlowGraphCoshBlock","_polymorphicCosh","cosh","FlowGraphTanhBlock","_polymorphicTanh","tanh","FlowGraphAsinhBlock","_polymorphicAsinh","asinh","FlowGraphAcoshBlock","_polymorphicAcosh","acosh","FlowGraphAtanhBlock","_polymorphicAtanh","atanh","FlowGraphExpBlock","_polymorphicExp","exp","FlowGraphLogBlock","_polymorphicLog","log","FlowGraphLog2Block","_polymorphicLog2","log2","FlowGraphLog10Block","_polymorphicLog10","log10","FlowGraphSqrtBlock","_polymorphicSqrt","sqrt","FlowGraphCubeRootBlock","_polymorphicCubeRoot","cbrt","FlowGraphPowBlock","_polymorphicPow","pow","FlowGraphLengthBlock","_polymorphicLength","length","FlowGraphNormalizeBlock","_polymorphicNormalize","normalize","FlowGraphCrossBlock","Cross","FlowGraphRotate2DBlock","Transform","RotationZ","FlowGraphRotate3DBlock","TransformCoordinates","RotationAxis","FlowGraphTransposeBlock","Transpose","FlowGraphDeterminantBlock","determinant","FlowGraphInvertMatrixBlock","Invert","FlowGraphMatMulBlock","FlowGraphBitwiseNotBlock","FlowGraphBitwiseAndBlock","FlowGraphBitwiseOrBlock","FlowGraphBitwiseXorBlock","FlowGraphBitwiseLeftShiftBlock","FlowGraphBitwiseRightShiftBlock","FlowGraphCountLeadingZerosBlock","clz32","FlowGraphCountTrailingZerosBlock","_countOnes","n","result","FlowGraphCountOneBitsBlock"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.js"],"sourcesContent":["import { RegisterClass } from \"../../../../Misc/typeStore.js\";\nimport { RichTypeAny, RichTypeBoolean, RichTypeFlowGraphInteger, RichTypeMatrix, RichTypeNumber, RichTypeVector2, RichTypeVector3 } from \"../../../flowGraphRichTypes.js\";\nimport { FlowGraphBinaryOperationBlock } from \"../flowGraphBinaryOperationBlock.js\";\nimport { FlowGraphConstantOperationBlock } from \"../flowGraphConstantOperationBlock.js\";\nimport { Matrix, Vector2, Vector3, Vector4 } from \"../../../../Maths/math.vector.js\";\nimport { FlowGraphUnaryOperationBlock } from \"../flowGraphUnaryOperationBlock.js\";\nimport { FlowGraphTernaryOperationBlock } from \"../flowGraphTernaryOperationBlock.js\";\nimport { FlowGraphInteger } from \"../../../flowGraphInteger.js\";\n/**\n * @internal\n */\nfunction _getClassNameOf(v) {\n if (v.getClassName) {\n return v.getClassName();\n }\n return \"\";\n}\n/**\n * @internal\n * @returns\n */\nfunction _areSameVectorClass(className, className2) {\n return (className === \"Vector2\" && className2 === \"Vector2\") || (className === \"Vector3\" && className2 === \"Vector3\") || (className === \"Vector4\" && className2 === \"Vector4\");\n}\n/**\n * @internal\n * @returns\n */\nfunction _areSameMatrixClass(className, className2) {\n return className === \"Matrix\" && className2 === \"Matrix\";\n}\n/**\n * @internal\n * @returns\n */\nfunction _areSameIntegerClass(className, className2) {\n return className === \"FlowGraphInteger\" && className2 === \"FlowGraphInteger\";\n}\n/**\n * @experimental\n * Polymorphic add block.\n */\nexport class FlowGraphAddBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicAdd(a, b), FlowGraphAddBlock.ClassName, config);\n }\n _polymorphicAdd(a, b) {\n const aClassName = _getClassNameOf(a);\n const bClassName = _getClassNameOf(b);\n if (_areSameVectorClass(aClassName, bClassName) || _areSameMatrixClass(aClassName, bClassName) || _areSameIntegerClass(aClassName, bClassName)) {\n return a.add(b);\n }\n else {\n return a + b;\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAddBlock.ClassName = \"FGAddBlock\";\nRegisterClass(FlowGraphAddBlock.ClassName, FlowGraphAddBlock);\n/**\n * @experimental\n * Polymorphic add block.\n */\nexport class FlowGraphSubtractBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicAdd(a, b), FlowGraphSubtractBlock.ClassName, config);\n }\n _polymorphicAdd(a, b) {\n const aClassName = _getClassNameOf(a);\n const bClassName = _getClassNameOf(b);\n if (_areSameVectorClass(aClassName, bClassName) || _areSameIntegerClass(aClassName, bClassName)) {\n return a.subtract(b);\n }\n else if (_areSameMatrixClass(aClassName, bClassName)) {\n return a.add(b.scale(-1));\n }\n else {\n return a - b;\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSubtractBlock.ClassName = \"FGSubBlock\";\nRegisterClass(FlowGraphSubtractBlock.ClassName, FlowGraphSubtractBlock);\n/**\n * @experimental\n * Polymorphic multiply block.\n * In case of matrix, it is a component wise multiplication.\n */\nexport class FlowGraphMultiplyBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicMultiply(a, b), FlowGraphMultiplyBlock.ClassName, config);\n }\n _polymorphicMultiply(a, b) {\n const aClassName = _getClassNameOf(a);\n const bClassName = _getClassNameOf(b);\n if (_areSameVectorClass(aClassName, bClassName) || _areSameIntegerClass(aClassName, bClassName)) {\n return a.multiply(b);\n }\n else if (_areSameMatrixClass(aClassName, bClassName)) {\n return Matrix.FromValues(a.m[0] * b.m[0], a.m[4] * b.m[4], a.m[8] * b.m[8], a.m[12] * b.m[12], a.m[1] * b.m[1], a.m[5] * b.m[5], a.m[9] * b.m[9], a.m[13] * b.m[13], a.m[2] * b.m[2], a.m[6] * b.m[6], a.m[10] * b.m[10], a.m[14] * b.m[14], a.m[3] * b.m[3], a.m[7] * b.m[7], a.m[11] * b.m[11], a.m[15] * b.m[15]);\n }\n else {\n return a * b;\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphMultiplyBlock.ClassName = \"FGMultiplyBlock\";\nRegisterClass(FlowGraphMultiplyBlock.ClassName, FlowGraphMultiplyBlock);\n/**\n * @experimental\n * Polymorphic division block.\n */\nexport class FlowGraphDivideBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicDivide(a, b), FlowGraphDivideBlock.ClassName, config);\n }\n _polymorphicDivide(a, b) {\n const aClassName = _getClassNameOf(a);\n const bClassName = _getClassNameOf(b);\n if (_areSameVectorClass(aClassName, bClassName) || _areSameIntegerClass(aClassName, bClassName)) {\n return a.divide(b);\n }\n else if (_areSameMatrixClass(aClassName, bClassName)) {\n return Matrix.FromValues(a.m[0] / b.m[0], a.m[4] / b.m[4], a.m[8] / b.m[8], a.m[12] / b.m[12], a.m[1] / b.m[1], a.m[5] / b.m[5], a.m[9] / b.m[9], a.m[13] / b.m[13], a.m[2] / b.m[2], a.m[6] / b.m[6], a.m[10] / b.m[10], a.m[14] / b.m[14], a.m[3] / b.m[3], a.m[7] / b.m[7], a.m[11] / b.m[11], a.m[15] / b.m[15]);\n }\n else {\n return a / b;\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphDivideBlock.ClassName = \"FGDivideBlock\";\nRegisterClass(FlowGraphDivideBlock.ClassName, FlowGraphDivideBlock);\n/**\n * @experimental\n * Random number between 0 and 1.\n */\nexport class FlowGraphRandomBlock extends FlowGraphConstantOperationBlock {\n constructor(config) {\n super(RichTypeNumber, () => Math.random(), FlowGraphRandomBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphRandomBlock.ClassName = \"FGRandomBlock\";\nRegisterClass(FlowGraphRandomBlock.ClassName, FlowGraphRandomBlock);\n/**\n * @experimental\n * Dot product block.\n */\nexport class FlowGraphDotBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeNumber, (a, b) => this._polymorphicDot(a, b), FlowGraphDotBlock.ClassName, config);\n }\n _polymorphicDot(a, b) {\n const className = _getClassNameOf(a);\n switch (className) {\n case \"Vector2\":\n return Vector2.Dot(a, b);\n case \"Vector3\":\n return Vector3.Dot(a, b);\n case \"Vector4\":\n return Vector4.Dot(a, b);\n default:\n throw new Error(`Cannot get dot product of ${a} and ${b}`);\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphDotBlock.ClassName = \"FGDotBlock\";\nRegisterClass(FlowGraphDotBlock.ClassName, FlowGraphDotBlock);\n/**\n * @experimental\n * E constant.\n */\nexport class FlowGraphEBlock extends FlowGraphConstantOperationBlock {\n constructor(config) {\n super(RichTypeNumber, () => Math.E, FlowGraphEBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphEBlock.ClassName = \"FGEBlock\";\nRegisterClass(FlowGraphEBlock.ClassName, FlowGraphEBlock);\n/**\n * @experimental\n * Pi constant.\n */\nexport class FlowGraphPiBlock extends FlowGraphConstantOperationBlock {\n constructor(config) {\n super(RichTypeNumber, () => Math.PI, FlowGraphPiBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphPiBlock.ClassName = \"FGPIBlock\";\nRegisterClass(FlowGraphPiBlock.ClassName, FlowGraphPiBlock);\n/**\n * @experimental\n * Positive inf constant.\n */\nexport class FlowGraphInfBlock extends FlowGraphConstantOperationBlock {\n constructor(config) {\n super(RichTypeNumber, () => Number.POSITIVE_INFINITY, FlowGraphInfBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphInfBlock.ClassName = \"FGInfBlock\";\nRegisterClass(FlowGraphInfBlock.ClassName, FlowGraphInfBlock);\n/**\n * @experimental\n * NaN constant.\n */\nexport class FlowGraphNaNBlock extends FlowGraphConstantOperationBlock {\n constructor(config) {\n super(RichTypeNumber, () => Number.NaN, FlowGraphNaNBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphNaNBlock.ClassName = \"FGNaNBlock\";\nRegisterClass(FlowGraphNaNBlock.ClassName, FlowGraphNaNBlock);\nfunction _componentWiseUnaryOperation(a, op) {\n const aClassName = _getClassNameOf(a);\n switch (aClassName) {\n case \"FlowGraphInteger\":\n return new FlowGraphInteger(op(a.value));\n case \"Vector2\":\n return new Vector2(op(a.x), op(a.y));\n case \"Vector3\":\n return new Vector3(op(a.x), op(a.y), op(a.z));\n case \"Vector4\":\n return new Vector4(op(a.x), op(a.y), op(a.z), op(a.w));\n case \"Matrix\":\n return Matrix.FromValues(op(a.m[0]), op(a.m[4]), op(a.m[8]), op(a.m[12]), op(a.m[1]), op(a.m[5]), op(a.m[9]), op(a.m[13]), op(a.m[2]), op(a.m[6]), op(a.m[10]), op(a.m[14]), op(a.m[3]), op(a.m[7]), op(a.m[11]), op(a.m[15]));\n default:\n return op(a);\n }\n}\n/**\n * @experimental\n * Absolute value block.\n */\nexport class FlowGraphAbsBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicAbs(a), FlowGraphAbsBlock.ClassName, config);\n }\n _polymorphicAbs(a) {\n return _componentWiseUnaryOperation(a, Math.abs);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAbsBlock.ClassName = \"FGAbsBlock\";\nRegisterClass(FlowGraphAbsBlock.ClassName, FlowGraphAbsBlock);\n/**\n * @experimental\n * Sign block.\n */\nexport class FlowGraphSignBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicSign(a), FlowGraphSignBlock.ClassName, config);\n }\n _polymorphicSign(a) {\n return _componentWiseUnaryOperation(a, Math.sign);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSignBlock.ClassName = \"FGSignBlock\";\nRegisterClass(FlowGraphSignBlock.ClassName, FlowGraphSignBlock);\n/**\n * @experimental\n * Truncation block.\n */\nexport class FlowGraphTruncBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicTrunc(a), FlowGraphTruncBlock.ClassName, config);\n }\n _polymorphicTrunc(a) {\n return _componentWiseUnaryOperation(a, Math.trunc);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphTruncBlock.ClassName = \"FGTruncBlock\";\nRegisterClass(FlowGraphTruncBlock.ClassName, FlowGraphTruncBlock);\n/**\n * @experimental\n * Floor block.\n */\nexport class FlowGraphFloorBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicFloor(a), FlowGraphFloorBlock.ClassName, config);\n }\n _polymorphicFloor(a) {\n return _componentWiseUnaryOperation(a, Math.floor);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphFloorBlock.ClassName = \"FGFloorBlock\";\nRegisterClass(FlowGraphFloorBlock.ClassName, FlowGraphFloorBlock);\n/**\n * @experimental\n * Ceiling block.\n */\nexport class FlowGraphCeilBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicCeiling(a), FlowGraphCeilBlock.ClassName, config);\n }\n _polymorphicCeiling(a) {\n return _componentWiseUnaryOperation(a, Math.ceil);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCeilBlock.ClassName = \"FGCeilBlock\";\nRegisterClass(FlowGraphCeilBlock.ClassName, FlowGraphCeilBlock);\n/**\n * @experimental\n * Fract block.\n */\nexport class FlowGraphFractBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicFract(a), FlowGraphFractBlock.ClassName, config);\n }\n _polymorphicFract(a) {\n return _componentWiseUnaryOperation(a, (a) => a - Math.floor(a));\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphFractBlock.ClassName = \"FGFractBlock\";\nRegisterClass(FlowGraphFractBlock.ClassName, FlowGraphFractBlock);\n/**\n * @experimental\n * Negation block.\n */\nexport class FlowGraphNegBlock extends FlowGraphUnaryOperationBlock {\n /**\n * construct a new negation block.\n * @param config optional configuration\n */\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicNeg(a), FlowGraphNegBlock.ClassName, config);\n }\n _polymorphicNeg(a) {\n return _componentWiseUnaryOperation(a, (a) => -a);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphNegBlock.ClassName = \"FGNegBlock\";\nRegisterClass(FlowGraphNegBlock.ClassName, FlowGraphNegBlock);\nfunction _componentWiseBinaryOperation(a, b, op) {\n const aClassName = _getClassNameOf(a);\n switch (aClassName) {\n case \"FlowGraphInteger\":\n return new FlowGraphInteger(op(a.value, b.value));\n case \"Vector2\":\n return new Vector2(op(a.x, b.x), op(a.y, b.y));\n case \"Vector3\":\n return new Vector3(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z));\n case \"Vector4\":\n return new Vector4(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z), op(a.w, b.w));\n case \"Matrix\":\n return Matrix.FromValues(op(a.m[0], b.m[0]), op(a.m[4], b.m[4]), op(a.m[8], b.m[8]), op(a.m[12], b.m[12]), op(a.m[1], b.m[1]), op(a.m[5], b.m[5]), op(a.m[9], b.m[9]), op(a.m[13], b.m[13]), op(a.m[2], b.m[2]), op(a.m[6], b.m[6]), op(a.m[10], b.m[10]), op(a.m[14], b.m[14]), op(a.m[3], b.m[3]), op(a.m[7], b.m[7]), op(a.m[11], b.m[11]), op(a.m[15], b.m[15]));\n default:\n return op(a, b);\n }\n}\n/**\n * @experimental\n * Remainder block.\n */\nexport class FlowGraphRemainderBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicRemainder(a, b), FlowGraphRemainderBlock.ClassName, config);\n }\n _polymorphicRemainder(a, b) {\n return _componentWiseBinaryOperation(a, b, (a, b) => a % b);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphRemainderBlock.ClassName = \"FGRemainderBlock\";\nRegisterClass(FlowGraphRemainderBlock.ClassName, FlowGraphRemainderBlock);\n/**\n * @experimental\n * Min block.\n */\nexport class FlowGraphMinBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicMin(a, b), FlowGraphMinBlock.ClassName, config);\n }\n _polymorphicMin(a, b) {\n return _componentWiseBinaryOperation(a, b, Math.min);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphMinBlock.ClassName = \"FGMinBlock\";\nRegisterClass(FlowGraphMinBlock.ClassName, FlowGraphMinBlock);\n/**\n * @experimental\n * Max block\n */\nexport class FlowGraphMaxBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicMax(a, b), FlowGraphMaxBlock.ClassName, config);\n }\n _polymorphicMax(a, b) {\n return _componentWiseBinaryOperation(a, b, Math.max);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphMaxBlock.ClassName = \"FGMaxBlock\";\nRegisterClass(FlowGraphMaxBlock.ClassName, FlowGraphMaxBlock);\nfunction _clamp(a, b, c) {\n return Math.min(Math.max(a, Math.min(b, c)), Math.max(b, c));\n}\nfunction _componentWiseTernaryOperation(a, b, c, op) {\n const aClassName = _getClassNameOf(a);\n switch (aClassName) {\n case \"FlowGraphInteger\":\n return new FlowGraphInteger(op(a.value, b.value, c.value));\n case \"Vector2\":\n return new Vector2(op(a.x, b.x, c.x), op(a.y, b.y, c.y));\n case \"Vector3\":\n return new Vector3(op(a.x, b.x, c.x), op(a.y, b.y, c.y), op(a.z, b.z, c.z));\n case \"Vector4\":\n return new Vector4(op(a.x, b.x, c.x), op(a.y, b.y, c.y), op(a.z, b.z, c.z), op(a.w, b.w, c.w));\n case \"Matrix\":\n return Matrix.FromValues(op(a.m[0], b.m[0], c.m[0]), op(a.m[4], b.m[4], c.m[4]), op(a.m[8], b.m[8], c.m[8]), op(a.m[12], b.m[12], c.m[12]), op(a.m[1], b.m[1], c.m[1]), op(a.m[5], b.m[5], c.m[5]), op(a.m[9], b.m[9], c.m[9]), op(a.m[13], b.m[13], c.m[13]), op(a.m[2], b.m[2], c.m[2]), op(a.m[6], b.m[6], c.m[6]), op(a.m[10], b.m[10], c.m[10]), op(a.m[14], b.m[14], c.m[14]), op(a.m[3], b.m[3], c.m[3]), op(a.m[7], b.m[7], c.m[7]), op(a.m[11], b.m[11], c.m[11]), op(a.m[15], b.m[15], c.m[15]));\n default:\n return op(a, b, c);\n }\n}\n/**\n * @experimental\n * Clamp block.\n */\nexport class FlowGraphClampBlock extends FlowGraphTernaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, RichTypeAny, (a, b, c) => this._polymorphicClamp(a, b, c), FlowGraphClampBlock.ClassName, config);\n }\n _polymorphicClamp(a, b, c) {\n return _componentWiseTernaryOperation(a, b, c, _clamp);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphClampBlock.ClassName = \"FGClampBlock\";\nRegisterClass(FlowGraphClampBlock.ClassName, FlowGraphClampBlock);\nfunction _saturate(a) {\n return Math.min(Math.max(a, 0), 1);\n}\n/**\n * @experimental\n * Saturate block.\n */\nexport class FlowGraphSaturateBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicSaturate(a), FlowGraphSaturateBlock.ClassName, config);\n }\n _polymorphicSaturate(a) {\n return _componentWiseUnaryOperation(a, _saturate);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSaturateBlock.ClassName = \"FGSaturateBlock\";\nRegisterClass(FlowGraphSaturateBlock.ClassName, FlowGraphSaturateBlock);\n/**\n * @experimental\n * Interpolate block.\n */\nexport class FlowGraphInterpolateBlock extends FlowGraphTernaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, RichTypeAny, (a, b, c) => this._polymorphicInterpolate(a, b, c), FlowGraphInterpolateBlock.ClassName, config);\n }\n _interpolate(a, b, c) {\n return (1 - c) * a + c * b;\n }\n _polymorphicInterpolate(a, b, c) {\n return _componentWiseTernaryOperation(a, b, c, this._interpolate);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphInterpolateBlock.ClassName = \"FGInterpolateBlock\";\nRegisterClass(FlowGraphInterpolateBlock.ClassName, FlowGraphInterpolateBlock);\n/**\n * @experimental\n * Equals block.\n */\nexport class FlowGraphEqBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeBoolean, (a, b) => this._polymorphicEq(a, b), FlowGraphEqBlock.ClassName, config);\n }\n _polymorphicEq(a, b) {\n const aClassName = _getClassNameOf(a);\n const bClassName = _getClassNameOf(b);\n if (_areSameVectorClass(aClassName, bClassName) || _areSameMatrixClass(aClassName, bClassName) || _areSameIntegerClass(aClassName, bClassName)) {\n return a.equals(b);\n }\n else {\n return a === b;\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphEqBlock.ClassName = \"FGEqBlock\";\nRegisterClass(FlowGraphEqBlock.ClassName, FlowGraphEqBlock);\nfunction _comparisonOperators(a, b, op) {\n const aClassName = _getClassNameOf(a);\n const bClassName = _getClassNameOf(b);\n if (aClassName === bClassName) {\n // float\n if (aClassName === \"\") {\n return op(a, b);\n }\n else if (aClassName === \"FlowGraphInteger\") {\n return op(a.value, b.value);\n }\n else {\n throw new Error(`Cannot compare ${a} and ${b}`);\n }\n }\n throw new Error(`${a} and ${b} are of different types.`);\n}\n/**\n * @experimental\n * Less than block.\n */\nexport class FlowGraphLessThanBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeBoolean, (a, b) => this._polymorphicLessThan(a, b), FlowGraphLessThanBlock.ClassName, config);\n }\n _polymorphicLessThan(a, b) {\n return _comparisonOperators(a, b, (a, b) => a < b);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphLessThanBlock.ClassName = \"FGLessThanBlock\";\nRegisterClass(FlowGraphLessThanBlock.ClassName, FlowGraphLessThanBlock);\n/**\n * @experimental\n * Less than or equal block.\n */\nexport class FlowGraphLessThanOrEqualBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeBoolean, (a, b) => this._polymorphicLessThanOrEqual(a, b), FlowGraphLessThanOrEqualBlock.ClassName, config);\n }\n _polymorphicLessThanOrEqual(a, b) {\n return _comparisonOperators(a, b, (a, b) => a <= b);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphLessThanOrEqualBlock.ClassName = \"FGLessThanOrEqualBlock\";\n/**\n * @experimental\n * Greater than block.\n */\nexport class FlowGraphGreaterThanBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeBoolean, (a, b) => this._polymorphicGreaterThan(a, b), FlowGraphGreaterThanBlock.ClassName, config);\n }\n _polymorphicGreaterThan(a, b) {\n return _comparisonOperators(a, b, (a, b) => a > b);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphGreaterThanBlock.ClassName = \"FGGreaterThanBlock\";\nRegisterClass(FlowGraphGreaterThanBlock.ClassName, FlowGraphGreaterThanBlock);\n/**\n * @experimental\n * Greater than or equal block.\n */\nexport class FlowGraphGreaterThanOrEqualBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeBoolean, (a, b) => this._polymorphicGreaterThanOrEqual(a, b), FlowGraphGreaterThanOrEqualBlock.ClassName, config);\n }\n _polymorphicGreaterThanOrEqual(a, b) {\n return _comparisonOperators(a, b, (a, b) => a >= b);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphGreaterThanOrEqualBlock.ClassName = \"FGGreaterThanOrEqualBlock\";\nRegisterClass(FlowGraphGreaterThanOrEqualBlock.ClassName, FlowGraphGreaterThanOrEqualBlock);\n/**\n * @experimental\n * Is NaN block.\n */\nexport class FlowGraphIsNanBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeBoolean, (a) => this._polymorphicIsNan(a), FlowGraphIsNanBlock.ClassName, config);\n }\n _polymorphicIsNan(a) {\n const aClassName = _getClassNameOf(a);\n if (aClassName === \"\") {\n return isNaN(a);\n }\n else if (aClassName === \"FlowGraphInteger\") {\n return isNaN(a.value);\n }\n else {\n throw new Error(`Cannot get NaN of ${a}`);\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphIsNanBlock.ClassName = \"FGIsNanBlock\";\nRegisterClass(FlowGraphIsNanBlock.ClassName, FlowGraphIsNanBlock);\n/**\n * @experimental\n * Is Inf block.\n */\nexport class FlowGraphIsInfBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeBoolean, (a) => this._polymorphicIsInf(a), FlowGraphIsInfBlock.ClassName, config);\n }\n _polymorphicIsInf(a) {\n const aClassName = _getClassNameOf(a);\n if (aClassName === \"\") {\n return !isFinite(a);\n }\n else if (aClassName === \"FlowGraphInteger\") {\n return !isFinite(a.value);\n }\n else {\n throw new Error(`Cannot get isInf of ${a}`);\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphIsInfBlock.ClassName = \"FGIsInfBlock\";\n/**\n * @experimental\n * Convert degrees to radians block.\n */\nexport class FlowGraphDegToRadBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicDegToRad(a), FlowGraphDegToRadBlock.ClassName, config);\n }\n _degToRad(a) {\n return (a * Math.PI) / 180;\n }\n _polymorphicDegToRad(a) {\n return _componentWiseUnaryOperation(a, this._degToRad);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphDegToRadBlock.ClassName = \"FGDegToRadBlock\";\nRegisterClass(FlowGraphDegToRadBlock.ClassName, FlowGraphDegToRadBlock);\n/**\n * @experimental\n * Convert radians to degrees block.\n */\nexport class FlowGraphRadToDegBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicRadToDeg(a), FlowGraphRadToDegBlock.ClassName, config);\n }\n _radToDeg(a) {\n return (a * 180) / Math.PI;\n }\n _polymorphicRadToDeg(a) {\n return _componentWiseUnaryOperation(a, this._radToDeg);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphRadToDegBlock.ClassName = \"FGRadToDegBlock\";\nRegisterClass(FlowGraphRadToDegBlock.ClassName, FlowGraphRadToDegBlock);\n/**\n * @experimental\n * Sin block.\n */\nexport class FlowGraphSinBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicSin(a), FlowGraphSinBlock.ClassName, config);\n }\n _polymorphicSin(a) {\n return _componentWiseUnaryOperation(a, Math.sin);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSinBlock.ClassName = \"FGSinBlock\";\nRegisterClass(FlowGraphSinBlock.ClassName, FlowGraphSinBlock);\n/**\n * @experimental\n * Cos block.\n */\nexport class FlowGraphCosBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicCos(a), FlowGraphCosBlock.ClassName, config);\n }\n _polymorphicCos(a) {\n return _componentWiseUnaryOperation(a, Math.cos);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCosBlock.ClassName = \"FGCosBlock\";\nRegisterClass(FlowGraphCosBlock.ClassName, FlowGraphCosBlock);\n/**\n * @experimental\n * Tan block.\n */\nexport class FlowGraphTanBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicTan(a), FlowGraphTanBlock.ClassName, config);\n }\n _polymorphicTan(a) {\n return _componentWiseUnaryOperation(a, Math.tan);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphTanBlock.ClassName = \"FGTanBlock\";\nRegisterClass(FlowGraphTanBlock.ClassName, FlowGraphTanBlock);\n/**\n * @experimental\n * Arcsin block.\n */\nexport class FlowGraphAsinBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicAsin(a), FlowGraphAsinBlock.ClassName, config);\n }\n _polymorphicAsin(a) {\n return _componentWiseUnaryOperation(a, Math.asin);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAsinBlock.ClassName = \"FGAsinBlock\";\nRegisterClass(FlowGraphAsinBlock.ClassName, FlowGraphAsinBlock);\n/**\n * @experimental\n * Arccos block.\n */\nexport class FlowGraphAcosBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicAcos(a), FlowGraphAcosBlock.ClassName, config);\n }\n _polymorphicAcos(a) {\n return _componentWiseUnaryOperation(a, Math.acos);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAcosBlock.ClassName = \"FGAcosBlock\";\nRegisterClass(FlowGraphAcosBlock.ClassName, FlowGraphAcosBlock);\n/**\n * @experimental\n * Arctan block.\n */\nexport class FlowGraphAtanBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicAtan(a), FlowGraphAtanBlock.ClassName, config);\n }\n _polymorphicAtan(a) {\n return _componentWiseUnaryOperation(a, Math.atan);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAtanBlock.ClassName = \"FGAtanBlock\";\nRegisterClass(FlowGraphAtanBlock.ClassName, FlowGraphAtanBlock);\n/**\n * @experimental\n * Arctan2 block.\n */\nexport class FlowGraphAtan2Block extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicAtan2(a, b), FlowGraphAtan2Block.ClassName, config);\n }\n _polymorphicAtan2(a, b) {\n return _componentWiseBinaryOperation(a, b, Math.atan2);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAtan2Block.ClassName = \"FGAtan2Block\";\nRegisterClass(FlowGraphAtan2Block.ClassName, FlowGraphAtan2Block);\n/**\n * @experimental\n * Hyperbolic sin block.\n */\nexport class FlowGraphSinhBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicSinh(a), FlowGraphSinhBlock.ClassName, config);\n }\n _polymorphicSinh(a) {\n return _componentWiseUnaryOperation(a, Math.sinh);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSinhBlock.ClassName = \"FGSinhBlock\";\nRegisterClass(FlowGraphSinhBlock.ClassName, FlowGraphSinhBlock);\n/**\n * @experimental\n * Hyperbolic cos block.\n */\nexport class FlowGraphCoshBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicCosh(a), FlowGraphCoshBlock.ClassName, config);\n }\n _polymorphicCosh(a) {\n return _componentWiseUnaryOperation(a, Math.cosh);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCoshBlock.ClassName = \"FGCoshBlock\";\nRegisterClass(FlowGraphCoshBlock.ClassName, FlowGraphCoshBlock);\n/**\n * @experimental\n * Hyperbolic tan block.\n */\nexport class FlowGraphTanhBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicTanh(a), FlowGraphTanhBlock.ClassName, config);\n }\n _polymorphicTanh(a) {\n return _componentWiseUnaryOperation(a, Math.tanh);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphTanhBlock.ClassName = \"FGTanhBlock\";\nRegisterClass(FlowGraphTanhBlock.ClassName, FlowGraphTanhBlock);\n/**\n * @experimental\n * Hyperbolic arcsin block.\n */\nexport class FlowGraphAsinhBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, (a) => this._polymorphicAsinh(a), FlowGraphAsinhBlock.ClassName, config);\n }\n _polymorphicAsinh(a) {\n return _componentWiseUnaryOperation(a, Math.asinh);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAsinhBlock.ClassName = \"FGAsinhBlock\";\nRegisterClass(FlowGraphAsinhBlock.ClassName, FlowGraphAsinhBlock);\n/**\n * @experimental\n * Hyperbolic arccos block.\n */\nexport class FlowGraphAcoshBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, (a) => this._polymorphicAcosh(a), FlowGraphAcoshBlock.ClassName, config);\n }\n _polymorphicAcosh(a) {\n return _componentWiseUnaryOperation(a, Math.acosh);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAcoshBlock.ClassName = \"FGAcoshBlock\";\nRegisterClass(FlowGraphAcoshBlock.ClassName, FlowGraphAcoshBlock);\n/**\n * @experimental\n * Hyperbolic arctan block.\n */\nexport class FlowGraphAtanhBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, (a) => this._polymorphicAtanh(a), FlowGraphAtanhBlock.ClassName, config);\n }\n _polymorphicAtanh(a) {\n return _componentWiseUnaryOperation(a, Math.atanh);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAtanhBlock.ClassName = \"FGAtanhBlock\";\nRegisterClass(FlowGraphAtanhBlock.ClassName, FlowGraphAtanhBlock);\n/**\n * @experimental\n * Exponential block.\n */\nexport class FlowGraphExpBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, (a) => this._polymorphicExp(a), FlowGraphExpBlock.ClassName, config);\n }\n _polymorphicExp(a) {\n return _componentWiseUnaryOperation(a, Math.exp);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphExpBlock.ClassName = \"FGExpBlock\";\nRegisterClass(FlowGraphExpBlock.ClassName, FlowGraphExpBlock);\n/**\n * @experimental\n * Logarithm block.\n */\nexport class FlowGraphLogBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, (a) => this._polymorphicLog(a), FlowGraphLogBlock.ClassName, config);\n }\n _polymorphicLog(a) {\n return _componentWiseUnaryOperation(a, Math.log);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphLogBlock.ClassName = \"FGLogBlock\";\nRegisterClass(FlowGraphLogBlock.ClassName, FlowGraphLogBlock);\n/**\n * @experimental\n * Base 2 logarithm block.\n */\nexport class FlowGraphLog2Block extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, (a) => this._polymorphicLog2(a), FlowGraphLog2Block.ClassName, config);\n }\n _polymorphicLog2(a) {\n return _componentWiseUnaryOperation(a, Math.log2);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphLog2Block.ClassName = \"FGLog2Block\";\nRegisterClass(FlowGraphLog2Block.ClassName, FlowGraphLog2Block);\n/**\n * @experimental\n * Base 10 logarithm block.\n */\nexport class FlowGraphLog10Block extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, (a) => this._polymorphicLog10(a), FlowGraphLog10Block.ClassName, config);\n }\n _polymorphicLog10(a) {\n return _componentWiseUnaryOperation(a, Math.log10);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphLog10Block.ClassName = \"FGLog10Block\";\nRegisterClass(FlowGraphLog10Block.ClassName, FlowGraphLog10Block);\n/**\n * @experimental\n * Square root block.\n */\nexport class FlowGraphSqrtBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, (a) => this._polymorphicSqrt(a), FlowGraphSqrtBlock.ClassName, config);\n }\n _polymorphicSqrt(a) {\n return _componentWiseUnaryOperation(a, Math.sqrt);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSqrtBlock.ClassName = \"FGSqrtBlock\";\nRegisterClass(FlowGraphSqrtBlock.ClassName, FlowGraphSqrtBlock);\n/**\n * @experimental\n * Cube root block.\n */\nexport class FlowGraphCubeRootBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, (a) => this._polymorphicCubeRoot(a), FlowGraphCubeRootBlock.ClassName, config);\n }\n _polymorphicCubeRoot(a) {\n return _componentWiseUnaryOperation(a, Math.cbrt);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCubeRootBlock.ClassName = \"FGCubeRootBlock\";\nRegisterClass(FlowGraphCubeRootBlock.ClassName, FlowGraphCubeRootBlock);\n/**\n * @experimental\n * Power block.\n */\nexport class FlowGraphPowBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, RichTypeNumber, (a, b) => this._polymorphicPow(a, b), FlowGraphPowBlock.ClassName, config);\n }\n _polymorphicPow(a, b) {\n return _componentWiseBinaryOperation(a, b, Math.pow);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphPowBlock.ClassName = \"FGPowBlock\";\nRegisterClass(FlowGraphPowBlock.ClassName, FlowGraphPowBlock);\n/**\n * @experimental\n * Vector length block.\n */\nexport class FlowGraphLengthBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, (a) => this._polymorphicLength(a), FlowGraphLengthBlock.ClassName, config);\n }\n _polymorphicLength(a) {\n const aClassName = _getClassNameOf(a);\n switch (aClassName) {\n case \"Vector2\":\n case \"Vector3\":\n case \"Vector4\":\n return a.length();\n default:\n throw new Error(`Cannot compute length of value ${a}`);\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphLengthBlock.ClassName = \"FGLengthBlock\";\nRegisterClass(FlowGraphLengthBlock.ClassName, FlowGraphLengthBlock);\n/**\n * @experimental\n * Vector normalize block.\n */\nexport class FlowGraphNormalizeBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicNormalize(a), FlowGraphNormalizeBlock.ClassName, config);\n }\n _polymorphicNormalize(a) {\n const aClassName = _getClassNameOf(a);\n switch (aClassName) {\n case \"Vector2\":\n case \"Vector3\":\n case \"Vector4\":\n return a.normalize();\n default:\n throw new Error(`Cannot normalize value ${a}`);\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphNormalizeBlock.ClassName = \"FGNormalizeBlock\";\nRegisterClass(FlowGraphNormalizeBlock.ClassName, FlowGraphNormalizeBlock);\n/**\n * @experimental\n * Cross product block.\n */\nexport class FlowGraphCrossBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeVector3, RichTypeVector3, RichTypeVector3, (a, b) => Vector3.Cross(a, b), FlowGraphCrossBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCrossBlock.ClassName = \"FGCrossBlock\";\nRegisterClass(FlowGraphCrossBlock.ClassName, FlowGraphCrossBlock);\n/**\n * @experimental\n * 2D rotation block.\n */\nexport class FlowGraphRotate2DBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeVector2, RichTypeNumber, RichTypeVector2, (a, b) => Vector2.Transform(a, Matrix.RotationZ(b)), FlowGraphRotate2DBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphRotate2DBlock.ClassName = \"FGRotate2DBlock\";\nRegisterClass(FlowGraphRotate2DBlock.ClassName, FlowGraphRotate2DBlock);\n/**\n * @experimental\n * 3D rotation block.\n */\nexport class FlowGraphRotate3DBlock extends FlowGraphTernaryOperationBlock {\n constructor(config) {\n super(RichTypeVector3, RichTypeVector3, RichTypeNumber, RichTypeVector3, (a, b, c) => Vector3.TransformCoordinates(a, Matrix.RotationAxis(b, c)), FlowGraphRotate3DBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphRotate3DBlock.ClassName = \"FGRotate3DBlock\";\nRegisterClass(FlowGraphRotate3DBlock.ClassName, FlowGraphRotate3DBlock);\n/**\n * @experimental\n * Transposes a matrix.\n */\nexport class FlowGraphTransposeBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeMatrix, RichTypeMatrix, (a) => Matrix.Transpose(a), FlowGraphTransposeBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphTransposeBlock.ClassName = \"FGTransposeBlock\";\nRegisterClass(FlowGraphTransposeBlock.ClassName, FlowGraphTransposeBlock);\n/**\n * @experimental\n * Gets the determinant of a matrix.\n */\nexport class FlowGraphDeterminantBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeMatrix, RichTypeNumber, (a) => a.determinant(), FlowGraphDeterminantBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphDeterminantBlock.ClassName = \"FGDeterminantBlock\";\nRegisterClass(FlowGraphDeterminantBlock.ClassName, FlowGraphDeterminantBlock);\n/**\n * @experimental\n * Inverts a matrix.\n */\nexport class FlowGraphInvertMatrixBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeMatrix, RichTypeMatrix, (a) => Matrix.Invert(a), FlowGraphInvertMatrixBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphInvertMatrixBlock.ClassName = \"FGInvertMatrixBlock\";\nRegisterClass(FlowGraphInvertMatrixBlock.ClassName, FlowGraphInvertMatrixBlock);\n/**\n * @experimental\n * Multiplies two matrices.\n */\nexport class FlowGraphMatMulBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeMatrix, RichTypeMatrix, RichTypeMatrix, (a, b) => b.multiply(a), FlowGraphMatMulBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphMatMulBlock.ClassName = \"FGMatMulBlock\";\nRegisterClass(FlowGraphMatMulBlock.ClassName, FlowGraphMatMulBlock);\n/**\n * @experimental\n * Bitwise NOT operation\n */\nexport class FlowGraphBitwiseNotBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a) => new FlowGraphInteger(~a.value), FlowGraphBitwiseNotBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphBitwiseNotBlock.ClassName = \"FGBitwiseNotBlock\";\nRegisterClass(FlowGraphBitwiseNotBlock.ClassName, FlowGraphBitwiseNotBlock);\n/**\n * @experimental\n * Bitwise AND operation\n */\nexport class FlowGraphBitwiseAndBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a, b) => new FlowGraphInteger(a.value & b.value), FlowGraphBitwiseAndBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphBitwiseAndBlock.ClassName = \"FGBitwiseAndBlock\";\nRegisterClass(FlowGraphBitwiseAndBlock.ClassName, FlowGraphBitwiseAndBlock);\n/**\n * @experimental\n * Bitwise OR operation\n */\nexport class FlowGraphBitwiseOrBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a, b) => new FlowGraphInteger(a.value | b.value), FlowGraphBitwiseOrBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphBitwiseOrBlock.ClassName = \"FGBitwiseOrBlock\";\nRegisterClass(FlowGraphBitwiseOrBlock.ClassName, FlowGraphBitwiseOrBlock);\n/**\n * @experimental\n * Bitwise XOR operation\n */\nexport class FlowGraphBitwiseXorBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a, b) => new FlowGraphInteger(a.value ^ b.value), FlowGraphBitwiseXorBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphBitwiseXorBlock.ClassName = \"FGBitwiseXorBlock\";\nRegisterClass(FlowGraphBitwiseXorBlock.ClassName, FlowGraphBitwiseXorBlock);\n/**\n * @experimental\n * Bitwise left shift operation\n */\nexport class FlowGraphBitwiseLeftShiftBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a, b) => new FlowGraphInteger(a.value << b.value), FlowGraphBitwiseLeftShiftBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphBitwiseLeftShiftBlock.ClassName = \"FGBitwiseLeftShiftBlock\";\nRegisterClass(FlowGraphBitwiseLeftShiftBlock.ClassName, FlowGraphBitwiseLeftShiftBlock);\n/**\n * @experimental\n * Bitwise right shift operation\n */\nexport class FlowGraphBitwiseRightShiftBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a, b) => new FlowGraphInteger(a.value >> b.value), FlowGraphBitwiseRightShiftBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphBitwiseRightShiftBlock.ClassName = \"FGBitwiseRightShiftBlock\";\nRegisterClass(FlowGraphBitwiseRightShiftBlock.ClassName, FlowGraphBitwiseRightShiftBlock);\n/**\n * @experimental\n * Count leading zeros operation\n */\nexport class FlowGraphCountLeadingZerosBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a) => new FlowGraphInteger(Math.clz32(a.value)), FlowGraphCountLeadingZerosBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCountLeadingZerosBlock.ClassName = \"FGCountLeadingZerosBlock\";\nRegisterClass(FlowGraphCountLeadingZerosBlock.ClassName, FlowGraphCountLeadingZerosBlock);\n/**\n * @experimental\n * Count trailing zeros operation\n */\nexport class FlowGraphCountTrailingZerosBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a) => new FlowGraphInteger(a.value ? 31 - Math.clz32(a.value & -a.value) : 32), FlowGraphCountTrailingZerosBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCountTrailingZerosBlock.ClassName = \"FGCountTrailingZerosBlock\";\nRegisterClass(FlowGraphCountTrailingZerosBlock.ClassName, FlowGraphCountTrailingZerosBlock);\n/**\n * Given a number (which is converted to a 32-bit integer), return the\n * number of bits set to one on that number.\n * @internal\n * @param n\n */\nfunction _countOnes(n) {\n let result = 0;\n while (n) {\n // This zeroes out all bits except for the least significant one.\n // So if the bit is set, it will be 1, otherwise it will be 0.\n result += n & 1;\n // This shifts n's bits to the right by one\n n >>= 1;\n }\n return result;\n}\n/**\n * @experimental\n * Count one bits operation\n */\nexport class FlowGraphCountOneBitsBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a) => new FlowGraphInteger(_countOnes(a.value)), FlowGraphCountOneBitsBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCountOneBitsBlock.ClassName = \"FGCountOneBitsBlock\";\nRegisterClass(FlowGraphCountOneBitsBlock.ClassName, FlowGraphCountOneBitsBlock);\n"],"mappings":"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AEqB,EAAE,CAACnC,CAAC,CAACc,CAAC,CAAC,CAAC,CAAC,EAAEb,CAAC,CAACa,CAAC,CAAC,CAAC,CAAC,EAAEwD,CAAC,CAACxD,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEqB,EAAE,CAACnC,CAAC,CAACc,CAAC,CAAC,CAAC,CAAC,EAAEb,CAAC,CAACa,CAAC,CAAC,CAAC,CAAC,EAAEwD,CAAC,CAACxD,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEqB,EAAE,CAACnC,CAAC,CAACc,CAAC,CAAC,EAAE,CAAC,EAAEb,CAAC,CAACa,CAAC,CAAC,EAAE,CAAC,EAAEwD,CAAC,CAACxD,CAAC,CAAC,EAAE,CAAC,CAAC,EAAEqB,EAAE,CAACnC,CAAC,CAACc,CAAC,CAAC,CAAC,CAAC,EAAEb,CAAC,CAACa,CAAC,CAAC,CAAC,CAAC,EAAEwD,CAAC,CAACxD,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEqB,EAAE,CAACnC,CAAC,CAACc,CAAC,CAAC,CAAC,CAAC,EAAEb,CAAC,CAACa,CAAC,CAAC,CAAC,CAAC,EAAEwD,CAAC,CAACxD,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEqB,EAAE,CAACnC,CAAC,CAACc,CAAC,CAAC,CAAC,CAAC,EAAEb,CAAC,CAACa,CAAC,CAAC,CAAC,CAAC,EAAEwD,CAAC,CAACxD,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEqB,EAAE,CAACnC,CAAC,CAACc,CAAC,CAAC,EAAE,CAAC,EAAEb,CAAC,CAACa,CAAC,CAAC,EAAE,CAAC,EAAEwD,CAAC,CAACxD,CAAC,CAAC,EAAE,CAAC,CAAC,EAAEqB,EAAE,CAACnC,CAAC,CAACc,CAAC,CAAC,CAAC,CAAC,EAAEb,CAAC,CAACa,CAAC,CAAC,CAAC,CAAC,EAAEwD,CAAC,CAACxD,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEqB,EAAE,CAACnC,CAAC,CAACc,CAAC,CAAC,CAAC,CAAC,EAAEb,CAAC,CAACa,CAAC,CAAC,CAAC,CAAC,EAAEwD,CAAC,CAACxD,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEqB,EAAE,CAACnC,CAAC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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|