From 1bb95fa69cac1cefa98ceab771d1eac6f574c885 Mon Sep 17 00:00:00 2001 From: Fabien Benetou Date: Mon, 6 Mar 2023 15:50:19 +0100 Subject: [PATCH] from primitive to instance (without instancing proper) --- index.html | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/index.html b/index.html index 547167f..32dc5b3 100644 --- a/index.html +++ b/index.html @@ -2139,18 +2139,22 @@ AFRAME.registerComponent('clone-on-primarypinchstarted', { init: function () { let el = this.el this.el.addEventListener('picked', function (event) { - var clone = selectedElement.cloneNode(true) - clone.removeAttribute('clone-on-primarypinchstarted') - clone.setAttribute( "scale", selectedElement.getAttribute("scale") ) // somehow lost? - clone.id += "_clone" + Date.now() - clone.className = "cloned" - targets.push(clone) - AFRAME.scenes[0].appendChild(clone) - selectedElement = clone + selectedElement = instanciateFromPrimitive( selectedElement ) }) } }) +function instanciateFromPrimitive(element){ + var clone = element.cloneNode(true) + clone.removeAttribute('clone-on-primarypinchstarted') + clone.setAttribute( "scale", element.getAttribute("scale") ) // somehow lost? + clone.id += "_clone" + Date.now() + clone.className = "cloned" + targets.push(clone) + AFRAME.scenes[0].appendChild(clone) + return clone +} + function addAllPrimitives(){ const other_primitives = ["camera", "cursor", "sky", "light", "sound", "videosphere"] const other_primitives_with_param_needed = ["text", "gltf-model", "obj-model", "troika-text"] @@ -2198,6 +2202,16 @@ function getClassFromPick(){ // should be classes, for now assuming one return classFound } +function getArrayFromClass(classname){ + return Array.from( document.querySelectorAll("."+classname) ) +} + +function applyToClass(classname, callback, value){ +// example applyToClass("template_object", (e, val ) => e.setAttribute("scale", val), ".1 .1 .2") + getArrayFromClass(classname).map( e => callback(e, value)) +// could instead become a jxr shortcut, namely apply a set attribute to a class of entities +} + function changeColorLastClass(){ let classFound = getClassFromPick() // applies on primary only if (classFound)