Spaces:
Running
Running
/** | |
* @author sunag / http://www.sunag.com.br/ | |
*/ | |
import { TempNode } from '../core/TempNode.js'; | |
function Math1Node( a, method ) { | |
TempNode.call( this ); | |
this.a = a; | |
this.method = method; | |
} | |
Math1Node.RAD = 'radians'; | |
Math1Node.DEG = 'degrees'; | |
Math1Node.EXP = 'exp'; | |
Math1Node.EXP2 = 'exp2'; | |
Math1Node.LOG = 'log'; | |
Math1Node.LOG2 = 'log2'; | |
Math1Node.SQRT = 'sqrt'; | |
Math1Node.INV_SQRT = 'inversesqrt'; | |
Math1Node.FLOOR = 'floor'; | |
Math1Node.CEIL = 'ceil'; | |
Math1Node.NORMALIZE = 'normalize'; | |
Math1Node.FRACT = 'fract'; | |
Math1Node.SATURATE = 'saturate'; | |
Math1Node.SIN = 'sin'; | |
Math1Node.COS = 'cos'; | |
Math1Node.TAN = 'tan'; | |
Math1Node.ASIN = 'asin'; | |
Math1Node.ACOS = 'acos'; | |
Math1Node.ARCTAN = 'atan'; | |
Math1Node.ABS = 'abs'; | |
Math1Node.SIGN = 'sign'; | |
Math1Node.LENGTH = 'length'; | |
Math1Node.NEGATE = 'negate'; | |
Math1Node.INVERT = 'invert'; | |
Math1Node.prototype = Object.create( TempNode.prototype ); | |
Math1Node.prototype.constructor = Math1Node; | |
Math1Node.prototype.nodeType = "Math1"; | |
Math1Node.prototype.getType = function ( builder ) { | |
switch ( this.method ) { | |
case Math1Node.LENGTH: | |
return 'f'; | |
} | |
return this.a.getType( builder ); | |
}; | |
Math1Node.prototype.generate = function ( builder, output ) { | |
var type = this.getType( builder ), | |
result = this.a.build( builder, type ); | |
switch ( this.method ) { | |
case Math1Node.NEGATE: | |
result = '( -' + result + ' )'; | |
break; | |
case Math1Node.INVERT: | |
result = '( 1.0 - ' + result + ' )'; | |
break; | |
default: | |
result = this.method + '( ' + result + ' )'; | |
break; | |
} | |
return builder.format( result, type, output ); | |
}; | |
Math1Node.prototype.copy = function ( source ) { | |
TempNode.prototype.copy.call( this, source ); | |
this.a = source.a; | |
this.method = source.method; | |
}; | |
Math1Node.prototype.toJSON = function ( meta ) { | |
var data = this.getJSONNode( meta ); | |
if ( ! data ) { | |
data = this.createJSONNode( meta ); | |
data.a = this.a.toJSON( meta ).uuid; | |
data.method = this.method; | |
} | |
return data; | |
}; | |
export { Math1Node }; | |