diff --git a/scripts/system/controllers/handControllerGrab.js b/scripts/system/controllers/handControllerGrab.js index 7f67c11a7c..4b469798ab 100644 --- a/scripts/system/controllers/handControllerGrab.js +++ b/scripts/system/controllers/handControllerGrab.js @@ -2409,6 +2409,7 @@ function MyController(hand) { var cloneableProps = Entities.getEntityProperties(grabbedProperties.id); var lifetime = grabInfo.cloneLifetime ? grabInfo.cloneLifetime : 300; var limit = grabInfo.cloneLimit ? grabInfo.cloneLimit : 10; + var dynamic = grabInfo.cloneDynamic ? grabInfo.cloneDynamic : false; var cUserData = Object.assign({}, userData); var cProperties = Object.assign({}, cloneableProps); @@ -2422,8 +2423,12 @@ function MyController(hand) { delete cUserData.grabbableKey.cloneLifetime; delete cUserData.grabbableKey.cloneable; + delete cUserData.grabbableKey.cloneDynamic; delete cUserData.grabbableKey.cloneLimit; delete cProperties.id + + cProperties.dynamic = dynamic; + cProperties.locked = false; cUserData.grabbableKey.triggerable = true; cUserData.grabbableKey.grabbable = true; cProperties.lifetime = lifetime; diff --git a/scripts/system/html/entityProperties.html b/scripts/system/html/entityProperties.html index e775be9e3a..a0497d6a92 100644 --- a/scripts/system/html/entityProperties.html +++ b/scripts/system/html/entityProperties.html @@ -312,6 +312,10 @@
+
+ + +
diff --git a/scripts/system/html/js/entityProperties.js b/scripts/system/html/js/entityProperties.js index abffdaee96..2c77d54e85 100644 --- a/scripts/system/html/js/entityProperties.js +++ b/scripts/system/html/js/entityProperties.js @@ -603,7 +603,7 @@ function loaded() { var elGrabbable = document.getElementById("property-grabbable"); var elCloneable = document.getElementById("property-cloneable"); - + var elCloneableDynamic = document.getElementById("property-cloneable-dynamic"); var elCloneableGroup = document.getElementById("group-cloneable-group"); var elCloneableLifetime = document.getElementById("property-cloneable-lifetime"); var elCloneableLimit = document.getElementById("property-cloneable-limit"); @@ -893,15 +893,14 @@ function loaded() { elCloneableGroup.style.display = elCloneable.checked ? "block": "none"; elCloneableLimit.value = elCloneable.checked ? 10: 0; elCloneableLifetime.value = elCloneable.checked ? 300: 0; + elCloneableDynamic.checked = parsedUserData["grabbableKey"].cloneDynamic ? parsedUserData["grabbableKey"].cloneDynamic : properties.dynamic; elDynamic.checked = elCloneable.checked ? false: properties.dynamic; - } else { elCloneable.checked = false; - + elCloneableDynamic.checked = false; elCloneableGroup.style.display = elCloneable.checked ? "block": "none"; elCloneableLimit.value = 0; elCloneableLifetime.value = 0; - } if ("cloneLifetime" in parsedUserData["grabbableKey"]) { elCloneableLifetime.value = parsedUserData["grabbableKey"].cloneLifetime; @@ -1203,11 +1202,14 @@ function loaded() { elGrabbable.addEventListener('change', function() { userDataChanger("grabbableKey", "grabbable", elGrabbable, elUserData, properties.dynamic); }); + elCloneableDynamic.addEventListener('change', function (event){ + userDataChanger("grabbableKey", "cloneDynamic", event.target, elUserData, -1); + }); elCloneable.addEventListener('change', function (event) { var checked = event.target.checked; if (checked) { multiUserDataChanger("grabbableKey", - {cloneLifetime: elCloneableLifetime, cloneLimit: elCloneableLimit, cloneable: event.target}, + {cloneLifetime: elCloneableLifetime, cloneLimit: elCloneableLimit, cloneDynamic: elCloneableDynamic, cloneable: event.target}, elUserData, {cloneLifetime: 300, cloneLimit: 10, cloneable: false}); elCloneableGroup.style.display = "block";