From a92aa271a06fc48e76d5842e629b8c1e2cff33d1 Mon Sep 17 00:00:00 2001 From: Fabien Benetou Date: Fri, 16 Dec 2022 19:14:44 +0100 Subject: [PATCH] send image and models too --- index.html | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 1739c18..54fbb2f 100644 --- a/index.html +++ b/index.html @@ -8,8 +8,9 @@ - + + @@ -218,13 +219,69 @@ AFRAME.registerComponent('web-url', { } }) +function sendGlbFromEl(el){ + const gltfExporter = new THREE.GLTFExporter(); + const mesh = el.object3D + + const options = { + trs: true, + onlyVisible: true, + truncateDrawRange: false, + binary: true, + maxTextureSize: Infinity + }; + + gltfExporter.parse( + mesh, + function (result) { + immersClient.sendModel("testing", new Blob([result]), "public") + console.log("sent blob") + // worked as https://immers.benetou.fr/s/639cb4171757b8382c120da1 of type model + // with glb as URL https://immers.benetou.fr/media/edf5641922e6371abb3118f56cd20b9b + }, + function (error) { + console.log('An error happened during parsing', error); + }, + options + ); +} + var immersClient // See dedicated issue https://git.benetou.fr/utopiah/text-code-xr-engine/issues/47 document.querySelector("#immersbundle").addEventListener('load',(event) => { immersClient = document.querySelector("immers-hud").immersClient + document.querySelector('immers-hud').immersClient.sendModel = async function sendModel (name, glb, privacy, icon, to = []) { + return this.activities.model(name, glb, icon, to, privacy) + } document.querySelector("immers-hud").setAttribute("access-role", "modFull") document.querySelector("immers-hud").immersClient.addEventListener("immers-client-connected", _ => { - immersClient.addEventListener("immers-client-new-message", e => addNewNote(e.detail.message.messageHTML) ) + //immersClient.addEventListener("immers-client-new-message", e => addNewNote(e.detail.message.messageHTML) ) + immersClient.addEventListener("immers-client-new-message", async e => { + if (e.detail.message.type == "chat"){ + let msg = ( await immersClient.activities.getObject( e.detail.message.id )) + if (msg.object.context.location ) + addNewNote( e.detail.message.messageHTML ,msg.object.context.location.position ) + else + addNewNote( e.detail.message.messageHTML ) + // could hook on pinchended + // immersClient.place.location = { position: "0 1.5 -2", rotation: "0 190 0" }; + // immersClient.sendChatMessage(textvalue, "public"); + } + if (e.detail.message.type == "media" && e.detail.message.mediaType == "image"){ + console.log("src", e.detail.message.url) + let el = document.createElement("a-box") + el.setAttribute("position", -Math.random()+" "+Math.random()*3 + " -1") + el.setAttribute("width", ".1") + el.setAttribute("height", ".15") + el.setAttribute("depth", ".01") + el.setAttribute("src", e.detail.message.url.href) + AFRAME.scenes[0].appendChild(el) + } + if (e.detail.message.type == "other"){ + let msg = ( await immersClient.activities.getObject( e.detail.message.id )) + console.log("maybe model, see object.type.model==model", msg ) + } + }) immersClient.friendsList().then( r => { if (r.length>0) addNewNote( "Friends:", "-1 1.65 -0.5") r.map( (u,i) => {