Merge pull request #2061 from knowledgenude/master

Added World Vector to Local Space node
This commit is contained in:
Lubos Lenco 2020-12-19 11:19:02 +01:00 committed by GitHub
commit 61986dfafd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 53 additions and 2 deletions

View file

@ -0,0 +1,28 @@
package armory.logicnode;
import iron.math.Vec4;
import iron.object.Object;
using armory.object.TransformExtension;
class WorldVectorToLocalSpaceNode extends LogicNode {
public function new(tree: LogicTree) {
super(tree);
}
override function get(from: Int): Vec4 {
var object: Object = inputs[0].get();
var worldVec: Vec4 = inputs[1].get();
if (object == null || worldVec == null) return null;
var localVec: Vec4 = new Vec4();
localVec.x = worldVec.dot(object.transform.right());
localVec.y = worldVec.dot(object.transform.look());
localVec.z = worldVec.dot(object.transform.up());
return localVec;
}
}

View file

@ -1,8 +1,10 @@
from arm.logicnode.arm_nodes import *
class VectorToObjectOrientationNode(ArmLogicTreeNode):
"""Converts the given world oriented vector to an object oriented vector. The object scale is taken in count.
"""Converts the given world vector to a vector oriented by the given object.
The object scale is taken in count.
@seeNode World Vector To Object Space
@seeNode Get World Orientation
@seeNode Vector From Transform
"""
@ -16,4 +18,4 @@ class VectorToObjectOrientationNode(ArmLogicTreeNode):
self.add_input('ArmNodeSocketObject', 'Object')
self.add_input('NodeSocketVector', 'World')
self.add_output('NodeSocketVector', 'Local')
self.add_output('NodeSocketVector', 'Oriented')

View file

@ -0,0 +1,21 @@
from arm.logicnode.arm_nodes import *
class WorldVectorToLocalSpaceNode(ArmLogicTreeNode):
"""Converts the given world vector to a object space vector.
The object scale is taken in count.
@seeNode Vector To Object Orientation
@seeNode Get World Orientation
@seeNode Vector From Transform
"""
bl_idname = 'LNWorldVectorToLocalSpaceNode'
bl_label = 'World Vector to Local Space'
arm_section = 'location'
arm_version = 1
def init(self, context):
super(WorldVectorToLocalSpaceNode, self).init(context)
self.add_input('ArmNodeSocketObject', 'Object')
self.add_input('NodeSocketVector', 'World')
self.add_output('NodeSocketVector', 'Local')