2017-03-21 03:06:38 +01:00
|
|
|
package armory.logicnode;
|
|
|
|
|
2017-04-08 20:05:35 +02:00
|
|
|
class MathNode extends LogicNode {
|
2017-03-21 03:06:38 +01:00
|
|
|
|
|
|
|
public var property0:String;
|
2017-10-18 11:28:04 +02:00
|
|
|
public var property1:String; // Clamp
|
2017-03-21 03:06:38 +01:00
|
|
|
|
2017-04-04 23:11:31 +02:00
|
|
|
public function new(tree:LogicTree) {
|
|
|
|
super(tree);
|
2017-03-21 03:06:38 +01:00
|
|
|
}
|
|
|
|
|
2017-04-03 22:29:46 +02:00
|
|
|
override function get(from:Int):Dynamic {
|
2017-10-18 11:28:04 +02:00
|
|
|
|
2017-04-08 00:34:45 +02:00
|
|
|
var v1:Float = inputs[0].get();
|
|
|
|
var v2:Float = inputs[1].get();
|
2017-10-18 11:28:04 +02:00
|
|
|
var f = 0.0;
|
2017-03-21 03:06:38 +01:00
|
|
|
switch (property0) {
|
|
|
|
case "Add":
|
2017-10-18 11:28:04 +02:00
|
|
|
f = v1 + v2;
|
2017-03-21 03:06:38 +01:00
|
|
|
case "Multiply":
|
2017-10-18 11:28:04 +02:00
|
|
|
f = v1 * v2;
|
2017-03-21 03:06:38 +01:00
|
|
|
case "Sine":
|
2017-10-18 11:28:04 +02:00
|
|
|
f = Math.sin(v1);
|
2017-03-21 03:06:38 +01:00
|
|
|
case "Cosine":
|
2017-10-18 11:28:04 +02:00
|
|
|
f = Math.cos(v1);
|
2017-04-14 20:38:50 +02:00
|
|
|
case "Max":
|
2017-10-18 11:28:04 +02:00
|
|
|
f = Math.max(v1, v2);
|
2017-04-14 20:38:50 +02:00
|
|
|
case "Min":
|
2017-10-18 11:28:04 +02:00
|
|
|
f = Math.min(v1, v2);
|
2017-04-14 20:38:50 +02:00
|
|
|
case "Abs":
|
2017-10-18 11:28:04 +02:00
|
|
|
f = Math.abs(v1);
|
|
|
|
case "Subtract":
|
|
|
|
f = v1 - v2;
|
|
|
|
case "Divide":
|
|
|
|
f = v1 / v2;
|
|
|
|
case "Tangent":
|
|
|
|
f = Math.tan(v1);
|
|
|
|
case "Arcsine":
|
|
|
|
f = Math.asin(v1);
|
|
|
|
case "Arccosine":
|
|
|
|
f = Math.acos(v1);
|
|
|
|
case "Arctangent":
|
|
|
|
f = Math.atan(v1);
|
|
|
|
case "Power":
|
|
|
|
f = Math.pow(v1, v2);
|
|
|
|
case "Logarithm":
|
|
|
|
f = Math.log(v1);
|
|
|
|
case "Round":
|
|
|
|
f = Math.round(v1);
|
|
|
|
case "Less Than":
|
|
|
|
f = v1 < v2 ? 1.0 : 0.0;
|
|
|
|
case "Greater Than":
|
|
|
|
f = v1 > v2 ? 1.0 : 0.0;
|
|
|
|
case "Modulo":
|
|
|
|
f = v1 % v2;
|
2018-08-15 19:11:47 +02:00
|
|
|
case "Arctan2":
|
|
|
|
f = Math.atan2(v1, v2);
|
|
|
|
case "Floor":
|
|
|
|
f = Math.floor(v1);
|
|
|
|
case "Ceil":
|
|
|
|
f = Math.ceil(v1);
|
|
|
|
case "Fract":
|
|
|
|
f = iron.math.Math.fract(v1);
|
|
|
|
case "Square Root":
|
|
|
|
f = Math.sqrt(v1);
|
2017-03-21 03:06:38 +01:00
|
|
|
}
|
2017-10-18 11:28:04 +02:00
|
|
|
|
|
|
|
if (property1 == "true") f = f < 0.0 ? 0.0 : (f > 1.0 ? 1.0 : f);
|
|
|
|
|
|
|
|
return f;
|
2017-03-21 03:06:38 +01:00
|
|
|
}
|
|
|
|
}
|