Merge pull request #2024 from MoritzBrueckner/mouse-movement

Improve `Get Mouse Movement` node
This commit is contained in:
Lubos Lenco 2020-11-28 12:30:52 +01:00 committed by GitHub
commit 607c5e57cf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 16 deletions

View file

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

View file

@ -1,7 +1,9 @@
from arm.logicnode.arm_nodes import * from arm.logicnode.arm_nodes import *
class GetMouseMovementNode(ArmLogicTreeNode): 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_idname = 'LNGetMouseMovementNode'
bl_label = 'Get Mouse Movement' bl_label = 'Get Mouse Movement'
arm_section = 'mouse' arm_section = 'mouse'
@ -9,13 +11,14 @@ class GetMouseMovementNode(ArmLogicTreeNode):
def init(self, context): def init(self, context):
super(GetMouseMovementNode, self).init(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', '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', 'X')
self.add_output('NodeSocketFloat', 'Y') self.add_output('NodeSocketFloat', 'Y')
self.add_output('NodeSocketInt', 'Delta')
self.add_output('NodeSocketFloat', 'Multiplied X') self.add_output('NodeSocketFloat', 'Multiplied X')
self.add_output('NodeSocketFloat', 'Multiplied Y') 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')