mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 09:08:47 +02:00
Fix hidden dynamic property whenever the item is clone-able / DRYing propertyUpdates
This commit is contained in:
parent
60125eb1d7
commit
5c5aaf3254
1 changed files with 60 additions and 126 deletions
|
@ -82,11 +82,23 @@ function showElements(els, show) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function updateProperty(propertyName, propertyValue) {
|
||||||
|
var properties = {};
|
||||||
|
properties[propertyName] = propertyValue;
|
||||||
|
updateProperties(properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateProperties(properties) {
|
||||||
|
EventBridge.emitWebEvent(JSON.stringify({
|
||||||
|
id: lastEntityID,
|
||||||
|
type: "update",
|
||||||
|
properties: properties
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
function createEmitCheckedPropertyUpdateFunction(propertyName) {
|
function createEmitCheckedPropertyUpdateFunction(propertyName) {
|
||||||
return function() {
|
return function() {
|
||||||
EventBridge.emitWebEvent(
|
updateProperty(propertyName, this.checked);
|
||||||
'{"id":' + lastEntityID + ', "type":"update", "properties":{"' + propertyName + '":' + this.checked + '}}'
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,13 +117,7 @@ function createEmitGroupCheckedPropertyUpdateFunction(group, propertyName) {
|
||||||
var properties = {};
|
var properties = {};
|
||||||
properties[group] = {};
|
properties[group] = {};
|
||||||
properties[group][propertyName] = this.checked;
|
properties[group][propertyName] = this.checked;
|
||||||
EventBridge.emitWebEvent(
|
updateProperties(properties);
|
||||||
JSON.stringify({
|
|
||||||
id: lastEntityID,
|
|
||||||
type: "update",
|
|
||||||
properties: properties
|
|
||||||
})
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,10 +125,7 @@ function createEmitNumberPropertyUpdateFunction(propertyName, decimals) {
|
||||||
decimals = decimals == undefined ? 4 : decimals;
|
decimals = decimals == undefined ? 4 : decimals;
|
||||||
return function() {
|
return function() {
|
||||||
var value = parseFloat(this.value).toFixed(decimals);
|
var value = parseFloat(this.value).toFixed(decimals);
|
||||||
|
updateProperty(propertyName, value);
|
||||||
EventBridge.emitWebEvent(
|
|
||||||
'{"id":' + lastEntityID + ', "type":"update", "properties":{"' + propertyName + '":' + value + '}}'
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,28 +134,14 @@ function createEmitGroupNumberPropertyUpdateFunction(group, propertyName) {
|
||||||
var properties = {};
|
var properties = {};
|
||||||
properties[group] = {};
|
properties[group] = {};
|
||||||
properties[group][propertyName] = this.value;
|
properties[group][propertyName] = this.value;
|
||||||
EventBridge.emitWebEvent(
|
updateProperties(properties);
|
||||||
JSON.stringify({
|
|
||||||
id: lastEntityID,
|
|
||||||
type: "update",
|
|
||||||
properties: properties,
|
|
||||||
})
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function createEmitTextPropertyUpdateFunction(propertyName) {
|
function createEmitTextPropertyUpdateFunction(propertyName) {
|
||||||
return function() {
|
return function() {
|
||||||
var properties = {};
|
updateProperty(propertyName, this.value);
|
||||||
properties[propertyName] = this.value;
|
|
||||||
EventBridge.emitWebEvent(
|
|
||||||
JSON.stringify({
|
|
||||||
id: lastEntityID,
|
|
||||||
type: "update",
|
|
||||||
properties: properties,
|
|
||||||
})
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,62 +150,44 @@ function createEmitGroupTextPropertyUpdateFunction(group, propertyName) {
|
||||||
var properties = {};
|
var properties = {};
|
||||||
properties[group] = {};
|
properties[group] = {};
|
||||||
properties[group][propertyName] = this.value;
|
properties[group][propertyName] = this.value;
|
||||||
EventBridge.emitWebEvent(
|
updateProperties(properties);
|
||||||
JSON.stringify({
|
|
||||||
id: lastEntityID,
|
|
||||||
type: "update",
|
|
||||||
properties: properties,
|
|
||||||
})
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function createEmitVec3PropertyUpdateFunction(property, elX, elY, elZ) {
|
function createEmitVec3PropertyUpdateFunction(property, elX, elY, elZ) {
|
||||||
return function() {
|
return function() {
|
||||||
var data = {
|
var properties = {};
|
||||||
id: lastEntityID,
|
properties[property] = {
|
||||||
type: "update",
|
|
||||||
properties: {}
|
|
||||||
};
|
|
||||||
data.properties[property] = {
|
|
||||||
x: elX.value,
|
x: elX.value,
|
||||||
y: elY.value,
|
y: elY.value,
|
||||||
z: elZ.value,
|
z: elZ.value,
|
||||||
};
|
};
|
||||||
EventBridge.emitWebEvent(JSON.stringify(data));
|
updateProperties(properties);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function createEmitGroupVec3PropertyUpdateFunction(group, property, elX, elY, elZ) {
|
function createEmitGroupVec3PropertyUpdateFunction(group, property, elX, elY, elZ) {
|
||||||
return function() {
|
return function() {
|
||||||
var data = {
|
var properties = {};
|
||||||
id: lastEntityID,
|
properties[group] = {};
|
||||||
type: "update",
|
properties[group][property] = {
|
||||||
properties: {}
|
|
||||||
};
|
|
||||||
data.properties[group] = {};
|
|
||||||
data.properties[group][property] = {
|
|
||||||
x: elX.value,
|
x: elX.value,
|
||||||
y: elY.value,
|
y: elY.value,
|
||||||
z: elZ ? elZ.value : 0,
|
z: elZ ? elZ.value : 0,
|
||||||
};
|
};
|
||||||
EventBridge.emitWebEvent(JSON.stringify(data));
|
updateProperties(properties);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function createEmitVec3PropertyUpdateFunctionWithMultiplier(property, elX, elY, elZ, multiplier) {
|
function createEmitVec3PropertyUpdateFunctionWithMultiplier(property, elX, elY, elZ, multiplier) {
|
||||||
return function() {
|
return function() {
|
||||||
var data = {
|
var properties = {};
|
||||||
id: lastEntityID,
|
properties[property] = {
|
||||||
type: "update",
|
|
||||||
properties: {}
|
|
||||||
};
|
|
||||||
data.properties[property] = {
|
|
||||||
x: elX.value * multiplier,
|
x: elX.value * multiplier,
|
||||||
y: elY.value * multiplier,
|
y: elY.value * multiplier,
|
||||||
z: elZ.value * multiplier,
|
z: elZ.value * multiplier,
|
||||||
};
|
};
|
||||||
EventBridge.emitWebEvent(JSON.stringify(data));
|
updateProperties(properties);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -227,44 +198,35 @@ function createEmitColorPropertyUpdateFunction(property, elRed, elGreen, elBlue)
|
||||||
};
|
};
|
||||||
|
|
||||||
function emitColorPropertyUpdate(property, red, green, blue, group) {
|
function emitColorPropertyUpdate(property, red, green, blue, group) {
|
||||||
var data = {
|
var properties = {};
|
||||||
id: lastEntityID,
|
|
||||||
type: "update",
|
|
||||||
properties: {}
|
|
||||||
};
|
|
||||||
if (group) {
|
if (group) {
|
||||||
data.properties[group] = {};
|
properties[group] = {};
|
||||||
data.properties[group][property] = {
|
properties[group][property] = {
|
||||||
red: red,
|
red: red,
|
||||||
green: green,
|
green: green,
|
||||||
blue: blue,
|
blue: blue,
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
data.properties[property] = {
|
properties[property] = {
|
||||||
red: red,
|
red: red,
|
||||||
green: green,
|
green: green,
|
||||||
blue: blue,
|
blue: blue,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
EventBridge.emitWebEvent(JSON.stringify(data));
|
updateProperties(properties);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
function createEmitGroupColorPropertyUpdateFunction(group, property, elRed, elGreen, elBlue) {
|
function createEmitGroupColorPropertyUpdateFunction(group, property, elRed, elGreen, elBlue) {
|
||||||
return function() {
|
return function() {
|
||||||
var data = {
|
var properties = {};
|
||||||
id: lastEntityID,
|
properties[group] = {};
|
||||||
type: "update",
|
properties[group][property] = {
|
||||||
properties: {}
|
|
||||||
};
|
|
||||||
data.properties[group] = {};
|
|
||||||
|
|
||||||
data.properties[group][property] = {
|
|
||||||
red: elRed.value,
|
red: elRed.value,
|
||||||
green: elGreen.value,
|
green: elGreen.value,
|
||||||
blue: elBlue.value,
|
blue: elBlue.value,
|
||||||
};
|
};
|
||||||
EventBridge.emitWebEvent(JSON.stringify(data));
|
updateProperties(properties);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -277,18 +239,7 @@ function updateCheckedSubProperty(propertyName, propertyValue, subPropertyElemen
|
||||||
// We've unchecked, so remove
|
// We've unchecked, so remove
|
||||||
propertyValue = propertyValue.replace(subPropertyString + ",", "");
|
propertyValue = propertyValue.replace(subPropertyString + ",", "");
|
||||||
}
|
}
|
||||||
|
updateProperty(propertyName, propertyValue);
|
||||||
var _properties = {}
|
|
||||||
_properties[propertyName] = propertyValue;
|
|
||||||
|
|
||||||
EventBridge.emitWebEvent(
|
|
||||||
JSON.stringify({
|
|
||||||
id: lastEntityID,
|
|
||||||
type: "update",
|
|
||||||
properties: _properties
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function setUserDataFromEditor(noUpdate) {
|
function setUserDataFromEditor(noUpdate) {
|
||||||
|
@ -314,18 +265,11 @@ function setUserDataFromEditor(noUpdate) {
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
EventBridge.emitWebEvent(
|
updateProperty('userData', text);
|
||||||
JSON.stringify({
|
|
||||||
id: lastEntityID,
|
|
||||||
type: "update",
|
|
||||||
properties: {
|
|
||||||
userData: text
|
|
||||||
},
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function multiDataUpdater(groupName, updateKeyPair, userDataElement, defaults) {
|
function multiDataUpdater(groupName, updateKeyPair, userDataElement, defaults) {
|
||||||
var properties = {};
|
var properties = {};
|
||||||
var parsedData = {};
|
var parsedData = {};
|
||||||
|
@ -372,13 +316,7 @@ function multiDataUpdater(groupName, updateKeyPair, userDataElement, defaults) {
|
||||||
|
|
||||||
userDataElement.value = properties['userData'];
|
userDataElement.value = properties['userData'];
|
||||||
|
|
||||||
EventBridge.emitWebEvent(
|
updateProperties(properties);
|
||||||
JSON.stringify({
|
|
||||||
id: lastEntityID,
|
|
||||||
type: "update",
|
|
||||||
properties: properties,
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
function userDataChanger(groupName, keyName, values, userDataElement, defaultValue) {
|
function userDataChanger(groupName, keyName, values, userDataElement, defaultValue) {
|
||||||
var val = {}, def = {};
|
var val = {}, def = {};
|
||||||
|
@ -900,7 +838,6 @@ function loaded() {
|
||||||
elCloneable.checked = parsedUserData["grabbableKey"].cloneable;
|
elCloneable.checked = parsedUserData["grabbableKey"].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 = parsedUserData["grabbableKey"].cloneDynamic ? parsedUserData["grabbableKey"].cloneDynamic : properties.dynamic;
|
||||||
elDynamic.checked = elCloneable.checked ? false: properties.dynamic;
|
|
||||||
if (elCloneable.checked) {
|
if (elCloneable.checked) {
|
||||||
if ("cloneLifetime" in parsedUserData["grabbableKey"]) {
|
if ("cloneLifetime" in parsedUserData["grabbableKey"]) {
|
||||||
elCloneableLifetime.value = parsedUserData["grabbableKey"].cloneLifetime ? parsedUserData["grabbableKey"].cloneLifetime : 300;
|
elCloneableLifetime.value = parsedUserData["grabbableKey"].cloneLifetime ? parsedUserData["grabbableKey"].cloneLifetime : 300;
|
||||||
|
@ -1202,8 +1139,8 @@ function loaded() {
|
||||||
});
|
});
|
||||||
|
|
||||||
elGrabbable.addEventListener('change', function() {
|
elGrabbable.addEventListener('change', function() {
|
||||||
if(elCloneable.checked) {
|
if (elCloneable.checked) {
|
||||||
elGrabbable.checked = false;
|
elGrabbable.checked = false;
|
||||||
}
|
}
|
||||||
userDataChanger("grabbableKey", "grabbable", elGrabbable, elUserData, properties.dynamic);
|
userDataChanger("grabbableKey", "grabbable", elGrabbable, elUserData, properties.dynamic);
|
||||||
});
|
});
|
||||||
|
@ -1213,17 +1150,22 @@ function loaded() {
|
||||||
elCloneable.addEventListener('change', function (event) {
|
elCloneable.addEventListener('change', function (event) {
|
||||||
var checked = event.target.checked;
|
var checked = event.target.checked;
|
||||||
if (checked) {
|
if (checked) {
|
||||||
multiDataUpdater("grabbableKey",
|
multiDataUpdater("grabbableKey", {
|
||||||
{cloneLifetime: elCloneableLifetime, cloneLimit: elCloneableLimit, cloneDynamic: elCloneableDynamic, cloneable: event.target},
|
cloneLifetime: elCloneableLifetime,
|
||||||
elUserData, {});
|
cloneLimit: elCloneableLimit,
|
||||||
|
cloneDynamic: elCloneableDynamic,
|
||||||
|
cloneable: event.target,
|
||||||
|
grabbable: null
|
||||||
|
}, elUserData, {});
|
||||||
elCloneableGroup.style.display = "block";
|
elCloneableGroup.style.display = "block";
|
||||||
EventBridge.emitWebEvent(
|
updateProperty('dynamic', false);
|
||||||
'{"id":' + lastEntityID + ', "type":"update", "properties":{"dynamic":false, "grabbable": false}}'
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
multiDataUpdater("grabbableKey",
|
multiDataUpdater("grabbableKey", {
|
||||||
{cloneLifetime: null, cloneLimit: null, cloneDynamic: null, cloneable: false},
|
cloneLifetime: null,
|
||||||
elUserData, {});
|
cloneLimit: null,
|
||||||
|
cloneDynamic: null,
|
||||||
|
cloneable: false
|
||||||
|
}, elUserData, {});
|
||||||
elCloneableGroup.style.display = "none";
|
elCloneableGroup.style.display = "none";
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1258,15 +1200,7 @@ function loaded() {
|
||||||
showUserDataTextArea();
|
showUserDataTextArea();
|
||||||
showNewJSONEditorButton();
|
showNewJSONEditorButton();
|
||||||
hideSaveUserDataButton();
|
hideSaveUserDataButton();
|
||||||
var properties = {};
|
updateProperty('userData', elUserData.value)
|
||||||
properties['userData'] = elUserData.value;
|
|
||||||
EventBridge.emitWebEvent(
|
|
||||||
JSON.stringify({
|
|
||||||
id: lastEntityID,
|
|
||||||
type: "update",
|
|
||||||
properties: properties,
|
|
||||||
})
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
elSaveUserData.addEventListener("click", function() {
|
elSaveUserData.addEventListener("click", function() {
|
||||||
|
|
Loading…
Reference in a new issue