MathNode.hx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package arm.logicnode;
  2. import armory.logicnode.LogicNode;
  3. import armory.logicnode.LogicTree;
  4. import iron.math.Vec4;
  5. class MathNode extends LogicNode {
  6. public var property0:String;
  7. public var property1:String; // Clamp
  8. public function new(tree:LogicTree) {
  9. super(tree);
  10. }
  11. override function get(from:Int):Dynamic {
  12. var v1:Float = inputs[0].get();
  13. var v2:Float = inputs[1].get();
  14. var f = 0.0;
  15. switch (property0) {
  16. case "Add":
  17. f = v1 + v2;
  18. case "Multiply":
  19. f = v1 * v2;
  20. case "Sine":
  21. f = Math.sin(v1);
  22. case "Cosine":
  23. f = Math.cos(v1);
  24. case "Max":
  25. f = Math.max(v1, v2);
  26. case "Min":
  27. f = Math.min(v1, v2);
  28. case "Abs":
  29. f = Math.abs(v1);
  30. case "Subtract":
  31. f = v1 - v2;
  32. case "Divide":
  33. f = v1 / v2;
  34. case "Tangent":
  35. f = Math.tan(v1);
  36. case "Arcsine":
  37. f = Math.asin(v1);
  38. case "Arccosine":
  39. f = Math.acos(v1);
  40. case "Arctangent":
  41. f = Math.atan(v1);
  42. case "Power":
  43. f = Math.pow(v1, v2);
  44. case "Logarithm":
  45. f = Math.log(v1);
  46. case "Round":
  47. f = Math.round(v1);
  48. case "Less Than":
  49. f = v1 < v2 ? 1.0 : 0.0;
  50. case "Greater Than":
  51. f = v1 > v2 ? 1.0 : 0.0;
  52. case "Modulo":
  53. f = v1 % v2;
  54. }
  55. if (property1 == "true") f = f < 0.0 ? 0.0 : (f > 1.0 ? 1.0 : f);
  56. return f;
  57. }
  58. }