Merge pull request #2061 from knowledgenude/master
Added World Vector to Local Space node
This commit is contained in:
commit
61986dfafd
28
Sources/armory/logicnode/WorldVectorToLocalSpaceNode.hx
Normal file
28
Sources/armory/logicnode/WorldVectorToLocalSpaceNode.hx
Normal 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;
|
||||
}
|
||||
}
|
|
@ -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')
|
||||
|
|
|
@ -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')
|
Loading…
Reference in a new issue