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";