NodeOperator.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /**
  2. * @author sunag / http://www.sunag.com.br/
  3. */
  4. THREE.NodeOperator = function( a, b, op ) {
  5. THREE.NodeTemp.call( this );
  6. this.op = op || THREE.NodeOperator.ADD;
  7. this.a = a;
  8. this.b = b;
  9. };
  10. THREE.NodeOperator.prototype = Object.create( THREE.NodeTemp.prototype );
  11. THREE.NodeOperator.prototype.constructor = THREE.NodeOperator;
  12. THREE.NodeOperator.ADD = '+';
  13. THREE.NodeOperator.SUB = '-';
  14. THREE.NodeOperator.MUL = '*';
  15. THREE.NodeOperator.DIV = '/';
  16. THREE.NodeOperator.prototype.getType = function( builder ) {
  17. // use the greater length vector
  18. if (builder.getFormatLength( this.b.getType( builder ) ) > builder.getFormatLength( this.a.getType( builder ) )) {
  19. return this.b.getType( builder );
  20. }
  21. return this.a.getType( builder );
  22. };
  23. THREE.NodeOperator.prototype.generate = function( builder, output ) {
  24. var material = builder.material;
  25. var data = material.getNodeData( this.uuid );
  26. var a = this.a.build( builder, output );
  27. var b = this.b.build( builder, output );
  28. return '(' + a + this.op + b + ')';
  29. };