repo: janusweb
action: commit
revision: 
path_from: 
revision_from: 1e502be0117354bb040e95ccf213fa3382a70063:
path_to: 
revision_to: 
git.thebackupbox.net
janusweb
git clone git://git.thebackupbox.net/janusweb
commit 1e502be0117354bb040e95ccf213fa3382a70063
Author: James Baicoianu 
Date:   Sun Oct 20 01:05:55 2019 -0700

    Toggle edit panel with edit button, added export support

diff --git a/media/assets/webui/apps/editor/editor.css b/media/assets/webui/apps/editor/editor.css
index e4651f8d3df39ba6f82044716b0151346188c9e4..
index ..ec82e89a2d3226d9d21287b06842a21cc2159799 100644
--- a/media/assets/webui/apps/editor/editor.css
+++ b/media/assets/webui/apps/editor/editor.css
@@ -67,3 +67,6 @@ janus-ui-editor-panel ui-button {
   font-size: .7em;
   font-weight: bold;
 }
+janus-ui-editor-button[active] {
+  background-image: linear-gradient(#028202, #109112 40%, #199b1d);
+}
diff --git a/media/assets/webui/apps/editor/editor.js b/media/assets/webui/apps/editor/editor.js
index 16a34b83f36a71dc4c032b399e184f91b70141eb..
index ..ec5ed9a631f2083b0da3733449719b8d63f20c27 100644
--- a/media/assets/webui/apps/editor/editor.js
+++ b/media/assets/webui/apps/editor/editor.js
@@ -1,6 +1,30 @@
 elation.elements.define('janus.ui.editor.button', class extends elation.elements.ui.togglebutton {
   create() {
     super.create();
+    let editpanel = document.querySelector('ui-panel[name="topright"]');
+    if (editpanel) {
+      editpanel.hide();
+    }
+  }
+  onactivate() {
+    let inventorypanel = document.querySelector('ui-collapsiblepanel[name="right"]');
+    if (inventorypanel) {
+      inventorypanel.expand();
+    }
+    let editpanel = document.querySelector('ui-panel[name="topright"]');
+    if (editpanel) {
+      editpanel.show();
+    }
+  }
+  ondeactivate() {
+    let inventorypanel = document.querySelector('ui-collapsiblepanel[name="right"]');
+    if (inventorypanel) {
+      inventorypanel.collapse();
+    }
+    let editpanel = document.querySelector('ui-panel[name="topright"]');
+    if (editpanel) {
+      editpanel.hide();
+    }
   }
 });
 elation.elements.define('janus.ui.editor.panel', class extends elation.elements.base {
@@ -17,8 +41,9 @@ console.log('my elements!', elements);
     elation.events.add(elements.rotatesnap, 'change', (ev) => this.handleRotateSnapChange(ev));
 */

-    elation.events.add(elements.physicsdebug, 'click', (ev) => this.handlePhysicsDebugClick(ev));
+    elation.events.add(elements.debugview, 'click', (ev) => this.handleDebugviewClick(ev));
     elation.events.add(elements.viewsource, 'click', (ev) => this.handleViewSourceClick(ev));
+    elation.events.add(elements.export, 'click', (ev) => this.handleExportClick(ev));

     this.elements = elements;

@@ -183,7 +208,7 @@ console.log('set translation snap', ev.data, ev);
 */
     this.setRotationSnap(ev.target.value);
   }
-  handlePhysicsDebugClick(ev) {
+  handleDebugviewClick(ev) {
     if (!ev.target.active) {
       janus.engine.client.view.pickingdebug = true;
       janus.engine.systems.world.enableDebug();
@@ -196,6 +221,25 @@ console.log('set translation snap', ev.data, ev);
   handleViewSourceClick(ev) {
     room.showDebug();
   }
+  handleExportClick(ev) {
+    let exporter = new THREE.GLTFExporter();
+    exporter.parse(room._target.objects['3d'], (data) => {
+      let filedata = new Blob([data], {type: 'model/gltf-binary'});
+
+      var url = window.URL.createObjectURL(filedata);
+
+      let d = new Date(),
+          ts = d.getFullYear() + (d.getMonth() + 1).toString().padStart(2, '0') + d.getDate().toString().padStart(2, '0') + d.getHours().toString().padStart(2, '0') + d.getMinutes().toString().padStart(2, '0') + d.getSeconds().toString().padStart(2, '0')
+
+      var a = document.createElement('A');
+      a.style.display = 'none';
+      document.body.appendChild(a);
+      a.href = url;
+      a.download = room.title + ' - ' + ts + '.glb';
+      a.click();
+      window.URL.revokeObjectURL(url);
+    }, { binary: true });
+  }
   handleRoomClick(ev) {
     if (ev.button == 2) {
         if (this.roomedit.object) {
@@ -910,7 +954,6 @@ console.log('manip left', ev.value, ev);
             objects.push(newobject);
           }
           if (objects[0]) {
-      console.log('edit the object', objects[0]);
             this.editObject(objects[0], true);
           }
         });

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