| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 | 
							- /*
 
- The MIT License (MIT)
 
- Copyright (c) 2014-2020 Nikolai Suslov and the Krestianstvo.org project contributors. (https://github.com/NikolaySuslov/livecodingspace/blob/master/LICENSE.md)
 
- */
 
- // VWF & OSC driver
 
- import {Fabric} from '/core/vwf/fabric.js';
 
- class OSCViewDriver extends Fabric {
 
-   constructor(module) {
 
-     console.log("OSCViewDriver constructor");
 
-     super(module, 'View');
 
-   }
 
-   factory() {
 
-     let _self_ = this;
 
- 	return this.load(this.module, 
 
- 		{
 
- 			initialize: function() {
 
- 				
 
- 				let self = this;
 
- 				this.fabric = _self_;
 
- 				this.osc = osc;
 
- 				this.portValue = '8081';
 
- 				this.hostValue = 'localhost';
 
- 				this.port = null;
 
- 	
 
- 				//window._osc = this.osc;
 
- 				window._OSCManager = this;
 
- 	
 
- 			},
 
- 	
 
- 			firedEvent: function (nodeID, eventName, eventParameters) {
 
- 			 
 
- 				let self = this;
 
- 					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 (self.getStatus() == 1) {
 
- 								self.port.send(eventParameters[0]);
 
- 								console.log('send: ' + eventParameters[0]);
 
- 							}
 
- 						}
 
- 					}
 
- 	
 
- 	
 
- 	
 
- 					}
 
- 				
 
- 			},
 
- 	
 
- 	
 
- 			/*
 
- 			 * Receives incoming messages
 
- 			 */
 
- 			calledMethod: function( nodeID, methodName, methodParameters, methodValue ) {
 
- 		
 
- 	
 
- 				let self = this;
 
- 				// 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() {
 
- 				let self = this;
 
- 				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);
 
- 						_self_.findAllNodesWithOSC(self, oscMessage);
 
- 					});
 
- 	
 
- 					this.port.open();
 
- 	
 
- 	
 
- 			},
 
- 	
 
- 			disconnect: function() {
 
- 				console.log('disconnect');
 
- 				if (this.port !== null)
 
- 					this.port.close(1000, 'manual close');
 
- 	
 
- 			},
 
- 	
 
- 			getStatus: function() {
 
- 				if (this.port){
 
- 				return this.port.socket.readyState
 
- 				} 
 
- 				return 3
 
- 			}
 
- 	
 
- 			
 
- 		});
 
- 	
 
- 	}
 
- 	findAllNodesWithOSC(view, oscMessage){
 
- 		let self = view;
 
- 		let kernel = self.kernel.kernel;
 
- 		let appID = kernel.application();
 
- 		var oscSceneProp = kernel.getProperty(appID, 'osc');
 
- 		if (oscSceneProp !== undefined){
 
- 			if (oscSceneProp){
 
- 				//console.log('now callMethod');
 
- 				vwf_view.kernel.callMethod(appID, 'getOSC', [oscMessage]);
 
- 			}
 
- 		}
 
- 		var children = kernel.children(appID);
 
- 			children.forEach(function(child){
 
- 				var oscprop = kernel.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);
 
-    //              }
 
-    //          }
 
- 	}
 
- }
 
- export { OSCViewDriver as default }
 
 
  |