Improve Get Mouse Movement node

This commit is contained in:
Moritz Brückner 2020-11-26 10:00:35 +01:00
parent 2ca088fb85
commit 0acadd2e74
2 changed files with 18 additions and 16 deletions

View file

@ -1,29 +1,28 @@
package armory.logicnode;
import iron.math.Vec4;
import kha.FastFloat;
class GetMouseMovementNode extends LogicNode {
var coords = new Vec4();
public function new(tree: LogicTree) {
super(tree);
}
override function get(from: Int): Dynamic {
var mouse = iron.system.Input.getMouse();
var multX: Float = inputs[0].get();
var multY: Float = inputs[1].get();
var multDelta: Float = inputs[2].get();
var multX: FastFloat = inputs[0].get();
var multY: FastFloat = inputs[1].get();
var multWheelDelta: FastFloat = inputs[2].get();
return switch (from) {
case 0: mouse.movementX;
case 1: mouse.movementY;
case 2: mouse.wheelDelta;
case 3: mouse.movementX * multX;
case 4: mouse.movementY * multY;
case 5: mouse.wheelDelta * multDelta;
default: null;
case 2: mouse.movementX * multX;
case 3: mouse.movementY * multY;
case 4: mouse.wheelDelta;
case 5: mouse.wheelDelta * multWheelDelta;
default: 0;
}
}
}

View file

@ -1,7 +1,9 @@
from arm.logicnode.arm_nodes import *
class GetMouseMovementNode(ArmLogicTreeNode):
"""Returns the movement coordinates of the mouse."""
"""Get the movement coordinates of the mouse and the mouse wheel delta.
The multiplied output variants default to -1 to invert the values."""
bl_idname = 'LNGetMouseMovementNode'
bl_label = 'Get Mouse Movement'
arm_section = 'mouse'
@ -9,13 +11,14 @@ class GetMouseMovementNode(ArmLogicTreeNode):
def init(self, context):
super(GetMouseMovementNode, self).init(context)
self.add_input('NodeSocketFloat', 'X Multiplier' , default_value=-1.0)
self.add_input('NodeSocketFloat', 'X Multiplier', default_value=-1.0)
self.add_input('NodeSocketFloat', 'Y Multiplier', default_value=-1.0)
self.add_input('NodeSocketFloat', 'Delta Multiplier', default_value=-1.0)
self.add_input('NodeSocketFloat', 'Wheel Delta Multiplier', default_value=-1.0)
self.add_output('NodeSocketFloat', 'X')
self.add_output('NodeSocketFloat', 'Y')
self.add_output('NodeSocketInt', 'Delta')
self.add_output('NodeSocketFloat', 'Multiplied X')
self.add_output('NodeSocketFloat', 'Multiplied Y')
self.add_output('NodeSocketFloat', 'Multiplied Delta')
self.add_output('NodeSocketInt', 'Wheel Delta')
self.add_output('NodeSocketFloat', 'Multiplied Wheel Delta')