49 lines
837 B
Haxe
49 lines
837 B
Haxe
package arm.logicnode;
|
|
|
|
import armory.logicnode.LogicNode;
|
|
import armory.logicnode.LogicTree;
|
|
import iron.math.Vec4;
|
|
|
|
@:keep
|
|
class VectorMathNode extends LogicNode {
|
|
|
|
public var property0:String;
|
|
var v = new Vec4();
|
|
|
|
public function new(tree:LogicTree) {
|
|
super(tree);
|
|
}
|
|
|
|
override function get(from:Int):Dynamic {
|
|
var v1:Vec4 = inputs[0].get();
|
|
var v2:Vec4 = inputs[1].get();
|
|
v.setFrom(v1);
|
|
var f = 0.0;
|
|
switch (property0) {
|
|
case "Add":
|
|
v.add(v2);
|
|
case "Subtract":
|
|
v.sub(v2);
|
|
case "Average":
|
|
v.add(v2);
|
|
v.x *= 0.5;
|
|
v.y *= 0.5;
|
|
v.z *= 0.5;
|
|
case "Dot Product":
|
|
f = v.dot(v2);
|
|
v.set(f, f, f);
|
|
case "Cross Product":
|
|
v.cross(v2);
|
|
case "Normalize":
|
|
v.normalize();
|
|
case "Multiply":
|
|
v.x *= v2.x;
|
|
v.y *= v2.y;
|
|
v.z *= v2.z;
|
|
}
|
|
|
|
if (from == 0) return v;
|
|
else return f;
|
|
}
|
|
}
|