From c283c062c1e8f6bf05c62d642713558e6a90d715 Mon Sep 17 00:00:00 2001
From: Thijs Wenker <me@thoys.nl>
Date: Fri, 12 Apr 2019 19:23:15 +0200
Subject: [PATCH] CR changes

---
 scripts/system/html/css/edit-style.css     |   8 +-
 scripts/system/html/js/draggableNumber.js  |  18 ++-
 scripts/system/html/js/entityProperties.js | 123 ++++++++++++---------
 3 files changed, 84 insertions(+), 65 deletions(-)

diff --git a/scripts/system/html/css/edit-style.css b/scripts/system/html/css/edit-style.css
index f8247a24d5..470e57ad6d 100644
--- a/scripts/system/html/css/edit-style.css
+++ b/scripts/system/html/css/edit-style.css
@@ -272,7 +272,9 @@ dl>dt.multi-diff:not(:focus) + span.multi-diff {
     z-index: 2;
     top: 7.5px;
     left: 20px;
-    width: 50px;
+    max-width: 50px;
+    min-width: 10px;
+    width: 50%;
     height: 13px;
     background-image: linear-gradient(transparent 0%, transparent 10%, #afafaf 10%, #afafaf 20%, transparent 20%, transparent 45%, #afafaf 45%, #afafaf 55%, transparent 55%, transparent 80%, #afafaf 80%, #afafaf 90%, transparent 90%, transparent 100%);
     background-repeat: no-repeat;
@@ -478,10 +480,10 @@ input[type=checkbox]:checked + label:hover {
     background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEySURBVDhPnZLPSsNAEMa/XVPBCE0RhNy0OarP4Av4AD6JB0GwVBA8efBBxHsgh4CQswcRoUIpiIpVAm3zZ5M4szFSbQPBH3xkJvNNZskOer2eLIriKM/ze1JOcS1UHmdZduF5ngEKjr/fN4Z6+oKerwA2gxC4HAFPEWVLsAzgZAvYt3Q6Enw6jg7uBAaTFMNwhpnKdbXCkAJdy8ROu4XrXW2HTJIErHcFDD6nC02Mom8PwymeE2gvS0ZRBBaTlsOXEmdlrfLLOI7Bakrl/zWxCT8T/904f9QW/b06qtrCUdtFCqdjYs2Q2jAPX8c2XQd7Kr/wfV8vwIPs4Ga1ixe5Xrr/YFLTYfKIvWzM6ZtwXZdX7lxXG0L+sxXHcW5t254opRzawQ0S72+dPmjTroIgOP0CQSMt5LDn1T8AAAAASUVORK5CYII=);
 }
 input.multi-diff[type=checkbox] + label {
-    background-image: url(data:image/png;base64,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)
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFbSURBVDhPY2xoaGD68+dPMSMjY9L////VgTQjAw4AlH8PxLOPHj1azWxjY1MBVNsBFBfBpwkEgNKcQGwtJyfHyALkF4IE34gqM9zU9WT4wicG4mIA1l/fGIyOL2EQeP8EZEAiC5AQBUlcMQ5ieMXIwfDo9SeG73/+gRXDAAsTI4Pd9wdgTVAgw/Tv3z8GEP7Jwctw78M3DE0goPr6BoPludVgdTAM1wgCv//9B9PIQOPNDYaAGxtRNIEw03+gYhDGBtSBNgVc3wiWR8dM//4DTQBidKD++jqD//X1YDlsGMWpMKD26jqD79V1GM5DxihOZQWGntqrawy+V9ZiOA0dw21k/f6JwerzHQbvS2swTMeGGfPz8l8BLRP9KizDwP0WHk+EwGum/3//94M8y/nmEdZAwIb//vs7g/nk6ZPHzE3NvwITrxLDfwYhIAamZpz4PcM/hslXrl6pBwAmfz5iaAlAuAAAAABJRU5ErkJggg==);
 }
 input.multi-diff[type=checkbox] + label:hover {
-    background-image: url(data:image/png;base64,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)
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFPSURBVDhPjZJBSwJBHMXfrG6rWEkl1MFDGOihDn2JIIrqc3QJunbyFhUkRieD+hYepWteuxctXiJ1Q5xmdmZ3bWZTUHezfvAu/3lv3n+HRblcTrbb7fN+v/8eBMFgFpxz13Gcu3q9bqHb7V4M5/9GhatE3cIsy0o99YBKC3jliCWbBK43gK0MoDI9otfTB/vPBC9Uwu4xMC8IzSOSBsFxIYNqMTGcAIYQAlodD3j5/IqENIc5gqt1P/SNZKhaXR0a5E/5BEcrwH1xEHrGZbiuC604DpZ81AoiPJ/WROM4e4sSt3kaaRopNrg7z1FZdSLmcU2saqrX20lTXC5/RFabFmk2m+GLnBnbWJMOThJv4SV/QRqNBjNNM9UiGeQHdDiejZSSG5TSG71zjnVivyVOKlNLlEqlx+xCds7zvU31G6Z938dvEq4QjLMH27ZPvwHFVYQr3h7uHwAAAABJRU5ErkJggg==);
 }
 
 .rgb.fstuple .color-picker.multi-diff:after {
diff --git a/scripts/system/html/js/draggableNumber.js b/scripts/system/html/js/draggableNumber.js
index b09723a173..d76874d4d9 100644
--- a/scripts/system/html/js/draggableNumber.js
+++ b/scripts/system/html/js/draggableNumber.js
@@ -72,21 +72,17 @@ DraggableNumber.prototype = {
             this.lastMouseEvent = event;
         }
         if (this.dragging && this.lastMouseEvent) {
-            let changeDelta = event.clientX - this.lastMouseEvent.clientX;
-            if (changeDelta !== 0) {
+            let dragDelta = event.clientX - this.lastMouseEvent.clientX;
+            if (dragDelta !== 0) {
                 if (this.multiDiffModeEnabled) {
                     if (this.multiDiffDragFunction) {
-                        this.multiDiffDragFunction(changeDelta * this.step);
+                        this.multiDiffDragFunction(dragDelta * this.step);
                     }
                 } else {
-                    while (changeDelta !== 0) {
-                        if (changeDelta > 0) {
-                            this.elInput.stepUp();
-                            --changeDelta;
-                        } else {
-                            this.elInput.stepDown();
-                            ++changeDelta;
-                        }
+                    if (dragDelta > 0) {
+                        this.elInput.stepUp(dragDelta);
+                    } else {
+                        this.elInput.stepDown(-dragDelta);
                     }
                     this.inputChange();
                     if (this.valueChangeFunction) {
diff --git a/scripts/system/html/js/entityProperties.js b/scripts/system/html/js/entityProperties.js
index 1dba7bb861..6a93a84dca 100644
--- a/scripts/system/html/js/entityProperties.js
+++ b/scripts/system/html/js/entityProperties.js
@@ -14,21 +14,28 @@ const DEGREES_TO_RADIANS = Math.PI / 180.0;
 
 const NO_SELECTION = ",";
 
-const PROPERTY_SPACE_MODE = {
+const PROPERTY_SPACE_MODE = Object.freeze({
     ALL: 0,
     LOCAL: 1,
     WORLD: 2
-};
+});
+
+const PROPERTY_SELECTION_VISIBILITY = Object.freeze({
+    SINGLE_SELECTION: 1,
+    MULTIPLE_SELECTIONS: 2,
+    MULTI_DIFF_SELECTIONS: 4,
+    ANY_SELECTIONS: 7, /* SINGLE_SELECTION | MULTIPLE_SELECTIONS | MULTI_DIFF_SELECTIONS */
+});
 
 // Multiple-selection behavior
-const PROPERTY_MULTI_DISPLAY_MODE = {
+const PROPERTY_MULTI_DISPLAY_MODE = Object.freeze({
     DEFAULT: 0,
     /**
      * Comma separated values
      * Limited for properties with type "string" or "textarea" and readOnly enabled
      */
     COMMA_SEPARATED_VALUES: 1,
-};
+});
 
 const GROUPS = [
     {
@@ -719,6 +726,7 @@ const GROUPS = [
                 type: "dynamic-multiselect",
                 propertyUpdate: materialTargetPropertyUpdate,
                 propertyID: "parentMaterialName",
+                selectionVisibility: PROPERTY_SELECTION_VISIBILITY.SINGLE_SELECTION,
             },
             {
                 label: "Priority",
@@ -1351,6 +1359,7 @@ const GROUPS = [
                 type: "placeholder",
                 indentedLabel: true,
                 propertyID: "serverScriptStatus",
+                selectionVisibility: PROPERTY_SELECTION_VISIBILITY.SINGLE_SELECTION,
             },
             {
                 label: "Lifetime",
@@ -1604,7 +1613,6 @@ let createAppTooltip = new CreateAppTooltip();
 let currentSpaceMode = PROPERTY_SPACE_MODE.LOCAL;
 
 
-
 // mergeDeep function from https://stackoverflow.com/a/34749873
 /**
  * Simple object check.
@@ -1678,6 +1686,10 @@ function createElementFromHTML(htmlString) {
     return elTemplate.content.firstChild;
 }
 
+function isFlagSet(value, flag) {
+    return (value & flag) === flag;
+}
+
 /**
  * GENERAL PROPERTY/GROUP FUNCTIONS
  */
@@ -1759,8 +1771,11 @@ function disableProperties() {
 }
 
 function showPropertyElement(propertyID, show) {
-    let elProperty = properties[propertyID].elContainer;
-    elProperty.style.display = show ? "" : "none";
+    setPropertyVisibility(properties[propertyID], show);
+}
+
+function setPropertyVisibility(property, visible) {
+    property.elContainer.style.display = visible ? null : "none";
 }
 
 function resetProperties() {
@@ -2001,9 +2016,9 @@ function getDetailedNumberMPVDiff(multiplePropertyValue, propertyData) {
     });
     let keys = [...uniqueKeys];
 
-    let subPropertyDiff = {};
+    let childPropertyDiff = {};
     Object.entries(detailedValues).forEach(function([key, value]) {
-        subPropertyDiff[key] = [...new Set(value)].length > 1;
+        childPropertyDiff[key] = [...new Set(value)].length > 1;
     });
 
     let averagePerSubProperty = {};
@@ -2014,12 +2029,12 @@ function getDetailedNumberMPVDiff(multiplePropertyValue, propertyData) {
 
     return {
         keys,
-        subPropertyDiff,
+        childPropertyDiff,
         averagePerSubProperty
     };
 }
 
-function getDetailedSubPropertyMVPDiff(multiplePropertyValue, subPropertyName) {
+function getDetailedSubPropertyMPVDiff(multiplePropertyValue, subPropertyName) {
     let isChecked = false;
     let checkedValues = multiplePropertyValue.values.map((value) => value.split(",").includes(subPropertyName));
     let isMultiDiff = !checkedValues.every(value => value === checkedValues[0]);
@@ -2171,7 +2186,7 @@ function createEmitNumberPropertyUpdateFunction(property) {
     };
 }
 
-function createEmitNumberSubPropertyUpdateFunction(property, subProperty) {
+function createEmitNumberChildPropertyUpdateFunction(property, childProperty) {
     return function() {
         let propertyMultiValue = getMultiplePropertyValue(property.name);
         let value = parseFloat(applyOutputNumberPropertyModifiers(parseFloat(this.value), property.data));
@@ -2184,7 +2199,7 @@ function createEmitNumberSubPropertyUpdateFunction(property, subProperty) {
                 let entityID = selectedEntityIDsArray[i];
 
                 let propertyObject = propertyMultiValue.values[i];
-                propertyObject[subProperty] = value;
+                propertyObject[childProperty] = value;
 
                 let updateObject = createPropertyUpdateObject(property.name, propertyObject);
                 updateObjects.push({
@@ -2200,10 +2215,9 @@ function createEmitNumberSubPropertyUpdateFunction(property, subProperty) {
             // callback until drag is complete (additional update sent via dragEnd callback)
             let onlyUpdateEntity = properties[property.name] && properties[property.name].dragging === true;
             updateMultiDiffProperties(updateObjects, onlyUpdateEntity);
-            console.log('updateMultiDiffProperties');
         } else {
             let propertyValue = propertyMultiValue.value;
-            propertyValue[subProperty] = value;
+            propertyValue[childProperty] = value;
             updateProperty(property.name, propertyValue, property.isParticleProperty);
         }
     };
@@ -2386,11 +2400,11 @@ function updateNumberMinMax(property) {
 /**
  *
  * @param {object} property - property update on drag
- * @param {string} [subProperty] - subProperty to update on drag (e.g. enter 'x' to just update position.x)
+ * @param {string} [childProperty] - childProperty to update on drag (e.g. enter 'x' to just update position.x)
  * @returns {Function}
  */
-function createMultiDiffDragFunction(property, subProperty) {
-    return function(changedDelta) {
+function createMultiDiffDragFunction(property, childProperty) {
+    return function(dragDelta) {
         let propertyMultiValue = getMultiplePropertyValue(property.name);
         if (!propertyMultiValue.isMultiDiffValue) {
             console.log("setMultiDiffDragFunction is only supposed to be called in MultiDiff mode.");
@@ -2399,7 +2413,7 @@ function createMultiDiffDragFunction(property, subProperty) {
 
         let multiplier = property.data.multiplier !== undefined ? property.data.multiplier : 1;
 
-        let applyDelta = changedDelta * multiplier;
+        let applyDelta = dragDelta * multiplier;
 
         if (selectedEntityIDs.size !== propertyMultiValue.values.length) {
             console.log("selectedEntityIDs and propertyMultiValue got out of sync.");
@@ -2412,9 +2426,9 @@ function createMultiDiffDragFunction(property, subProperty) {
             let entityID = selectedEntityIDsArray[i];
 
             let updatedValue;
-            if (subProperty !== undefined) {
+            if (childProperty !== undefined) {
                 let objectToUpdate = propertyMultiValue.values[i];
-                objectToUpdate[subProperty] += applyDelta;
+                objectToUpdate[childProperty] += applyDelta;
                 updatedValue = objectToUpdate;
             } else {
                 updatedValue = propertyMultiValue.values[i] + applyDelta;
@@ -2492,10 +2506,10 @@ function createRectProperty(property, elProperty) {
     elWidthHeightRow.appendChild(elNumberWidth.elDiv);
     elWidthHeightRow.appendChild(elNumberHeight.elDiv);
 
-    elNumberX.setValueChangeFunction(createEmitNumberSubPropertyUpdateFunction(property, 'x'));
-    elNumberY.setValueChangeFunction(createEmitNumberSubPropertyUpdateFunction(property, 'y'));
-    elNumberWidth.setValueChangeFunction(createEmitNumberSubPropertyUpdateFunction(property, 'width'));
-    elNumberHeight.setValueChangeFunction(createEmitNumberSubPropertyUpdateFunction(property, 'height'));
+    elNumberX.setValueChangeFunction(createEmitNumberChildPropertyUpdateFunction(property, 'x'));
+    elNumberY.setValueChangeFunction(createEmitNumberChildPropertyUpdateFunction(property, 'y'));
+    elNumberWidth.setValueChangeFunction(createEmitNumberChildPropertyUpdateFunction(property, 'width'));
+    elNumberHeight.setValueChangeFunction(createEmitNumberChildPropertyUpdateFunction(property, 'height'));
 
     elNumberX.setMultiDiffDragFunction(createMultiDiffDragFunction(property, 'x'));
     elNumberY.setMultiDiffDragFunction(createMultiDiffDragFunction(property, 'y'));
@@ -2531,9 +2545,9 @@ function createVec3Property(property, elProperty) {
     elProperty.appendChild(elNumberY.elDiv);
     elProperty.appendChild(elNumberZ.elDiv);
 
-    elNumberX.setValueChangeFunction(createEmitNumberSubPropertyUpdateFunction(property, 'x'));
-    elNumberY.setValueChangeFunction(createEmitNumberSubPropertyUpdateFunction(property, 'y'));
-    elNumberZ.setValueChangeFunction(createEmitNumberSubPropertyUpdateFunction(property, 'z'));
+    elNumberX.setValueChangeFunction(createEmitNumberChildPropertyUpdateFunction(property, 'x'));
+    elNumberY.setValueChangeFunction(createEmitNumberChildPropertyUpdateFunction(property, 'y'));
+    elNumberZ.setValueChangeFunction(createEmitNumberChildPropertyUpdateFunction(property, 'z'));
 
     elNumberX.setMultiDiffDragFunction(createMultiDiffDragFunction(property, 'x'));
     elNumberY.setMultiDiffDragFunction(createMultiDiffDragFunction(property, 'y'));
@@ -2561,8 +2575,8 @@ function createVec2Property(property, elProperty) {
     elProperty.appendChild(elNumberX.elDiv);
     elProperty.appendChild(elNumberY.elDiv);
 
-    elNumberX.setValueChangeFunction(createEmitNumberSubPropertyUpdateFunction(property, 'x'));
-    elNumberY.setValueChangeFunction(createEmitNumberSubPropertyUpdateFunction(property, 'y'));
+    elNumberX.setValueChangeFunction(createEmitNumberChildPropertyUpdateFunction(property, 'x'));
+    elNumberY.setValueChangeFunction(createEmitNumberChildPropertyUpdateFunction(property, 'y'));
 
     elNumberX.setMultiDiffDragFunction(createMultiDiffDragFunction(property, 'x'));
     elNumberY.setMultiDiffDragFunction(createMultiDiffDragFunction(property, 'y'));
@@ -3619,7 +3633,7 @@ function applyOutputNumberPropertyModifiers(number, propertyData) {
     return roundAndFixNumber(number * multiplier, propertyData);
 }
 
-const isSetsEqual = (a, b) => a.size === b.size && [...a].every(value => b.has(value));
+const areSetsEqual = (a, b) => a.size === b.size && [...a].every(value => b.has(value));
 
 
 function handleEntitySelectionUpdate(selections, isPropertiesToolUpdate) {
@@ -3627,7 +3641,7 @@ function handleEntitySelectionUpdate(selections, isPropertiesToolUpdate) {
     currentSelections = selections;
     selectedEntityIDs = new Set(selections.map(selection => selection.id));
     const multipleSelections = currentSelections.length > 1;
-    const hasSelectedEntityChanged = !isSetsEqual(selectedEntityIDs, previouslySelectedEntityIDs);
+    const hasSelectedEntityChanged = !areSetsEqual(selectedEntityIDs, previouslySelectedEntityIDs);
 
     // FIXME: do we really want to save userData/materialData here instead of saving it on the blur event of the json editor?
     if (hasSelectedEntityChanged) {
@@ -3667,9 +3681,8 @@ function handleEntitySelectionUpdate(selections, isPropertiesToolUpdate) {
             // we will ignore the event.
             return;
         }
+
         if (hasSelectedEntityChanged) {
-            let elServerScriptStatusOuter = document.getElementById('div-property-serverScriptStatus');
-            elServerScriptStatusOuter.style.display = multipleSelections ? "none" : null;
             if (!multipleSelections) {
                 resetServerScriptStatus();
             }
@@ -3706,6 +3719,19 @@ function handleEntitySelectionUpdate(selections, isPropertiesToolUpdate) {
             let isMultiDiffValue = propertyMultiValue.isMultiDiffValue;
             let propertyValue = propertyMultiValue.value;
 
+            if (propertyData.selectionVisibility !== undefined) {
+                let visibility = propertyData.selectionVisibility;
+                let propertyVisible = true;
+                if (!multipleSelections) {
+                    propertyVisible = isFlagSet(visibility, PROPERTY_SELECTION_VISIBILITY.SINGLE_SELECTION);
+                } else if (isMultiDiffValue) {
+                    propertyVisible = isFlagSet(visibility, PROPERTY_SELECTION_VISIBILITY.MULTI_DIFF_SELECTIONS);
+                } else {
+                    propertyVisible = isFlagSet(visibility, PROPERTY_SELECTION_VISIBILITY.MULTIPLE_SELECTIONS);
+                }
+                setPropertyVisibility(property, propertyVisible);
+            }
+
             const isSubProperty = propertyData.subPropertyOf !== undefined;
             if (propertyValue === undefined && !isMultiDiffValue && !isSubProperty) {
                 return;
@@ -3752,7 +3778,7 @@ function handleEntitySelectionUpdate(selections, isPropertiesToolUpdate) {
                         let propertyValue = subPropertyMultiValue.value;
                         isMultiDiffValue = subPropertyMultiValue.isMultiDiffValue;
                         if (isMultiDiffValue) {
-                            let detailedSubProperty = getDetailedSubPropertyMVPDiff(subPropertyMultiValue, propertyName);
+                            let detailedSubProperty = getDetailedSubPropertyMPVDiff(subPropertyMultiValue, propertyName);
                             property.elInput.checked = detailedSubProperty.isChecked;
                             property.elInput.classList.toggle('multi-diff', detailedSubProperty.isMultiDiff);
                         } else {
@@ -3774,35 +3800,30 @@ function handleEntitySelectionUpdate(selections, isPropertiesToolUpdate) {
                     break;
                 }
                 case 'number': {
-                    if (isMultiDiffValue) {
-                        property.elInput.value = "";
-                        property.elInput.classList.add('multi-diff');
-                    } else {
-                        property.elInput.value = propertyValue;
-                        property.elInput.classList.remove('multi-diff');
-                    }
+                    property.elInput.value = isMultiDiffValue ? "" : propertyValue;
+                    property.elInput.classList.toggle('multi-diff', isMultiDiffValue);
                     break;
                 }
                 case 'number-draggable': {
                     let detailedNumberDiff = getDetailedNumberMPVDiff(propertyMultiValue, propertyData);
-                    property.elNumber.setValue(detailedNumberDiff.averagePerSubProperty[0], detailedNumberDiff.subPropertyDiff[0]);
+                    property.elNumber.setValue(detailedNumberDiff.averagePerSubProperty[0], detailedNumberDiff.childPropertyDiff[0]);
                     break;
                 }
                 case 'rect': {
                     let detailedNumberDiff = getDetailedNumberMPVDiff(propertyMultiValue, propertyData);
-                    property.elNumberX.setValue(detailedNumberDiff.averagePerSubProperty.x, detailedNumberDiff.subPropertyDiff.x);
-                    property.elNumberY.setValue(detailedNumberDiff.averagePerSubProperty.y, detailedNumberDiff.subPropertyDiff.y);
-                    property.elNumberWidth.setValue(detailedNumberDiff.averagePerSubProperty.width, detailedNumberDiff.subPropertyDiff.width);
-                    property.elNumberHeight.setValue(detailedNumberDiff.averagePerSubProperty.height, detailedNumberDiff.subPropertyDiff.height);
+                    property.elNumberX.setValue(detailedNumberDiff.averagePerSubProperty.x, detailedNumberDiff.childPropertyDiff.x);
+                    property.elNumberY.setValue(detailedNumberDiff.averagePerSubProperty.y, detailedNumberDiff.childPropertyDiff.y);
+                    property.elNumberWidth.setValue(detailedNumberDiff.averagePerSubProperty.width, detailedNumberDiff.childPropertyDiff.width);
+                    property.elNumberHeight.setValue(detailedNumberDiff.averagePerSubProperty.height, detailedNumberDiff.childPropertyDiff.height);
                     break;
                 }
                 case 'vec3':
                 case 'vec2': {
                     let detailedNumberDiff = getDetailedNumberMPVDiff(propertyMultiValue, propertyData);
-                    property.elNumberX.setValue(detailedNumberDiff.averagePerSubProperty.x, detailedNumberDiff.subPropertyDiff.x);
-                    property.elNumberY.setValue(detailedNumberDiff.averagePerSubProperty.y, detailedNumberDiff.subPropertyDiff.y);
+                    property.elNumberX.setValue(detailedNumberDiff.averagePerSubProperty.x, detailedNumberDiff.childPropertyDiff.x);
+                    property.elNumberY.setValue(detailedNumberDiff.averagePerSubProperty.y, detailedNumberDiff.childPropertyDiff.y);
                     if (property.elNumberZ !== undefined) {
-                        property.elNumberZ.setValue(detailedNumberDiff.averagePerSubProperty.z, detailedNumberDiff.subPropertyDiff.z);
+                        property.elNumberZ.setValue(detailedNumberDiff.averagePerSubProperty.z, detailedNumberDiff.childPropertyDiff.z);
                     }
                     break;
                 }
@@ -3848,7 +3869,7 @@ function handleEntitySelectionUpdate(selections, isPropertiesToolUpdate) {
                 }
                 case 'texture': {
                     property.elInput.value = isMultiDiffValue ? "" : propertyValue;
-                    property.elInput.classList.toggle('multi-diff');
+                    property.elInput.classList.toggle('multi-diff', isMultiDiffValue);
                     if (isMultiDiffValue) {
                         property.elInput.setMultipleValues();
                     } else {