diff --git a/scripts/system/html/js/draggableNumber.js b/scripts/system/html/js/draggableNumber.js index 7e5d9d524a..1f4bc21441 100644 --- a/scripts/system/html/js/draggableNumber.js +++ b/scripts/system/html/js/draggableNumber.js @@ -24,16 +24,28 @@ DraggableNumber.prototype = { if (event.target === this.elText) { this.initialMouseEvent = event; this.lastMouseEvent = event; - document.addEventListener("mousemove", this.onMouseMove); - document.addEventListener("mouseup", this.onMouseUp); + document.addEventListener("mousemove", this.onDocumentMouseMove); + document.addEventListener("mouseup", this.onDocumentMouseUp); } }, - mouseMove: function(event) { + mouseUp: function(event) { + if (event.target === this.elText && this.initialMouseEvent) { + let dx = event.clientX - this.initialMouseEvent.clientX; + if (dx <= DELTA_X_FOCUS_THRESHOLD) { + this.elInput.style.visibility = "visible"; + this.elText.style.visibility = "hidden"; + } + this.initialMouseEvent = null; + } + }, + + documentMouseMove: function(event) { if (this.lastMouseEvent) { + let initialValue = this.elInput.value; let dx = event.clientX - this.lastMouseEvent.clientX; - let inputChanged = dx !== 0; - if (inputChanged) { + let changeValue = dx !== 0; + if (changeValue) { while (dx !== 0) { if (dx > 0) { this.stepUp(); @@ -51,18 +63,10 @@ DraggableNumber.prototype = { } }, - mouseUp: function(event) { - if (this.initialMouseEvent) { - let dx = event.clientX - this.initialMouseEvent.clientX; - if (dx <= DELTA_X_FOCUS_THRESHOLD) { - this.elInput.style.visibility = "visible"; - this.elText.style.visibility = "hidden"; - } - this.initialMouseEvent = null; - this.lastMouseEvent = null; - document.removeEventListener("mousemove", this.onMouseMove); - document.removeEventListener("mouseup", this.onMouseUp); - } + documentMouseUp: function(event) { + this.lastMouseEvent = null; + document.removeEventListener("mousemove", this.onDocumentMouseMove); + document.removeEventListener("mouseup", this.onDocumentMouseUp); }, stepUp: function() { @@ -103,8 +107,9 @@ DraggableNumber.prototype = { initialize: function() { this.onMouseDown = this.mouseDown.bind(this); - this.onMouseMove = this.mouseMove.bind(this); this.onMouseUp = this.mouseUp.bind(this); + this.onDocumentMouseMove = this.documentMouseMove.bind(this); + this.onDocumentMouseUp = this.documentMouseUp.bind(this); this.onStepUp = this.stepUp.bind(this); this.onStepDown = this.stepDown.bind(this); this.onInputChange = this.inputChange.bind(this); @@ -118,6 +123,7 @@ DraggableNumber.prototype = { this.elText.innerText = " "; this.elText.style.visibility = "visible"; this.elText.addEventListener("mousedown", this.onMouseDown); + this.elText.addEventListener("mouseup", this.onMouseUp); this.elLeftArrow = document.createElement('span'); this.elRightArrow = document.createElement('span'); diff --git a/scripts/system/html/js/entityProperties.js b/scripts/system/html/js/entityProperties.js index a9233f0dce..ae5748cbc8 100644 --- a/scripts/system/html/js/entityProperties.js +++ b/scripts/system/html/js/entityProperties.js @@ -1288,24 +1288,36 @@ const GROUPS = [ { label: "Angular Damping", type: "number", + min: 0, + max: 1, + step: 0.01, decimals: 4, propertyID: "angularDamping", }, { label: "Bounciness", type: "number", + min: 0, + max: 1, + step: 0.01, decimals: 4, propertyID: "restitution", }, { label: "Friction", type: "number", + min: 0, + max: 10, + step: 0.1, decimals: 4, propertyID: "friction", }, { label: "Density", type: "number", + min: 100, + max: 10000, + step: 1, decimals: 4, propertyID: "density", }, @@ -1314,6 +1326,7 @@ const GROUPS = [ type: "vec3", vec3Type: "xyz", subLabels: [ "x", "y", "z" ], + decimals: 4, unit: "m/s2", propertyID: "gravity", }, @@ -2145,28 +2158,28 @@ function createProperty(propertyData, propertyElementID, propertyName, propertyI break; } case 'number': { - property.elInput = createNumberProperty(property, elProperty); + property.elNumber = createNumberProperty(property, elProperty); break; } case 'vec3': { let elVec3 = createVec3Property(property, elProperty); - property.elInputX = elVec3[VECTOR_ELEMENTS.X_INPUT]; - property.elInputY = elVec3[VECTOR_ELEMENTS.Y_INPUT]; - property.elInputZ = elVec3[VECTOR_ELEMENTS.Z_INPUT]; + property.elNumberX = elVec3[VECTOR_ELEMENTS.X_NUMBER]; + property.elNumberY = elVec3[VECTOR_ELEMENTS.Y_NUMBER]; + property.elNumberZ = elVec3[VECTOR_ELEMENTS.Z_NUMBER]; break; } case 'vec2': { let elVec2 = createVec2Property(property, elProperty); - property.elInputX = elVec2[VECTOR_ELEMENTS.X_INPUT]; - property.elInputY = elVec2[VECTOR_ELEMENTS.Y_INPUT]; + property.elNumberX = elVec2[VECTOR_ELEMENTS.X_NUMBER]; + property.elNumberY = elVec2[VECTOR_ELEMENTS.Y_NUMBER]; break; } case 'color': { let elColor = createColorProperty(property, elProperty); property.elColorPicker = elColor[COLOR_ELEMENTS.COLOR_PICKER]; - property.elInputR = elColor[COLOR_ELEMENTS.RED_INPUT]; - property.elInputG = elColor[COLOR_ELEMENTS.GREEN_INPUT]; - property.elInputB = elColor[COLOR_ELEMENTS.BLUE_INPUT]; + property.elNumberR = elColor[COLOR_ELEMENTS.RED_NUMBER]; + property.elNumberG = elColor[COLOR_ELEMENTS.GREEN_NUMBER]; + property.elNumberB = elColor[COLOR_ELEMENTS.BLUE_NUMBER]; break; } case 'dropdown': { @@ -2724,85 +2737,6 @@ function showParentMaterialNameBox(number, elNumber, elString) { } } -function createProperty(propertyData, propertyElementID, propertyName, propertyID, elProperty) { - let property = { - data: propertyData, - elementID: propertyElementID, - name: propertyName, - elProperty: elProperty, - }; - let propertyType = propertyData.type; - - switch (propertyType) { - case 'string': { - property.elInput = createStringProperty(property, elProperty); - break; - } - case 'bool': { - property.elInput = createBoolProperty(property, elProperty); - break; - } - case 'number': { - property.elNumber = createNumberProperty(property, elProperty); - break; - } - case 'vec3': { - let elVec3 = createVec3Property(property, elProperty); - property.elNumberX = elVec3[VECTOR_ELEMENTS.X_NUMBER]; - property.elNumberY = elVec3[VECTOR_ELEMENTS.Y_NUMBER]; - property.elNumberZ = elVec3[VECTOR_ELEMENTS.Z_NUMBER]; - break; - } - case 'vec2': { - let elVec2 = createVec2Property(property, elProperty); - property.elNumberX = elVec2[VECTOR_ELEMENTS.X_NUMBER]; - property.elNumberY = elVec2[VECTOR_ELEMENTS.Y_NUMBER]; - break; - } - case 'color': { - let elColor = createColorProperty(property, elProperty); - property.elColorPicker = elColor[COLOR_ELEMENTS.COLOR_PICKER]; - property.elNumberR = elColor[COLOR_ELEMENTS.RED_NUMBER]; - property.elNumberG = elColor[COLOR_ELEMENTS.GREEN_NUMBER]; - property.elNumberB = elColor[COLOR_ELEMENTS.BLUE_NUMBER]; - break; - } - case 'dropdown': { - property.elInput = createDropdownProperty(property, propertyID, elProperty); - break; - } - case 'textarea': { - property.elInput = createTextareaProperty(property, elProperty); - break; - } - case 'icon': { - property.elSpan = createIconProperty(property, elProperty); - break; - } - case 'texture': { - let elTexture = createTextureProperty(property, elProperty); - property.elImage = elTexture[TEXTURE_ELEMENTS.IMAGE]; - property.elInput = elTexture[TEXTURE_ELEMENTS.TEXT_INPUT]; - break; - } - case 'buttons': { - property.elProperty = createButtonsProperty(property, elProperty); - break; - } - case 'placeholder': - case 'sub-header': { - break; - } - default: { - console.log("EntityProperties - Unknown property type " + - propertyType + " set to property " + propertyID); - break; - } - } - - return property; -} - function loaded() { openEventBridge(function() {