Merge pull request #11365 from thoys/feat/cloneAvatarEntities

Clone local avatar entities
This commit is contained in:
Thijs Wenker 2017-09-15 04:51:18 +02:00 committed by GitHub
commit 9f61e7471c
3 changed files with 39 additions and 21 deletions

View file

@ -1,4 +1,4 @@
<!-- <!--
// entityProperties.html // entityProperties.html
// //
// Created by Ryan Huffman on 13 Nov 2014 // Created by Ryan Huffman on 13 Nov 2014
@ -136,17 +136,21 @@
<fieldset class="column" id="group-cloneable-group" style="display:none;"> <fieldset class="column" id="group-cloneable-group" style="display:none;">
<legend class="sub-section-header"> <legend class="sub-section-header">
<span>Cloneable Settings</span> <span>Cloneable Settings</span>
</legend> </legend>
<fieldset class="minor"> <fieldset class="minor">
<div><label>Clone Lifetime</label><input type="number" data-user-data-type="cloneLifetime" id="property-cloneable-lifetime"></div> <div><label>Clone Lifetime</label><input type="number" data-user-data-type="cloneLifetime" id="property-cloneable-lifetime"></div>
</fieldset> </fieldset>
<fieldset class="minor"> <fieldset class="minor">
<div><label>Clone Limit </label><input type="number" data-user-data-type="cloneLimit" id="property-cloneable-limit"></div> <div><label>Clone Limit</label><input type="number" data-user-data-type="cloneLimit" id="property-cloneable-limit"></div>
</fieldset> </fieldset>
<div class="property checkbox"> <div class="property checkbox">
<input type="checkbox" id="property-cloneable-dynamic"> <input type="checkbox" id="property-cloneable-dynamic">
<label for="property-cloneable-dynamic">Clone Dynamic</label> <label for="property-cloneable-dynamic">Clone Dynamic</label>
</div>
<div class="property checkbox">
<input type="checkbox" id="property-cloneable-avatarEntity">
<label for="property-cloneable-avatarEntity">Clone Avatar Entity</label>
</div> </div>
</fieldset> </fieldset>
</div> </div>

View file

@ -554,6 +554,7 @@ function loaded() {
var elCloneable = document.getElementById("property-cloneable"); var elCloneable = document.getElementById("property-cloneable");
var elCloneableDynamic = document.getElementById("property-cloneable-dynamic"); var elCloneableDynamic = document.getElementById("property-cloneable-dynamic");
var elCloneableAvatarEntity = document.getElementById("property-cloneable-avatarEntity");
var elCloneableGroup = document.getElementById("group-cloneable-group"); var elCloneableGroup = document.getElementById("group-cloneable-group");
var elCloneableLifetime = document.getElementById("property-cloneable-lifetime"); var elCloneableLifetime = document.getElementById("property-cloneable-lifetime");
var elCloneableLimit = document.getElementById("property-cloneable-limit"); var elCloneableLimit = document.getElementById("property-cloneable-limit");
@ -844,25 +845,29 @@ function loaded() {
parsedUserData = JSON.parse(properties.userData); parsedUserData = JSON.parse(properties.userData);
if ("grabbableKey" in parsedUserData) { if ("grabbableKey" in parsedUserData) {
if ("grabbable" in parsedUserData["grabbableKey"]) { var grabbableData = parsedUserData["grabbableKey"];
elGrabbable.checked = parsedUserData["grabbableKey"].grabbable; if ("grabbable" in grabbableData) {
elGrabbable.checked = grabbableData.grabbable;
} }
if ("wantsTrigger" in parsedUserData["grabbableKey"]) { if ("wantsTrigger" in grabbableData) {
elWantsTrigger.checked = parsedUserData["grabbableKey"].wantsTrigger; elWantsTrigger.checked = grabbableData.wantsTrigger;
} }
if ("ignoreIK" in parsedUserData["grabbableKey"]) { if ("ignoreIK" in grabbableData) {
elIgnoreIK.checked = parsedUserData["grabbableKey"].ignoreIK; elIgnoreIK.checked = grabbableData.ignoreIK;
} }
if ("cloneable" in parsedUserData["grabbableKey"]) { if ("cloneable" in grabbableData) {
elCloneable.checked = parsedUserData["grabbableKey"].cloneable; elCloneable.checked = grabbableData.cloneable;
elCloneableGroup.style.display = elCloneable.checked ? "block": "none"; elCloneableGroup.style.display = elCloneable.checked ? "block": "none";
elCloneableDynamic.checked = parsedUserData["grabbableKey"].cloneDynamic ? parsedUserData["grabbableKey"].cloneDynamic : properties.dynamic; elCloneableDynamic.checked = grabbableData.cloneDynamic ? grabbableData.cloneDynamic : properties.dynamic;
if (elCloneable.checked) { if (elCloneable.checked) {
if ("cloneLifetime" in parsedUserData["grabbableKey"]) { if ("cloneLifetime" in grabbableData) {
elCloneableLifetime.value = parsedUserData["grabbableKey"].cloneLifetime ? parsedUserData["grabbableKey"].cloneLifetime : 300; elCloneableLifetime.value = grabbableData.cloneLifetime ? grabbableData.cloneLifetime : 300;
} }
if ("cloneLimit" in parsedUserData["grabbableKey"]) { if ("cloneLimit" in grabbableData) {
elCloneableLimit.value = parsedUserData["grabbableKey"].cloneLimit ? parsedUserData["grabbableKey"].cloneLimit : 0; elCloneableLimit.value = grabbableData.cloneLimit ? grabbableData.cloneLimit : 0;
}
if ("cloneAvatarEntity" in grabbableData) {
elCloneableAvatarEntity.checked = grabbableData.cloneAvatarEntity ? grabbableData.cloneAvatarEntity : false;
} }
} }
} }
@ -1114,9 +1119,14 @@ function loaded() {
} }
userDataChanger("grabbableKey", "grabbable", elGrabbable, elUserData, properties.dynamic); userDataChanger("grabbableKey", "grabbable", elGrabbable, elUserData, properties.dynamic);
}); });
elCloneableDynamic.addEventListener('change', function (event){ elCloneableDynamic.addEventListener('change', function(event) {
userDataChanger("grabbableKey", "cloneDynamic", event.target, elUserData, -1); userDataChanger("grabbableKey", "cloneDynamic", event.target, elUserData, -1);
}); });
elCloneableAvatarEntity.addEventListener('change', function(event) {
userDataChanger("grabbableKey", "cloneAvatarEntity", event.target, elUserData, -1);
});
elCloneable.addEventListener('change', function (event) { elCloneable.addEventListener('change', function (event) {
var checked = event.target.checked; var checked = event.target.checked;
if (checked) { if (checked) {
@ -1124,6 +1134,7 @@ function loaded() {
cloneLifetime: elCloneableLifetime, cloneLifetime: elCloneableLifetime,
cloneLimit: elCloneableLimit, cloneLimit: elCloneableLimit,
cloneDynamic: elCloneableDynamic, cloneDynamic: elCloneableDynamic,
cloneAvatarEntity: elCloneableAvatarEntity,
cloneable: event.target, cloneable: event.target,
grabbable: null grabbable: null
}, elUserData, {}); }, elUserData, {});
@ -1134,6 +1145,7 @@ function loaded() {
cloneLifetime: null, cloneLifetime: null,
cloneLimit: null, cloneLimit: null,
cloneDynamic: null, cloneDynamic: null,
cloneAvatarEntity: null,
cloneable: false cloneable: false
}, elUserData, {}); }, elUserData, {});
elCloneableGroup.style.display = "none"; elCloneableGroup.style.display = "none";

View file

@ -72,6 +72,7 @@ cloneEntity = function(props, worldEntityProps) {
var lifetime = grabInfo.cloneLifetime ? grabInfo.cloneLifetime : 300; var lifetime = grabInfo.cloneLifetime ? grabInfo.cloneLifetime : 300;
var dynamic = grabInfo.cloneDynamic ? grabInfo.cloneDynamic : false; var dynamic = grabInfo.cloneDynamic ? grabInfo.cloneDynamic : false;
var triggerable = grabInfo.triggerable ? grabInfo.triggerable : false; var triggerable = grabInfo.triggerable ? grabInfo.triggerable : false;
var avatarEntity = grabInfo.cloneAvatarEntity ? grabInfo.cloneAvatarEntity : false;
var cUserData = Object.assign({}, JSON.parse(cloneableProps.userData)); var cUserData = Object.assign({}, JSON.parse(cloneableProps.userData));
var cProperties = Object.assign({}, cloneableProps); var cProperties = Object.assign({}, cloneableProps);
@ -80,6 +81,7 @@ cloneEntity = function(props, worldEntityProps) {
delete cUserData.grabbableKey.cloneable; delete cUserData.grabbableKey.cloneable;
delete cUserData.grabbableKey.cloneDynamic; delete cUserData.grabbableKey.cloneDynamic;
delete cUserData.grabbableKey.cloneLimit; delete cUserData.grabbableKey.cloneLimit;
delete cUserData.grabbableKey.cloneAvatarEntity;
delete cProperties.id; delete cProperties.id;
@ -90,6 +92,6 @@ cloneEntity = function(props, worldEntityProps) {
cProperties.lifetime = lifetime; cProperties.lifetime = lifetime;
cProperties.userData = JSON.stringify(cUserData); cProperties.userData = JSON.stringify(cUserData);
var cloneID = Entities.addEntity(cProperties); var cloneID = Entities.addEntity(cProperties, avatarEntity);
return cloneID; return cloneID;
}; };