Merge pull request #1981 from knowledgenude/master

Add worldVecToOrientation method
This commit is contained in:
Lubos Lenco 2020-11-02 09:25:15 +01:00 committed by GitHub
commit 7ceb8746f8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 11 deletions

View file

@ -3,6 +3,8 @@ package armory.logicnode;
import iron.object.Object;
import iron.math.Vec4;
using armory.object.TransformExtension;
class VectorToObjectOrientationNode extends LogicNode {
public function new(tree: LogicTree) {
@ -12,18 +14,11 @@ class VectorToObjectOrientationNode extends LogicNode {
override function get(from: Int): Dynamic {
var object: Object = inputs[0].get();
var vecIn: Vec4 = inputs[1].get();
var vec: Vec4 = inputs[1].get();
if (object == null || vecIn == null) return null;
if (object == null || vec == null) return null;
var vecOut = new Vec4();
var right = object.transform.world.right().mult(vecIn.x);
var look = object.transform.world.look().mult(vecIn.y);
var up = object.transform.world.up().mult(vecIn.z);
vecOut.add(right).add(look).add(up);
return vecOut;
return object.transform.worldVecToOrientation(vec);
}
}

View file

@ -37,4 +37,12 @@ class TransformExtension {
public static inline function getLocalVecFromWorld(t: Transform, worldVec: Vec4): Vec4 {
return worldVec.clone().applymat4(Mat4.identity().getInverse(t.worldUnpack));
}
/**
* Returns the given world vector in transform orientation
* @param worldVec
* @return Vec4
**/
public static inline function worldVecToOrientation(t: Transform, worldVec: Vec4): Vec4 {
return t.right().mult(worldVec.x).add(t.look().mult(worldVec.y)).add(t.up().mult(worldVec.z));
}
}