/* The MIT License (MIT) Copyright (c) 2014-2018 Nikolai Suslov and the Krestianstvo.org project contributors. (https://github.com/NikolaySuslov/livecodingspace/blob/master/LICENSE.md) Virtual World Framework Apache 2.0 license (https://github.com/NikolaySuslov/livecodingspace/blob/master/licenses/LICENSE_VWF.md) */ // VWF & OSC driver define(["module", "vwf/view", "vwf/view/oscjs/dist/osc-module"], function(module, view, osc) { return view.load(module, { initialize: function() { self = this; this.osc = osc; this.portValue = '8081'; this.hostValue = 'localhost'; this.port = null; //window._osc = this.osc; window._OSCManager = this; }, firedEvent: function (nodeID, eventName, eventParameters) { if (eventName == 'sendOSC'){ var clientThatSatProperty = self.kernel.client(); var me = self.kernel.moniker(); // If the transform property was initially updated by this view.... if (clientThatSatProperty == me) { if (self.osc !== null) { if (this.getStatus() == 1) { self.port.send(eventParameters[0]); console.log('send: ' + eventParameters[0]); } } } } }, /* * Receives incoming messages */ calledMethod: function( nodeID, methodName, methodParameters, methodValue ) { // if (methodName == "sendOSC") { // if (self.osc !== null) { // if (this.getStatus() == 1) { // self.port.send(methodParameters[0]); // console.log('send: ' + methodParameters); // } // } // } if (methodName == "sendOSCBundle") { if (self.osc !== null) { if (this.getStatus() == 1) { self.port.send({ timeTag: self.osc.timeTag(1), // Schedules this bundle 60 seconds from now. packets: [methodParameters[0]] } ); console.log('send: ' + methodParameters[0]); } } //console.log("send OSC!!!"); } }, setOSCHostAndPort: function(h,p) { this.hostValue = h; this.portValue = p; }, connect: function() { this.disconnect(); var url = 'wss://' + this.hostValue + ':' + this.portValue; if (this.hostValue == 'localhost'){ url = 'ws://' + this.hostValue + ':' + this.portValue } this.port = new osc.WebSocketPort({ url: url //'wss://' + this.hostValue + ':' + this.portValue //url: "ws://localhost:8081" }); this.port.on("message", function (oscMessage) { console.log("message", oscMessage); findAllNodesWithOSC(oscMessage); }); this.port.open(); }, disconnect: function() { console.log('disconnect'); if (this.port !== null) this.port.close(1000, 'manual close'); }, getStatus: function() { if (self.port){ return self.port.socket.readyState } return 3 } }) function findAllNodesWithOSC(oscMessage){ let appID = vwf.application(); var oscSceneProp = vwf.getProperty(appID, 'osc'); if (oscSceneProp !== undefined){ if (oscSceneProp){ //console.log('now callMethod'); vwf_view.kernel.callMethod(appID, 'getOSC', [oscMessage]); } } var children = vwf.children(appID); children.forEach(function(child){ var oscprop = vwf.getProperty(child, 'osc'); if (oscprop !== undefined){ if (oscprop){ //console.log('now callMethod'); vwf_view.kernel.callMethod(child, 'getOSC', [oscMessage]); } } }) // var scene = _Editor.getNode(Engine.application()); // for (var i in scene.children) { // if (scene.children[i].properties.DisplayName.indexOf("leapmotion") > -1) { // this.leapHandsID = (scene.children[i].id); // } // } } });