UNPKG

networked-aframe

Version:

A web framework for building multi-user virtual reality experiences.

66 lines (55 loc) 1.91 kB
/* global AFRAME, NAF */ AFRAME.registerComponent('networked-scene', { schema: { serverURL: {default: '/'}, app: {default: 'default'}, room: {default: 'default'}, connectOnLoad: {default: true}, onConnect: {default: 'onConnect'}, adapter: {default: 'wseasyrtc'}, // See https://github.com/networked-aframe/networked-aframe#adapters for list of adapters audio: {default: false}, // Only if adapter supports audio video: {default: false}, // Only if adapter supports video debug: {default: false}, }, init: function() { var el = this.el; this.connect = this.connect.bind(this); el.addEventListener('connect', this.connect); if (this.data.connectOnLoad) { el.emit('connect', null, false); } }, /** * Connect to signalling server and begin connecting to other clients */ connect: function () { NAF.log.setDebug(this.data.debug); NAF.log.write('Networked-Aframe Connecting...'); this.checkDeprecatedProperties(); this.setupNetworkAdapter(); if (this.hasOnConnectFunction()) { this.callOnConnect(); } return NAF.connection.connect(this.data.serverURL, this.data.app, this.data.room, this.data.audio, this.data.video); }, checkDeprecatedProperties: function() { // No current }, setupNetworkAdapter: function() { var adapterName = this.data.adapter; var adapter = NAF.adapters.make(adapterName); NAF.connection.setNetworkAdapter(adapter); this.el.emit('adapter-ready', adapter, false); }, hasOnConnectFunction: function() { return this.data.onConnect != '' && window[this.data.onConnect]; }, callOnConnect: function() { NAF.connection.onConnect(window[this.data.onConnect]); }, remove: function() { NAF.log.write('networked-scene disconnected'); this.el.removeEventListener('connect', this.connect); NAF.connection.disconnect(); } });