node-red-contrib-leap-motion
Version:
Node-Red nodes for leap motion
43 lines (38 loc) • 1.45 kB
JavaScript
var Leap=require('leapjs');
var RED = require(process.env.NODE_RED_HOME+"/red/red");
module.exports = function (RED) {
function Constructor (config) {
RED.nodes.createNode(this, config);
var node = this;
var controller = Leap.loop({enableGestures: true}, function(frame){
if (frame.gestures.length > 0) {
for (var i = 0; i < frame.gestures.length; i++) {
var gesture = frame.gestures[i];
if(gesture.type == "swipe") {
//Classify swipe as either horizontal or vertical
var isHorizontal = Math.abs(gesture.direction[0]) > Math.abs(gesture.direction[1]);
//Classify as right-left or up-down
if(isHorizontal){
if(gesture.direction[0] > 0){
swipeDirection = "right";
node.send({payload:"swipright"});
} else {
swipeDirection = "left";
node.send({payload:"swipleft"});
}
} else { //vertical
if(gesture.direction[1] > 0){
swipeDirection = "up";
node.send({payload:"swipup"});
} else {
swipeDirection = "down";
node.send({payload:"swipdown"});
}
}
}
}
}
});
}
RED.nodes.registerType('swips', Constructor)
}