repo: janusweb
action: commit
revision: 
path_from: 
revision_from: 885ae09f42f5d06d092c4a2b9db7c5d7a6cad1e3:
path_to: 
revision_to: 
git.thebackupbox.net
janusweb
git clone git://git.thebackupbox.net/janusweb
commit 885ae09f42f5d06d092c4a2b9db7c5d7a6cad1e3
Author: James Baicoianu 
Date:   Thu Oct 22 15:57:52 2020 -0700

    Improved Enter VR button functionality

diff --git a/media/assets/webui/apps/buttons/buttons.css b/media/assets/webui/apps/buttons/buttons.css
index e03e02aaf215badcb93fb708e71d8f1fce9b81ca..
index ..0aa4f54d15135b98169d83f42ae67262bc2d6760 100644
--- a/media/assets/webui/apps/buttons/buttons.css
+++ b/media/assets/webui/apps/buttons/buttons.css
@@ -1,6 +1,7 @@
 janus-button-webvr,
 janus-button-webar,
-janus-ui-editor-button {
+janus-ui-editor-button,
+janus-button-start {
   border: none;
   border-radius: .5em;
   padding: .1em .5em;
@@ -17,16 +18,19 @@ janus-ui-editor-button {
 }
 janus-button-webvr[hover],
 janus-button-webar[hover],
-janus-ui-editor-button[hover] {
+janus-ui-editor-button[hover],
+janus-button-start[hover] {
   background-image: linear-gradient(#323232, #404142 40%, #393b3d);
 }
 janus-button-webvr:active,
 janus-button-webar:active,
-janus-ui-editor-button:active {
+janus-ui-editor-button:active,
+janus-button-start:active {
   background-image: linear-gradient(#020202, #101112 40%, #191b1d);
 }
 janus-button-webvr[disabled],
 janus-button-webar[disabled],
+janus-button-start[disabled],
 janus-ui-editor-button[disabled] {
   color: #999;
   background-image: linear-gradient(#484e55, #3a3f44 60%, #313539);
@@ -51,3 +55,6 @@ janus-ui-buttons>ui-buttonbar>janus-ui-editor-button {
     font-size: .8em;
     font-weight: bold;
 }
+janus-ui-buttons>ui-buttonbar>ui-button[name="fullscreen"] {
+  font-size: 1.5em;
+}
diff --git a/media/assets/webui/apps/buttons/buttons.html b/media/assets/webui/apps/buttons/buttons.html
index cdfdb83ca42d92c0db3bc5e0585eefc90a7d2b3f..
index ..ab2e766613758d49ac8e9363dec98b25eb8bd303 100644
--- a/media/assets/webui/apps/buttons/buttons.html
+++ b/media/assets/webui/apps/buttons/buttons.html
@@ -1,9 +1,9 @@
       
-        Edit
-        Share
-        Expand
-        
-        
-        Config
+        {#showedit}Edit{/showedit}
+        {#showshare}Share{/showshare}
+        {#showfullscreen}{/showfullscreen}
+        {#showvr}{/showvr}
+        {#showar}{/showar}
+        {#showsettings}Config{/showsettings}
       

diff --git a/media/assets/webui/apps/buttons/buttons.js b/media/assets/webui/apps/buttons/buttons.js
index 38bfa8bbc2dd014645393ef3d0d5f2e7dbf5d4f0..
index ..ed20dc959fe7f0c63196692e3cb078d9defdc20a 100644
--- a/media/assets/webui/apps/buttons/buttons.js
+++ b/media/assets/webui/apps/buttons/buttons.js
@@ -1,6 +1,24 @@
 elation.elements.define('janus.ui.buttons', class extends elation.elements.base {
+  init() {
+    super.init();
+    this.defineAttributes({
+      showedit: { type: 'boolean', default: true },
+      showshare: { type: 'boolean', default: true },
+      showfullscreen: { type: 'boolean', default: true },
+      showvr: { type: 'boolean', default: true },
+      showar: { type: 'boolean', default: true },
+      showsettings: { type: 'boolean', default: true },
+    });
+  }
   create() {
-    this.innerHTML = elation.template.get('janus.ui.buttons');
+console.log('show me?', this.showedit, this.showshare, this.showfullscreen, this.showvr, this.showar, this.showsettings);
+    if (this.showedit == 'false') this.showedit = false;
+    if (this.showshare == 'false') this.showshare = false;
+    if (this.showfullscreen == 'false') this.showfullscreen = false;
+    if (this.showvr == 'false') this.showvr = false;
+    if (this.showar == 'false') this.showar = false;
+    if (this.showsettings == 'false') this.showsettings = false;
+    this.innerHTML = elation.template.get('janus.ui.buttons', this);
   }
 });
 elation.elements.define('janus-buttons-display', class extends elation.elements.ui.dropdownbutton {
@@ -55,16 +73,19 @@ elation.elements.define('janus-button-fullscreen', class extends elation.element
 elation.elements.define('janus-button-webvr', class extends elation.elements.ui.togglebutton {
   create() {
     this.xr = false;
-    this.activelabel = 'WebVR';
-    this.inactivelabel = 'WebVR';
+    this.defineAttributes({
+      activelabel: { type: 'string', default: 'Exit VR' },
+      inactivelabel: { type: 'string', default: 'VR' },
+    });

     this.label = this.activelabel;
     super.create();
     this.view = janus.engine.client.view;

+    elation.events.add(janus.engine.client, 'xrsessionstart', ev => this.handleXRSessionStart(ev));
+    elation.events.add(janus.engine.client, 'xrsessionend', ev => this.handleXRSessionEnd(ev));
+
     if ('xr' in navigator) {
-      this.activelabel = 'Exit VR';
-      this.inactivelabel = 'Enter VR';
       this.label = this.inactivelabel;
       this.xr = true;
     } else if ('getVRDevices' in navigator) {
@@ -84,28 +105,38 @@ elation.elements.define('janus-button-webvr', class extends elation.elements.ui.
     }
   }
   onactivate(ev) {
-    this.label = this.activelabel;
+    if (this.disabled) return;
     if (this.xr) {
-      janus.engine.client.startXR();
+      let client = janus.engine.client;
+      if (client.xrsession) {
+        client.stopXR();
+        this.label = this.inactivelabel;
+      } else {
+        this.disabled = true;
+        this.label = 'Initializing...'
+        client.startXR();
+      }
     } else {
       this.view.toggleVR(true);
     }
   }
   ondeactivate(ev) {
+    // FIXME - the button detects its state when it's clicked, we should really just use a  here
+    this.onactivate(ev);
+  }
+  handleXRSessionStart(ev) {
+    this.label = this.activelabel;
+    this.disabled = false;
+  }
+  handleXRSessionEnd(ev) {
     this.label = this.inactivelabel;
-    if (this.xr) {
-      //this.view.stopXR();
-      janus.engine.client.stopXR();
-    } else {
-      this.view.toggleVR(false);
-    }
   }
 });
 elation.elements.define('janus-button-webar', class extends elation.elements.ui.togglebutton {
   create() {
     this.xr = false;
     this.activelabel = 'Exit AR';
-    this.inactivelabel = 'Enter AR';
+    this.inactivelabel = 'AR';
     this.enabled = false;

     this.label = this.activelabel;
@@ -143,3 +174,19 @@ elation.elements.define('janus-buttons-ou3d', class extends elation.elements.ui.
 });
 elation.elements.define('janus-buttons-peppersghost', class extends elation.elements.ui.togglebutton {
 });
+elation.elements.define('janus-button-start', class extends elation.elements.ui.button {
+  create() {
+    super.create();
+    this.addEventListener('click', (ev) => this.onclick(ev));
+  }
+  onclick(ev) {
+    janus.engine.systems.sound.enableSound();
+    janus.engine.systems.controls.requestPointerLock();
+    if (room.objects.scroller) {
+      room.objects.scroller.disable();
+    }
+    //player.flying = false;
+    player.enable();
+    //janus.ui.show();
+  }
+});

-----END OF PAGE-----