76 lines
No EOL
4 KiB
JavaScript
76 lines
No EOL
4 KiB
JavaScript
// midiButton.js
|
|
//
|
|
// Created by Bruce Brown on 8/8/17.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
(function() {
|
|
function MidiButton() {
|
|
this.clicked = false
|
|
return;
|
|
}
|
|
|
|
var white = {red:255, green:255, blue:255};
|
|
var black = {red:0, green:0, blue:0};
|
|
var blue = {red:0, green:0, blue:255};
|
|
|
|
MidiButton.prototype = {
|
|
preload: function(entityID) {
|
|
this.entityID = entityID;
|
|
var properties = Entities.getEntityProperties(entityID, ['userData']),
|
|
userData = properties.userData && JSON.parse(properties.userData);
|
|
},
|
|
unload: function(entityID) {
|
|
},
|
|
receivedMidiEvent: function(entityID){
|
|
var properties = Entities.getEntityProperties(entityID, ['userData']);
|
|
userData = properties.userData && JSON.parse(properties.userData);
|
|
if(userData.midiEvent.type == 9 && userData.midiEvent.velocity != 0){
|
|
Entities.editEntity(entityID, { color: blue});
|
|
} else {
|
|
Entities.editEntity(entityID, { color: {red: userData.color.red, green: userData.color.green, blue: userData.color.blue}});
|
|
}
|
|
},
|
|
enterEntity: function(entityID){
|
|
var properties = Entities.getEntityProperties(entityID, ['userData']),
|
|
userData = properties.userData && JSON.parse(properties.userData);
|
|
Entities.editEntity(entityID, { color: blue});
|
|
Midi.sendMidiMessage(userData.midiEvent.device, userData.midiEvent.channel, 9, userData.midiEvent.note, 50);
|
|
},
|
|
leaveEntity: function(entityID){
|
|
var properties = Entities.getEntityProperties(entityID, ['userData']),
|
|
userData = properties.userData && JSON.parse(properties.userData);
|
|
Entities.editEntity(entityID, { color: {red: userData.color.red, green: userData.color.green, blue: userData.color.blue}});
|
|
Midi.sendMidiMessage(userData.midiEvent.device, userData.midiEvent.channel, 8, userData.midiEvent.note, 50);
|
|
},
|
|
hoverEnterEntity: function(entityID){
|
|
var properties = Entities.getEntityProperties(entityID, ['userData']),
|
|
userData = properties.userData && JSON.parse(properties.userData);
|
|
Entities.editEntity(entityID, { color: blue});
|
|
Midi.sendMidiMessage(userData.midiEvent.device, userData.midiEvent.channel, 9, userData.midiEvent.note, 50);
|
|
},
|
|
hoverLeaveEntity: function(entityID){
|
|
var properties = Entities.getEntityProperties(entityID, ['userData']),
|
|
userData = properties.userData && JSON.parse(properties.userData);
|
|
Entities.editEntity(entityID, { color: {red: userData.color.red, green: userData.color.green, blue: userData.color.blue}});
|
|
Midi.sendMidiMessage(userData.midiEvent.device, userData.midiEvent.channel, 8, userData.midiEvent.note, 50);
|
|
},
|
|
clickDownOnEntity: function(entityID, mouseEvent) {
|
|
var properties = Entities.getEntityProperties(entityID, ['userData']),
|
|
userData = properties.userData && JSON.parse(properties.userData);
|
|
Entities.editEntity(entityID, { color: blue});
|
|
this.clicked = false;
|
|
Midi.sendMidiMessage(userData.midiEvent.device, userData.midiEvent.channel, 9, userData.midiEvent.note, 50);
|
|
},
|
|
clickReleaseOnEntity: function(entityID, mouseEvent) {
|
|
var properties = Entities.getEntityProperties(entityID, ['userData']),
|
|
userData = properties.userData && JSON.parse(properties.userData);
|
|
Entities.editEntity(entityID, { color: {red: userData.color.red, green: userData.color.green, blue: userData.color.blue}});
|
|
this.clicked = false;
|
|
Midi.sendMidiMessage(userData.midiEvent.device, userData.midiEvent.channel, 8, userData.midiEvent.note, 50);
|
|
}
|
|
};
|
|
return new MidiButton();
|
|
}); |