diff --git a/public/index.html b/public/index.html index 6f23a9b0e66ddb637564801e81d092255a482545..1bed1fd36cd86b9e5d470f5276835f122c636516 100644 --- a/public/index.html +++ b/public/index.html @@ -9,7 +9,7 @@ </head> <body> - <a-scene networked-scene="adapter: easyrtc; audio: false; debug: true;"> + <a-scene networked-scene="adapter: easyrtc; audio: true; debug: true;"> <a-assets> <img id="grid" src="assets/grid.png" crossorigin="anonymous"> <img id="sky" src="https://cdn.aframe.io/360-image-gallery-boilerplate/img/sechelt.jpg" crossorigin="anonymous" /> diff --git a/src/components/mute-mic.js b/src/components/mute-mic.js new file mode 100644 index 0000000000000000000000000000000000000000..6469c50cc9464625c7173c02ec3ab0ab0aa873a6 --- /dev/null +++ b/src/components/mute-mic.js @@ -0,0 +1,53 @@ +AFRAME.registerComponent("mute-mic", { + schema: { + eventSrc: { type: "selectorAll" }, + toggleEvent: { type: "string" }, + muteEvent: { type: "string" }, + unmuteEvent: { type: "string" } + }, + init: function() { + var eventSrcElements = this.data.eventSrc || [this.el]; + + this.onToggle = this.onToggle.bind(this); + this.onMute = this.onMute.bind(this); + this.onUnmute = this.onUnmute.bind(this); + + for (var el of eventSrcElements) { + if (this.data.toggleEvent !== "") { + el.addEventListener(this.data.toggleEvent, this.onToggle, false); + } + + if (this.data.muteEvent !== "") { + el.addEventListener(this.data.muteEvent, this.onMute, false); + } + + if (this.data.unmuteEvent !== "") { + el.addEventListener(this.data.unmuteEvent, this.onUnmute, false); + } + } + }, + + onToggle: function () { + if (this.el.is('muted')) { + NAF.connection.adapter.enableMicrophone(true); + this.el.removeState('muted'); + } else { + NAF.connection.adapter.enableMicrophone(false); + this.el.addState('muted'); + } + }, + + onMute: function () { + if (!this.el.is('muted')) { + NAF.connection.adapter.enableMicrophone(false); + this.el.addState('muted'); + } + }, + + onUnmute: function () { + if (this.el.is('muted')) { + NAF.connection.adapter.enableMicrophone(true); + this.el.removeState('muted'); + } + } +}); diff --git a/src/index.js b/src/index.js index 85a49209aa9b82aa5ba6cbf2b2366d9e119367ba..cebcf963fadfa7ac771425cca0b5527fade47827 100644 --- a/src/index.js +++ b/src/index.js @@ -4,3 +4,4 @@ require("aframe-teleport-controls"); // require("./components/rig-selector"); require("./components/axis-dpad"); require("./components/snap-rotation"); +require("./components/mute-mic"); diff --git a/yarn.lock b/yarn.lock index 4ecf6ca35c21ac2d552cec5526b64019494fbf76..ffa5f004f4fa20d8a99d41200c3c25fbdd37d3f7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1008,8 +1008,8 @@ express@^4.10.7: vary "~1.1.1" express@^4.15.5: - version "4.16.0" - resolved "https://registry.yarnpkg.com/express/-/express-4.16.0.tgz#b519638e4eb58e7178c81b498ef22f798cb2e255" + version "4.16.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.1.tgz#6b33b560183c9b253b7b62144df33a4654ac9ed0" dependencies: accepts "~1.3.4" array-flatten "1.1.1" @@ -1034,8 +1034,8 @@ express@^4.15.5: qs "6.5.1" range-parser "~1.2.0" safe-buffer "5.1.1" - send "0.16.0" - serve-static "1.13.0" + send "0.16.1" + serve-static "1.13.1" setprototypeof "1.1.0" statuses "~1.3.1" type-is "~1.6.15" @@ -1792,7 +1792,7 @@ negotiator@0.6.1: "networked-aframe@https://github.com/netpro2k/networked-aframe#dev": version "0.3.0" - resolved "https://github.com/netpro2k/networked-aframe#d442c03ee7bce9fc168c1396a234b91249986b6e" + resolved "https://github.com/netpro2k/networked-aframe#0f092c7a21e1c77f1bb1b879febafad76b6fd26b" dependencies: aframe-lerp-component "^1.1.0" aframe-template-component "3.2.1" @@ -2383,9 +2383,9 @@ send@0.15.6: range-parser "~1.2.0" statuses "~1.3.1" -send@0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.16.0.tgz#16338dbb9a2ede4ad57b48420ec3b82d8e80a57b" +send@0.16.1: + version "0.16.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3" dependencies: debug "2.6.9" depd "~1.1.1" @@ -2410,14 +2410,14 @@ serve-static@1.12.6, serve-static@^1.8.0: parseurl "~1.3.2" send "0.15.6" -serve-static@1.13.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.0.tgz#810c91db800e94ba287eae6b4e06caab9fdc16f1" +serve-static@1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.1.tgz#4c57d53404a761d8f2e7c1e8a18a47dbf278a719" dependencies: encodeurl "~1.0.1" escape-html "~1.0.3" parseurl "~1.3.2" - send "0.16.0" + send "0.16.1" set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0"