overte/script-archive/example/avatarcontrol/multipleCursorsExample.js
2016-04-26 11:18:22 -07:00

77 lines
No EOL
2.1 KiB
JavaScript

//
// multipleCursorsExample.js
// examples
//
// Created by Thijs Wenker on 7/23/14.
// Copyright 2014 High Fidelity, Inc.
//
// This is an example script that demonstrates use of multiple cursors
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
var cursors = {};
function Cursor(event) {
this.deviceID = event.deviceID;
this.held_buttons = {
LEFT: false,
MIDDLE: false,
RIGHT: false
}
this.updatePosition = function(event) {
this.x = event.x;
this.y = event.y;
};
this.pressEvent = function(event) {
if (this.held_buttons[event.button] != undefined) {
this.held_buttons[event.button] = true;
}
};
this.releaseEvent = function(event) {
if (this.held_buttons[event.button] != undefined) {
this.held_buttons[event.button] = false;
}
};
this.updatePosition(event);
}
function mousePressEvent(event) {
if (cursors[event.deviceID] == undefined) {
cursors[event.deviceID] = new Cursor(event);
}
cursors[event.deviceID].pressEvent(event);
}
function mouseReleaseEvent(event) {
if (cursors[event.deviceID] == undefined) {
cursors[event.deviceID] = new Cursor(event);
}
cursors[event.deviceID].releaseEvent(event);
}
function mouseMoveEvent(event) {
if (cursors[event.deviceID] == undefined) {
cursors[event.deviceID] = new Cursor(event);
} else {
cursors[event.deviceID].updatePosition(event);
}
}
var lastOutputString = "";
function checkCursors() {
if(lastOutputString != JSON.stringify(cursors)) {
lastOutputString = JSON.stringify(cursors);
// outputs json string of all cursors only when a change occured
print(lastOutputString);
}
}
Script.update.connect(checkCursors);
// Map the mouse events to our functions
Controller.mousePressEvent.connect(mousePressEvent);
Controller.mouseMoveEvent.connect(mouseMoveEvent);
Controller.mouseReleaseEvent.connect(mouseReleaseEvent);