forked from LeenkxTeam/LNXSDK
56 lines
1.4 KiB
Haxe
56 lines
1.4 KiB
Haxe
package leenkx.logicnode;
|
|
|
|
import iron.math.Mat4;
|
|
|
|
class TransformMathNode extends LogicNode {
|
|
|
|
public var property0: String;
|
|
var m = Mat4.identity();
|
|
|
|
public function new(tree: LogicTree) {
|
|
super(tree);
|
|
}
|
|
|
|
override function get(from: Int): Dynamic {
|
|
var m1: Mat4 = inputs[0].get();
|
|
var m2: Mat4 = inputs[1].get();
|
|
|
|
if (m1 == null || m2 == null) return null;
|
|
|
|
m.setFrom(m1);
|
|
transformMath(m, m2);
|
|
|
|
return m;
|
|
}
|
|
|
|
public static function transformMath(m1: Mat4, m2: Mat4) {
|
|
var a00 = m1._00; var a01 = m1._01; var a02 = m1._02;
|
|
var a10 = m1._10; var a11 = m1._11; var a12 = m1._12;
|
|
var a20 = m1._20; var a21 = m1._21; var a22 = m1._22;
|
|
|
|
var b0 = m2._00; var b1 = m2._10; var b2 = m2._20;
|
|
m1._00 = a00 * b0 + a01 * b1 + a02 * b2;
|
|
m1._10 = a10 * b0 + a11 * b1 + a12 * b2;
|
|
m1._20 = a20 * b0 + a21 * b1 + a22 * b2;
|
|
|
|
b0 = m2._01; b1 = m2._11; b2 = m2._21;
|
|
m1._01 = a00 * b0 + a01 * b1 + a02 * b2;
|
|
m1._11 = a10 * b0 + a11 * b1 + a12 * b2;
|
|
m1._21 = a20 * b0 + a21 * b1 + a22 * b2;
|
|
|
|
b0 = m2._02; b1 = m2._12; b2 = m2._22;
|
|
m1._02 = a00 * b0 + a01 * b1 + a02 * b2;
|
|
m1._12 = a10 * b0 + a11 * b1 + a12 * b2;
|
|
m1._22 = a20 * b0 + a21 * b1 + a22 * b2;
|
|
|
|
b0 = m2._03; b1 = m2._13; b2 = m2._23;
|
|
m1._03 = a00 * b0 + a01 * b1 + a02 * b2;
|
|
m1._13 = a10 * b0 + a11 * b1 + a12 * b2;
|
|
m1._23 = a20 * b0 + a21 * b1 + a22 * b2;
|
|
|
|
m1._30 += m2._30;
|
|
m1._31 += m2._31;
|
|
m1._32 += m2._32;
|
|
}
|
|
}
|