UNPKG

polygonjs-engine

Version:

node-based webgl 3D engine https://polygonjs.com

54 lines (50 loc) 2.49 kB
import {BaseNodeGlMathFunctionArg1GlNode} from './_BaseMathFunction'; interface MathArg1Options { in?: string; out?: string; method?: string; } function MathFunctionArg1Factory(type: string, options: MathArg1Options = {}) { const gl_method_name = options.method || type; const gl_output_name = options.out || 'val'; const gl_input_name = options.in || 'in'; return class Node extends BaseNodeGlMathFunctionArg1GlNode { static type() { return type; } initializeNode() { super.initializeNode(); this.io.connection_points.set_input_name_function(this._gl_input_name.bind(this)); this.io.connection_points.set_output_name_function(this._gl_output_name.bind(this)); } protected _gl_input_name(index: number): string { return gl_input_name; } protected _gl_output_name(index: number): string { return gl_output_name; } gl_method_name(): string { return gl_method_name; } }; } export class AbsGlNode extends MathFunctionArg1Factory('abs') {} export class AcosGlNode extends MathFunctionArg1Factory('acos', {out: 'radians'}) {} export class AsinGlNode extends MathFunctionArg1Factory('asin', {out: 'radians'}) {} export class AtanGlNode extends MathFunctionArg1Factory('atan', {out: 'radians'}) {} export class CeilGlNode extends MathFunctionArg1Factory('ceil') {} export class CosGlNode extends MathFunctionArg1Factory('cos', {in: 'radians'}) {} export class DegreesGlNode extends MathFunctionArg1Factory('degrees', {in: 'radians', out: 'degrees'}) {} export class ExpGlNode extends MathFunctionArg1Factory('exp') {} export class Exp2GlNode extends MathFunctionArg1Factory('exp2') {} export class FloorGlNode extends MathFunctionArg1Factory('floor') {} export class FractGlNode extends MathFunctionArg1Factory('fract') {} export class InverseSqrtGlNode extends MathFunctionArg1Factory('inverseSqrt', {method: 'inversesqrt'}) {} export class LogGlNode extends MathFunctionArg1Factory('log') {} export class Log2GlNode extends MathFunctionArg1Factory('log2') {} export class NormalizeGlNode extends MathFunctionArg1Factory('normalize', {out: 'normalized'}) {} export class RadiansGlNode extends MathFunctionArg1Factory('radians', {in: 'degrees', out: 'radians'}) {} export class SignGlNode extends MathFunctionArg1Factory('sign') {} export class SinGlNode extends MathFunctionArg1Factory('sin', {in: 'radians'}) {} export class SqrtGlNode extends MathFunctionArg1Factory('sqrt') {} export class TanGlNode extends MathFunctionArg1Factory('tan') {}