diff --git a/dist/aframe-altspace-component.js b/dist/aframe-altspace-component.js index 66033ed..dee8101 100644 --- a/dist/aframe-altspace-component.js +++ b/dist/aframe-altspace-component.js @@ -127,10 +127,13 @@ { if(this.data.fullspace){ e.requestFullspace(); + e.addEventListener('fullspacechange', function(){ + scene.scale.setScalar(e.pixelsPerMeter); + }); } - if (!this.data.usePixelScale){ - scene.scale.multiplyScalar(e.pixelsPerMeter); + if (!this.data.usePixelScale || this.data.fullspace){ + scene.scale.setScalar(e.pixelsPerMeter); } switch (this.data.verticalAlign) { diff --git a/dist/aframe-altspace-component.min.js b/dist/aframe-altspace-component.min.js index b3949c7..010b2dc 100644 --- a/dist/aframe-altspace-component.min.js +++ b/dist/aframe-altspace-component.min.js @@ -1 +1 @@ -!function(e){function t(n){if(a[n])return a[n].exports;var r=a[n]={exports:{},id:n,loaded:!1};return e[n].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var a={};return t.m=e,t.c=a,t.p="",t(0)}([function(e,t){if("undefined"==typeof AFRAME)throw new Error("Component attempted to register before AFRAME was available.");AFRAME.registerComponent("altspace",{schema:{usePixelScale:{type:"boolean","default":"false"},verticalAlign:{type:"string","default":"middle"},enclosuresOnly:{type:"boolean","default":"true"},fullspace:{type:"boolean","default":"false"}},init:function(){return this.el.object3D instanceof THREE.Scene?void(window.altspace&&window.altspace.inClient&&(this.el.setAttribute("vr-mode-ui",{enabled:!1}),this.initRenderer(),this.initCursorEvents())):void console.warn("aframe-altspace-component can only be attached to a-scene")},update:function(e){},remove:function(){},pause:function(){},play:function(){},initRenderer:function(){var e=this.el.object3D;altspace.getEnclosure().then(function(a){switch(this.data.fullspace&&a.requestFullspace(),this.data.usePixelScale||e.scale.multiplyScalar(a.pixelsPerMeter),this.data.verticalAlign){case"bottom":e.position.y-=a.innerHeight/2;break;case"top":e.position.y+=a.innerHeight/2;break;case"middle":break;default:console.warn("Unexpected value for verticalAlign: ",this.data.verticalAlign)}this.data.enclosuresOnly&&1===a.innerDepth&&(this.el.renderer.render(new THREE.Scene),this.el.renderer=this.el.effect=t)}.bind(this));var t=this.el.renderer,a=this.el.renderer=this.el.effect=altspace.getThreeJSRenderer(),n=function(){};a.setSize=n,a.setPixelRatio=n,a.setClearColor=n,a.clear=n,a.enableScissorTest=n,a.setScissor=n,a.setViewport=n,a.getPixelRatio=n,a.getMaxAnisotropy=n,a.setFaceCulling=n,a.context={canvas:{}},a.shadowMap={}},initCursorEvents:function(){var e=this.el.object3D,t=document.querySelector("a-cursor")||document.querySelector("a-entity[cursor]");t&&(t.setAttribute("material","transparent",!0),t.setAttribute("material","opacity",0));var a=function(e,a){t&&t.emit(e,{target:a}),a&&a.emit(e,{target:a})},n=null;e.addEventListener("cursordown",function(e){n=e.target,a("mousedown",e.target.el)}),e.addEventListener("cursorup",function(e){a("mouseup",e.target.el),e.target.uuid===n.uuid&&a("click",e.target.el),n=null}),e.addEventListener("cursorenter",function(e){e.target.el&&(e.target.el.addState("hovered"),t&&t.addState("hovering"),a("mouseenter",e.target.el))}),e.addEventListener("cursorleave",function(e){e.target.el&&(e.target.el.removeState("hovered"),t&&t.removeState("hovering"),a("mouseleave",e.target.el))})}}),AFRAME.registerComponent("altspace-tracked-controls",{init:function(){this.gamepadIndex=null,this.trackedControlsSystem=document.querySelector("a-scene").systems["tracked-controls"],this.systemGamepads=0,altspace.getGamepads()},tick:function(){if(this.trackedControlsSystem&&this.systemGamepads!==this.trackedControlsSystem.controllers.length&&window.altspace&&altspace.getGamepads&&altspace.getGamepads().length){var e=this.el.components;e["paint-controls"]&&(this.gamepadIndex="left"===e["paint-controls"].data.hand?2:1),null===this.gamepadIndex&&e["hand-controls"]&&(this.gamepadIndex="left"===e["hand-controls"].data?2:1),null===this.gamepadIndex&&e["vive-controls"]&&(this.gamepadIndex="left"===e["vive-controls"].data.hand?2:1),null===this.gamepadIndex&&e["tracked-controls"]&&(this.gamepadIndex=e["tracked-controls"].data.controller),this.el.setAttribute("tracked-controls","id",altspace.getGamepads()[this.gamepadIndex].id),this.el.setAttribute("tracked-controls","controller",0),this.systemGamepads=this.trackedControlsSystem.controllers.length}}}),function(){function e(e,t){e.userData.altspace={collider:{enabled:t}},e.traverse(function(e){e instanceof THREE.Mesh&&(e.userData.altspace={collider:{enabled:t}})})}AFRAME.registerComponent("altspace-cursor-collider",{schema:{enabled:{"default":!0}},init:function(){e(this.el.object3D,this.data.enabled),this.el.addEventListener("model-loaded",function(){e(this.el.object3D,this.data.enabled)}.bind(this))},update:function(){e(this.el.object3D,this.data.enabled)}})}()}]); \ No newline at end of file +!function(e){function t(n){if(a[n])return a[n].exports;var s=a[n]={exports:{},id:n,loaded:!1};return e[n].call(s.exports,s,s.exports,t),s.loaded=!0,s.exports}var a={};return t.m=e,t.c=a,t.p="",t(0)}([function(e,t){if("undefined"==typeof AFRAME)throw new Error("Component attempted to register before AFRAME was available.");AFRAME.registerComponent("altspace",{schema:{usePixelScale:{type:"boolean","default":"false"},verticalAlign:{type:"string","default":"middle"},enclosuresOnly:{type:"boolean","default":"true"},fullspace:{type:"boolean","default":"false"}},init:function(){return this.el.object3D instanceof THREE.Scene?void(window.altspace&&window.altspace.inClient&&(this.el.setAttribute("vr-mode-ui",{enabled:!1}),this.initRenderer(),this.initCursorEvents())):void console.warn("aframe-altspace-component can only be attached to a-scene")},update:function(e){},remove:function(){},pause:function(){},play:function(){},initRenderer:function(){var e=this.el.object3D;altspace.getEnclosure().then(function(a){switch(this.data.fullspace&&(a.requestFullspace(),a.addEventListener("fullspacechange",function(){e.scale.setScalar(a.pixelsPerMeter)})),this.data.usePixelScale&&!this.data.fullspace||e.scale.setScalar(a.pixelsPerMeter),this.data.verticalAlign){case"bottom":e.position.y-=a.innerHeight/2;break;case"top":e.position.y+=a.innerHeight/2;break;case"middle":break;default:console.warn("Unexpected value for verticalAlign: ",this.data.verticalAlign)}this.data.enclosuresOnly&&1===a.innerDepth&&(this.el.renderer.render(new THREE.Scene),this.el.renderer=this.el.effect=t)}.bind(this));var t=this.el.renderer,a=this.el.renderer=this.el.effect=altspace.getThreeJSRenderer(),n=function(){};a.setSize=n,a.setPixelRatio=n,a.setClearColor=n,a.clear=n,a.enableScissorTest=n,a.setScissor=n,a.setViewport=n,a.getPixelRatio=n,a.getMaxAnisotropy=n,a.setFaceCulling=n,a.context={canvas:{}},a.shadowMap={}},initCursorEvents:function(){var e=this.el.object3D,t=document.querySelector("a-cursor")||document.querySelector("a-entity[cursor]");t&&(t.setAttribute("material","transparent",!0),t.setAttribute("material","opacity",0));var a=function(e,a){t&&t.emit(e,{target:a}),a&&a.emit(e,{target:a})},n=null;e.addEventListener("cursordown",function(e){n=e.target,a("mousedown",e.target.el)}),e.addEventListener("cursorup",function(e){a("mouseup",e.target.el),e.target.uuid===n.uuid&&a("click",e.target.el),n=null}),e.addEventListener("cursorenter",function(e){e.target.el&&(e.target.el.addState("hovered"),t&&t.addState("hovering"),a("mouseenter",e.target.el))}),e.addEventListener("cursorleave",function(e){e.target.el&&(e.target.el.removeState("hovered"),t&&t.removeState("hovering"),a("mouseleave",e.target.el))})}}),AFRAME.registerComponent("altspace-tracked-controls",{init:function(){this.gamepadIndex=null,this.trackedControlsSystem=document.querySelector("a-scene").systems["tracked-controls"],this.systemGamepads=0,altspace.getGamepads()},tick:function(){if(this.trackedControlsSystem&&this.systemGamepads!==this.trackedControlsSystem.controllers.length&&window.altspace&&altspace.getGamepads&&altspace.getGamepads().length){var e=this.el.components;e["paint-controls"]&&(this.gamepadIndex="left"===e["paint-controls"].data.hand?2:1),null===this.gamepadIndex&&e["hand-controls"]&&(this.gamepadIndex="left"===e["hand-controls"].data?2:1),null===this.gamepadIndex&&e["vive-controls"]&&(this.gamepadIndex="left"===e["vive-controls"].data.hand?2:1),null===this.gamepadIndex&&e["tracked-controls"]&&(this.gamepadIndex=e["tracked-controls"].data.controller),this.el.setAttribute("tracked-controls","id",altspace.getGamepads()[this.gamepadIndex].id),this.el.setAttribute("tracked-controls","controller",0),this.systemGamepads=this.trackedControlsSystem.controllers.length}}}),function(){function e(e,t){e.userData.altspace={collider:{enabled:t}},e.traverse(function(e){e instanceof THREE.Mesh&&(e.userData.altspace={collider:{enabled:t}})})}AFRAME.registerComponent("altspace-cursor-collider",{schema:{enabled:{"default":!0}},init:function(){e(this.el.object3D,this.data.enabled),this.el.addEventListener("model-loaded",function(){e(this.el.object3D,this.data.enabled)}.bind(this))},update:function(){e(this.el.object3D,this.data.enabled)}})}()}]); \ No newline at end of file diff --git a/index.js b/index.js index b6cd51d..2bcacd7 100644 --- a/index.js +++ b/index.js @@ -81,10 +81,13 @@ AFRAME.registerComponent('altspace', { { if(this.data.fullspace){ e.requestFullspace(); + e.addEventListener('fullspacechange', function(){ + scene.scale.setScalar(e.pixelsPerMeter); + }); } - if (!this.data.usePixelScale){ - scene.scale.multiplyScalar(e.pixelsPerMeter); + if (!this.data.usePixelScale || this.data.fullspace){ + scene.scale.setScalar(e.pixelsPerMeter); } switch (this.data.verticalAlign) { diff --git a/package.json b/package.json index 5041358..745ff01 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aframe-altspace-component", - "version": "1.0.0", + "version": "1.1.1", "description": "aframe-altspace-component makes A-frame apps compatible with AltspaceVR.", "main": "index.js", "scripts": {