From 1ce338d972712d6eea6fca00598750839b0fea45 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Thu, 24 Dec 2020 22:55:09 -0500 Subject: [PATCH 01/19] Support for "Rotate as the Next Clicked Surface" Support for "Rotate as the Next Clicked Surface" Add "surfaceNormal" in the returned data. --- scripts/system/controllers/controllerModules/inEditMode.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/system/controllers/controllerModules/inEditMode.js b/scripts/system/controllers/controllerModules/inEditMode.js index 5709b19efe..5bef8ec11a 100644 --- a/scripts/system/controllers/controllerModules/inEditMode.js +++ b/scripts/system/controllers/controllerModules/inEditMode.js @@ -2,6 +2,9 @@ // inEditMode.js // +// Copyright 2014 High Fidelity, Inc. +// Copyright 2020 Vircadia contributors. +// // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html @@ -80,7 +83,8 @@ Script.include("/~/system/libraries/utils.js"); Messages.sendLocalMessage(this.ENTITY_TOOL_UPDATES_CHANNEL, JSON.stringify({ method: "selectEntity", entityID: this.selectedTarget.objectID, - hand: hand + hand: hand, + surfaceNormal: this.selectedTarget.surfaceNormal })); } else if (this.selectedTarget.type === Picks.INTERSECTED_OVERLAY) { Messages.sendLocalMessage(this.ENTITY_TOOL_UPDATES_CHANNEL, JSON.stringify({ From 79b34ae54150635436a30531d3400ccf0b4d4c5f Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Thu, 24 Dec 2020 22:57:49 -0500 Subject: [PATCH 02/19] Add "Rotate as the Next Clicked Surface" Add "Rotate as the Next Clicked Surface" --- scripts/system/create/edit.js | 97 +++++++++++++++---- .../entitySelectionTool.js | 64 +++++++++++- 2 files changed, 140 insertions(+), 21 deletions(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index 9e94b68ba1..92a6206100 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -109,6 +109,8 @@ var entityIconOverlayManager = new EntityIconOverlayManager(["Light", "ParticleE }); var hmdMultiSelectMode = false; +var expectingRotateAsClickedSurface = false; +var keepSelectedOnNextClick = false; var cameraManager = new CameraManager(); @@ -1106,25 +1108,41 @@ function findClickedEntity(event) { } var result; - - if (iconResult.intersects) { - result = iconResult; - } else if (entityResult.intersects) { - result = entityResult; + if (expectingRotateAsClickedSurface) { + if (!SelectionManager.hasSelection() || !SelectionManager.hasUnlockedSelection()) { + audioFeedback.rejection(); + Window.notifyEditError("You have nothing selected, or the selection is locked."); + expectingRotateAsClickedSurface = false; + } else { + //Rotate Selection according the Surface Normal + selectionDisplay.rotateSelection(Quat.lookAt(Vec3.ZERO, Vec3.multiply(entityResult.surfaceNormal, -1), Vec3.UP)); + selectionManager._update(false, this); + pushCommandForSelections(); + expectingRotateAsClickedSurface = false; + audioFeedback.action(); + } + keepSelectedOnNextClick = true; + return null; } else { - return null; - } + if (iconResult.intersects) { + result = iconResult; + } else if (entityResult.intersects) { + result = entityResult; + } else { + return null; + } - if (!result.accurate) { - return null; - } + if (!result.accurate) { + return null; + } - var foundEntity = result.entityID; - return { - pickRay: pickRay, - entityID: foundEntity, - intersection: result.intersection - }; + var foundEntity = result.entityID; + return { + pickRay: pickRay, + entityID: foundEntity, + intersection: result.intersection + }; + } } // Handles selections on overlays while in edit mode by querying entities from @@ -1295,7 +1313,10 @@ function mouseClickEvent(event) { if (result === null || result === undefined) { if (!event.isShifted) { - selectionManager.clearSelections(this); + if (!keepSelectedOnNextClick) { + selectionManager.clearSelections(this); + } + keepSelectedOnNextClick = false; } return; } @@ -2052,6 +2073,26 @@ function gridToAvatarKey(value) { alignGridToAvatar(); } } +function rotateAsNextClickedSurfaceKey(value) { + if (value === 0) { // on release + rotateAsNextClickedSurface(); + } +} +function quickRotate90xKey(value) { + if (value === 0) { // on release + selectionDisplay.rotate90degreeSelection("X"); + } +} +function quickRotate90yKey(value) { + if (value === 0) { // on release + selectionDisplay.rotate90degreeSelection("Y"); + } +} +function quickRotate90zKey(value) { + if (value === 0) { // on release + selectionDisplay.rotate90degreeSelection("Z"); + } +} function recursiveAdd(newParentID, parentData) { if (parentData.children !== undefined) { var children = parentData.children; @@ -2819,6 +2860,10 @@ mapping.from([Controller.Hardware.Keyboard.J]).to(gridKey); mapping.from([Controller.Hardware.Keyboard.G]).to(viewGridKey); mapping.from([Controller.Hardware.Keyboard.H]).to(snapKey); mapping.from([Controller.Hardware.Keyboard.K]).to(gridToAvatarKey); +mapping.from([Controller.Hardware.Keyboard["0"]]).to(rotateAsNextClickedSurfaceKey); +mapping.from([Controller.Hardware.Keyboard["7"]]).to(quickRotate90xKey); +mapping.from([Controller.Hardware.Keyboard["8"]]).to(quickRotate90yKey); +mapping.from([Controller.Hardware.Keyboard["9"]]).to(quickRotate90zKey); mapping.from([Controller.Hardware.Keyboard.X]) .when([Controller.Hardware.Keyboard.Control]) .to(whenReleased(function() { selectionManager.cutSelectedEntities() })); @@ -2867,6 +2912,14 @@ keyUpEventFromUIWindow = function(keyUpEvent) { snapKey(pressedValue); } else if (keyUpEvent.keyCodeString === "K") { gridToAvatarKey(pressedValue); + } else if (keyUpEvent.keyCodeString === "0") { + rotateAsNextClickedSurfaceKey(pressedValue); + } else if (keyUpEvent.keyCodeString === "7") { + quickRotate90xKey(pressedValue); + } else if (keyUpEvent.keyCodeString === "8") { + quickRotate90yKey(pressedValue); + } else if (keyUpEvent.keyCodeString === "9") { + quickRotate90zKey(pressedValue); } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "X") { selectionManager.cutSelectedEntities(); } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "C") { @@ -3015,4 +3068,14 @@ function toggleGridVisibility() { } } +function rotateAsNextClickedSurface() { + if (!SelectionManager.hasSelection() || !SelectionManager.hasUnlockedSelection()) { + audioFeedback.rejection(); + Window.notifyEditError("You have nothing selected, or the selection is locked."); + expectingRotateAsClickedSurface = false; + } else { + expectingRotateAsClickedSurface = true; + } +} + }()); // END LOCAL_SCOPE diff --git a/scripts/system/create/entitySelectionTool/entitySelectionTool.js b/scripts/system/create/entitySelectionTool/entitySelectionTool.js index f9a30ef6a5..8941ff24f2 100644 --- a/scripts/system/create/entitySelectionTool/entitySelectionTool.js +++ b/scripts/system/create/entitySelectionTool/entitySelectionTool.js @@ -103,10 +103,25 @@ SelectionManager = (function() { if (wantDebug) { print("setting selection to " + messageParsed.entityID); } - if (hmdMultiSelectMode) { - that.addEntity(messageParsed.entityID, true, that); + if (expectingRotateAsClickedSurface) { + if (!SelectionManager.hasSelection() || !SelectionManager.hasUnlockedSelection()) { + audioFeedback.rejection(); + Window.notifyEditError("You have nothing selected, or the selection is locked."); + expectingRotateAsClickedSurface = false; + } else { + //Rotate Selection according the Surface Normal + selectionDisplay.rotateSelection(Quat.lookAt(Vec3.ZERO, Vec3.multiply(messageParsed.surfaceNormal, -1), Vec3.UP)); + that._update(false, this); + pushCommandForSelections(); + expectingRotateAsClickedSurface = false; + audioFeedback.action(); + } } else { - that.setSelections([messageParsed.entityID], that); + if (hmdMultiSelectMode) { + that.addEntity(messageParsed.entityID, true, that); + } else { + that.setSelections([messageParsed.entityID], that); + } } } } else if (messageParsed.method === "clearSelection") { @@ -2377,7 +2392,48 @@ SelectionDisplay = (function() { } debugPickPlaneHits = []; }; - + + that.rotateSelection = function(rotation) { + SelectionManager.saveProperties(); + if (SelectionManager.selections.length === 1) { + SelectionManager.savedProperties[SelectionManager.selections[0]].rotation = Quat.IDENTITY; + } + updateSelectionsRotation(rotation, SelectionManager.worldPosition); + }; + + that.rotate90degreeSelection = function(axis) { + //axis is a string and expect "X", "Y" or "Z" + if (!SelectionManager.hasSelection() || !SelectionManager.hasUnlockedSelection()) { + audioFeedback.rejection(); + Window.notifyEditError("You have nothing selected, or the selection is locked."); + } else { + var currentRotation, axisRotation; + SelectionManager.saveProperties(); + if (selectionManager.selections.length === 1 && spaceMode === SPACE_LOCAL) { + currentRotation = SelectionManager.localRotation; + }else{ + currentRotation = SelectionManager.worldRotation; + } + switch(axis) { + case "X": + axisRotation = Quat.angleAxis(90.0, Quat.getRight(currentRotation)); + break; + case "Y": + axisRotation = Quat.angleAxis(90.0, Quat.getUp(currentRotation)); + break; + case "Z": + axisRotation = Quat.angleAxis(90.0, Quat.getForward(currentRotation)); + break; + default: + return; + } + updateSelectionsRotation(axisRotation, SelectionManager.worldPosition); + SelectionManager._update(false, this); + pushCommandForSelections(); + audioFeedback.action(); + } + }; + function addUnlitMaterialOnToolEntity(toolEntityParentID) { var toolEntitiesMaterialData = "{\n \"materialVersion\": 1,\n \"materials\": [\n {\n \"name\": \"0\",\n \"defaultFallthrough\": true,\n \"unlit\": true,\n \"model\": \"hifi_pbr\"\n }\n ]\n}"; var materialEntityID = Entities.addEntity({ From adf4249b3225f63a271475dc84b0ba33b7e2485c Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Thu, 24 Dec 2020 22:59:30 -0500 Subject: [PATCH 03/19] Add "action" sound. Add "action" sound. --- scripts/system/create/audioFeedback/audioFeedback.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/scripts/system/create/audioFeedback/audioFeedback.js b/scripts/system/create/audioFeedback/audioFeedback.js index f1900d5716..67af004844 100644 --- a/scripts/system/create/audioFeedback/audioFeedback.js +++ b/scripts/system/create/audioFeedback/audioFeedback.js @@ -15,6 +15,7 @@ audioFeedback = (function() { var confirmationSound = SoundCache.getSound(Script.resolvePath("./sounds/confirmation.mp3")); var rejectionSound = SoundCache.getSound(Script.resolvePath("./sounds/rejection.mp3")); + var actionSound = SoundCache.getSound(Script.resolvePath("./sounds/action.mp3")); that.confirmation = function() { //Play a confirmation sound var injector = Audio.playSound(confirmationSound, { @@ -30,5 +31,12 @@ audioFeedback = (function() { }); } + that.action = function() { //Play an action sound + var injector = Audio.playSound(actionSound, { + "volume": 0.3, + "localOnly": true + }); + } + return that; })(); From eeecf4861c22b0ba4d1727a94f12a057eedd11d7 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Thu, 24 Dec 2020 23:00:09 -0500 Subject: [PATCH 04/19] Add "action" sound. Add "action" sound. --- .../create/audioFeedback/sounds/action.mp3 | Bin 0 -> 10448 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 scripts/system/create/audioFeedback/sounds/action.mp3 diff --git a/scripts/system/create/audioFeedback/sounds/action.mp3 b/scripts/system/create/audioFeedback/sounds/action.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..fd004847b05da3ce5db46eb29f4df7dc08148308 GIT binary patch literal 10448 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 literal 0 HcmV?d00001 From c8a0ebdcd66c6408882cacbf0200b01c07ed3e80 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Thu, 24 Dec 2020 23:02:57 -0500 Subject: [PATCH 05/19] Add "Rotate As Next Clicked Surface" Add "Rotate As Next Clicked Surface" Add also "Rotate 90 degree on X axis", "Rotate 90 degree on Z axis" and "Rotate 90 degree on Z axis" --- scripts/system/create/entityList/entityList.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/scripts/system/create/entityList/entityList.js b/scripts/system/create/entityList/entityList.js index a4d4decedb..5119d7d3da 100644 --- a/scripts/system/create/entityList/entityList.js +++ b/scripts/system/create/entityList/entityList.js @@ -383,6 +383,14 @@ EntityListTool = function(shouldUseEditTabletApp) { SelectionManager.selectTopFamily(); } else if (data.type === 'teleportToEntity') { SelectionManager.teleportToEntity(); + } else if (data.type === 'rotateAsTheNextClickedSurface') { + rotateAsNextClickedSurface(); + } else if (data.type === 'quickRotate90x') { + selectionDisplay.rotate90degreeSelection("X"); + } else if (data.type === 'quickRotate90y') { + selectionDisplay.rotate90degreeSelection("Y"); + } else if (data.type === 'quickRotate90z') { + selectionDisplay.rotate90degreeSelection("Z"); } else if (data.type === 'moveEntitySelectionToAvatar') { SelectionManager.moveEntitiesSelectionToAvatar(); } else if (data.type === 'loadConfigSetting') { From cd0293d635b39772d9d51b0873edd00ad804cf8e Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Thu, 24 Dec 2020 23:03:55 -0500 Subject: [PATCH 06/19] Add "Rotate As Next Clicked Surface" Add "Rotate As Next Clicked Surface" Add also "Rotate 90 degree on X axis", "Rotate 90 degree on Z axis" and "Rotate 90 degree on Z axis" --- .../create/entityList/html/entityList.html | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/scripts/system/create/entityList/html/entityList.html b/scripts/system/create/entityList/html/entityList.html index 9817f9ddf9..99dc213cf1 100644 --- a/scripts/system/create/entityList/html/entityList.html +++ b/scripts/system/create/entityList/html/entityList.html @@ -156,6 +156,31 @@ <div class = "menu-item-shortcut"></div> </div> </button> + <div class="menu-separator"></div> + <button class="menu-button" id="rotateAsTheNextClickedSurface" > + <div class = "menu-item"> + <div class = "menu-item-caption">Rotate As The Next Clicked Surface</div> + <div class = "menu-item-shortcut">0</div> + </div> + </button> + <button class="menu-button" id="quickRotate90x" > + <div class = "menu-item"> + <div class = "menu-item-caption">Rotate 90° on X axis</div> + <div class = "menu-item-shortcut">7</div> + </div> + </button> + <button class="menu-button" id="quickRotate90y" > + <div class = "menu-item"> + <div class = "menu-item-caption">Rotate 90° on Y axis</div> + <div class = "menu-item-shortcut">8</div> + </div> + </button> + <button class="menu-button" id="quickRotate90z" > + <div class = "menu-item"> + <div class = "menu-item-caption">Rotate 90° on Z axis</div> + <div class = "menu-item-shortcut">9</div> + </div> + </button> </div> <div class="entity-list-menu" id="selection-menu" > <button class="menu-button" id="selectall" > From ec55884daec399782ffd83172fb98a0b8ea3f9af Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Thu, 24 Dec 2020 23:05:06 -0500 Subject: [PATCH 07/19] Add "Rotate As Next Clicked Surface" Add "Rotate As Next Clicked Surface" Add also "Rotate 90 degree on X axis", "Rotate 90 degree on Z axis" and "Rotate 90 degree on Z axis" --- .../create/entityList/html/js/entityList.js | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/scripts/system/create/entityList/html/js/entityList.js b/scripts/system/create/entityList/html/js/entityList.js index 9ba258b801..c610795bc9 100644 --- a/scripts/system/create/entityList/html/js/entityList.js +++ b/scripts/system/create/entityList/html/js/entityList.js @@ -238,6 +238,10 @@ let elEntityTable, elParent, elUnparent, elDelete, + elRotateAsTheNextClickedSurface, + elQuickRotate90x, + elQuickRotate90y, + elQuickRotate90z, elMoveEntitySelectionToAvatar, elSelectAll, elSelectInverse, @@ -320,6 +324,10 @@ function loaded() { elParent = document.getElementById("parent"); elUnparent = document.getElementById("unparent"); elDelete = document.getElementById("delete"); + elRotateAsTheNextClickedSurface = document.getElementById("rotateAsTheNextClickedSurface"); + elQuickRotate90x = document.getElementById("quickRotate90x"); + elQuickRotate90y = document.getElementById("quickRotate90y"); + elQuickRotate90z = document.getElementById("quickRotate90z"); elMoveEntitySelectionToAvatar = document.getElementById("moveEntitySelectionToAvatar"); elSelectAll = document.getElementById("selectall"); elSelectInverse = document.getElementById("selectinverse"); @@ -430,6 +438,22 @@ function loaded() { EventBridge.emitWebEvent(JSON.stringify({ type: "delete" })); closeAllEntityListMenu(); }; + elRotateAsTheNextClickedSurface.onclick = function() { + EventBridge.emitWebEvent(JSON.stringify({ type: "rotateAsTheNextClickedSurface" })); + closeAllEntityListMenu(); + }; + elQuickRotate90x.onclick = function() { + EventBridge.emitWebEvent(JSON.stringify({ type: "quickRotate90x" })); + closeAllEntityListMenu(); + }; + elQuickRotate90y.onclick = function() { + EventBridge.emitWebEvent(JSON.stringify({ type: "quickRotate90y" })); + closeAllEntityListMenu(); + }; + elQuickRotate90z.onclick = function() { + EventBridge.emitWebEvent(JSON.stringify({ type: "quickRotate90z" })); + closeAllEntityListMenu(); + }; elMoveEntitySelectionToAvatar.onclick = function() { EventBridge.emitWebEvent(JSON.stringify({ type: "moveEntitySelectionToAvatar" })); closeAllEntityListMenu(); From 0db2d6f0415b621621ef4cbc39ebe6af86af00b0 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Tue, 29 Dec 2020 22:19:11 -0500 Subject: [PATCH 08/19] Minor Code Adjustments Minor Code Adjustments --- scripts/system/create/edit.js | 18 ++++++++--------- .../entitySelectionTool.js | 20 +++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index 92a6206100..23292cd85c 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -1110,16 +1110,16 @@ function findClickedEntity(event) { var result; if (expectingRotateAsClickedSurface) { if (!SelectionManager.hasSelection() || !SelectionManager.hasUnlockedSelection()) { - audioFeedback.rejection(); - Window.notifyEditError("You have nothing selected, or the selection is locked."); - expectingRotateAsClickedSurface = false; + audioFeedback.rejection(); + Window.notifyEditError("You have nothing selected, or the selection is locked."); + expectingRotateAsClickedSurface = false; } else { - //Rotate Selection according the Surface Normal - selectionDisplay.rotateSelection(Quat.lookAt(Vec3.ZERO, Vec3.multiply(entityResult.surfaceNormal, -1), Vec3.UP)); - selectionManager._update(false, this); - pushCommandForSelections(); - expectingRotateAsClickedSurface = false; - audioFeedback.action(); + //Rotate Selection according the Surface Normal + selectionDisplay.rotateSelection(Quat.lookAt(Vec3.ZERO, Vec3.multiply(entityResult.surfaceNormal, -1), Vec3.UP)); + selectionManager._update(false, this); + pushCommandForSelections(); + expectingRotateAsClickedSurface = false; + audioFeedback.action(); } keepSelectedOnNextClick = true; return null; diff --git a/scripts/system/create/entitySelectionTool/entitySelectionTool.js b/scripts/system/create/entitySelectionTool/entitySelectionTool.js index 8941ff24f2..b1ce7f801c 100644 --- a/scripts/system/create/entitySelectionTool/entitySelectionTool.js +++ b/scripts/system/create/entitySelectionTool/entitySelectionTool.js @@ -105,16 +105,16 @@ SelectionManager = (function() { } if (expectingRotateAsClickedSurface) { if (!SelectionManager.hasSelection() || !SelectionManager.hasUnlockedSelection()) { - audioFeedback.rejection(); - Window.notifyEditError("You have nothing selected, or the selection is locked."); - expectingRotateAsClickedSurface = false; + audioFeedback.rejection(); + Window.notifyEditError("You have nothing selected, or the selection is locked."); + expectingRotateAsClickedSurface = false; } else { - //Rotate Selection according the Surface Normal - selectionDisplay.rotateSelection(Quat.lookAt(Vec3.ZERO, Vec3.multiply(messageParsed.surfaceNormal, -1), Vec3.UP)); - that._update(false, this); - pushCommandForSelections(); - expectingRotateAsClickedSurface = false; - audioFeedback.action(); + //Rotate Selection according the Surface Normal + selectionDisplay.rotateSelection(Quat.lookAt(Vec3.ZERO, Vec3.multiply(messageParsed.surfaceNormal, -1), Vec3.UP)); + that._update(false, this); + pushCommandForSelections(); + expectingRotateAsClickedSurface = false; + audioFeedback.action(); } } else { if (hmdMultiSelectMode) { @@ -2411,7 +2411,7 @@ SelectionDisplay = (function() { SelectionManager.saveProperties(); if (selectionManager.selections.length === 1 && spaceMode === SPACE_LOCAL) { currentRotation = SelectionManager.localRotation; - }else{ + } else { currentRotation = SelectionManager.worldRotation; } switch(axis) { From ff7cf2fcd63f1af662dab3dfb8f5664fee76273d Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Wed, 30 Dec 2020 00:23:28 -0500 Subject: [PATCH 09/19] Adjust menu Item name Action "Rotate as the Next Clicked Surface" has been changed for: "Rotate as Next Clicked Surface" For now, it will be that. This feature might evolve soon to include a translation to the clicked surface. So the name will eventually change again. --- scripts/system/create/entityList/html/entityList.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/create/entityList/html/entityList.html b/scripts/system/create/entityList/html/entityList.html index 99dc213cf1..4c84f7ed4d 100644 --- a/scripts/system/create/entityList/html/entityList.html +++ b/scripts/system/create/entityList/html/entityList.html @@ -159,7 +159,7 @@ <div class="menu-separator"></div> <button class="menu-button" id="rotateAsTheNextClickedSurface" > <div class = "menu-item"> - <div class = "menu-item-caption">Rotate As The Next Clicked Surface</div> + <div class = "menu-item-caption">Rotate as Next Clicked Surface</div> <div class = "menu-item-shortcut">0</div> </div> </button> From 5b40ac4c1ebb28d5f6061bdd5eefaede4754677e Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Wed, 20 Jan 2021 23:13:47 -0500 Subject: [PATCH 10/19] Transmitting Intersection to Create App Transmitting Intersection to Create App --- scripts/system/controllers/controllerModules/inEditMode.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/system/controllers/controllerModules/inEditMode.js b/scripts/system/controllers/controllerModules/inEditMode.js index 5bef8ec11a..992a76614a 100644 --- a/scripts/system/controllers/controllerModules/inEditMode.js +++ b/scripts/system/controllers/controllerModules/inEditMode.js @@ -84,7 +84,8 @@ Script.include("/~/system/libraries/utils.js"); method: "selectEntity", entityID: this.selectedTarget.objectID, hand: hand, - surfaceNormal: this.selectedTarget.surfaceNormal + surfaceNormal: this.selectedTarget.surfaceNormal, + intersection: this.selectedTarget.intersection, })); } else if (this.selectedTarget.type === Picks.INTERSECTED_OVERLAY) { Messages.sendLocalMessage(this.ENTITY_TOOL_UPDATES_CHANNEL, JSON.stringify({ From aedce21007e68cf8812161f04d8b903d58dd002e Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Wed, 20 Jan 2021 23:17:06 -0500 Subject: [PATCH 11/19] Snap to Next Clicked Surface This adds the move in addition to the rotation to the "Rotate as Next Clicked Surface" action. Which is now become: "Snap to Next Clicked Surface" --- scripts/system/create/edit.js | 11 ++++++- .../entitySelectionTool.js | 31 ++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index 23292cd85c..05bc7d2381 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -1115,7 +1115,16 @@ function findClickedEntity(event) { expectingRotateAsClickedSurface = false; } else { //Rotate Selection according the Surface Normal - selectionDisplay.rotateSelection(Quat.lookAt(Vec3.ZERO, Vec3.multiply(entityResult.surfaceNormal, -1), Vec3.UP)); + var normalRotation = Quat.lookAtSimple(Vec3.ZERO, Vec3.multiply(entityResult.surfaceNormal, -1)); + selectionDisplay.rotateSelection(normalRotation); + //Translate Selection according the clicked Surface + var distanceFromSurface; + if (selectionDisplay.getSpaceMode() === "world"){ + distanceFromSurface = SelectionManager.worldDimensions.z / 2; + } else { + distanceFromSurface = SelectionManager.localDimensions.z / 2; + } + selectionDisplay.moveSelection(Vec3.sum(entityResult.intersection, Vec3.multiplyQbyV( normalRotation, {"x": 0.0, "y":0.0, "z": distanceFromSurface}))); selectionManager._update(false, this); pushCommandForSelections(); expectingRotateAsClickedSurface = false; diff --git a/scripts/system/create/entitySelectionTool/entitySelectionTool.js b/scripts/system/create/entitySelectionTool/entitySelectionTool.js index b1ce7f801c..f4d6117bd1 100644 --- a/scripts/system/create/entitySelectionTool/entitySelectionTool.js +++ b/scripts/system/create/entitySelectionTool/entitySelectionTool.js @@ -110,7 +110,16 @@ SelectionManager = (function() { expectingRotateAsClickedSurface = false; } else { //Rotate Selection according the Surface Normal - selectionDisplay.rotateSelection(Quat.lookAt(Vec3.ZERO, Vec3.multiply(messageParsed.surfaceNormal, -1), Vec3.UP)); + var normalRotation = Quat.lookAtSimple(Vec3.ZERO, Vec3.multiply(messageParsed.surfaceNormal, -1)); + selectionDisplay.rotateSelection(normalRotation); + //Translate Selection according the clicked Surface + var distanceFromSurface; + if (selectionDisplay.getSpaceMode() === SPACE_WORLD){ + distanceFromSurface = SelectionManager.worldDimensions.z / 2; + } else { + distanceFromSurface = SelectionManager.localDimensions.z / 2; + } + selectionDisplay.moveSelection(Vec3.sum(messageParsed.intersection, Vec3.multiplyQbyV( normalRotation, {"x": 0.0, "y":0.0, "z": distanceFromSurface}))); that._update(false, this); pushCommandForSelections(); expectingRotateAsClickedSurface = false; @@ -2401,6 +2410,26 @@ SelectionDisplay = (function() { updateSelectionsRotation(rotation, SelectionManager.worldPosition); }; + that.moveSelection = function(targetPosition) { + SelectionManager.saveProperties(); + // editing a parent will cause all the children to automatically follow along, so don't + // edit any entity who has an ancestor in SelectionManager.selections + var toMove = SelectionManager.selections.filter(function (selection) { + if (SelectionManager.selections.indexOf(SelectionManager.savedProperties[selection].parentID) >= 0) { + return false; // a parent is also being moved, so don't issue an edit for this entity + } else { + return true; + } + }); + + for (var i = 0; i < toMove.length; i++) { + var id = toMove[i]; + var properties = SelectionManager.savedProperties[id]; + var newPosition = Vec3.sum(targetPosition, Vec3.subtract(properties.position, SelectionManager.worldPosition)); + Entities.editEntity(id, { position: newPosition }); + } + }; + that.rotate90degreeSelection = function(axis) { //axis is a string and expect "X", "Y" or "Z" if (!SelectionManager.hasSelection() || !SelectionManager.hasUnlockedSelection()) { From a9c2a3d46a64808948678e6ff2267c3c9d3a8304 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Wed, 20 Jan 2021 23:19:43 -0500 Subject: [PATCH 12/19] Snap to Next Clicked Surface Rename the action: "Rotate as Next Clicked Surface" for "Snap to Next Clicked Surface" since it is now doing the rotation and the move to the clicked surface. --- scripts/system/create/entityList/html/entityList.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/create/entityList/html/entityList.html b/scripts/system/create/entityList/html/entityList.html index 4c84f7ed4d..cc30c6d6df 100644 --- a/scripts/system/create/entityList/html/entityList.html +++ b/scripts/system/create/entityList/html/entityList.html @@ -159,7 +159,7 @@ <div class="menu-separator"></div> <button class="menu-button" id="rotateAsTheNextClickedSurface" > <div class = "menu-item"> - <div class = "menu-item-caption">Rotate as Next Clicked Surface</div> + <div class = "menu-item-caption">Snap To Next Clicked Surface</div> <div class = "menu-item-shortcut">0</div> </div> </button> From 22b935ee656733a11c0bec262a019dabf3d0d544 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Thu, 28 Jan 2021 23:55:09 -0500 Subject: [PATCH 13/19] Add Icon for Radius Search of the Create App Add Icon for Radius Search of the Create App --- interface/resources/fonts/vircadia_glyphs.ttf | Bin 4000 -> 4432 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/interface/resources/fonts/vircadia_glyphs.ttf b/interface/resources/fonts/vircadia_glyphs.ttf index 7d3fe9d913a85bcbfc00162d1ebf1617c40c1b48..ed89c2719a81b17a18c252a9ec306d35f2741678 100644 GIT binary patch delta 1777 zcmcgtU2GIp6#mYgnR{n<c4xY?v$I=VcDK9RnPN+e`!}V9-PWHfl1f2ReGp8A(h5`v zR)xfLd4fLF#L}eEga;!$n1~4#OpGz{fd>u2U?Pb^KtU598iMgb)I`xtDJk&aBXcsj z-#OpC=X~enX6C*0H`x*hKo|!hVW6*XbN`VuZ~g;BN&u2iKK?`>R^WXgVgX2Pc($W3 zvU%XA=~A{H2?0<?b|2WWf9m*KfHDQhe~%6iZEvjSPXM?KpfWl-JS6>yO91&9@}pzp z`;{2!0DTJ3qr3NP8=84)`ZGWt0H|whX#ZaPf>D4v0c2ho8XMkqq`nIXP6E<%d-uFL z{_?<~KhcWtRX}=pK|TSE%g_GxqOs<8Xbk>y+57F#o%IOSXn3ZFw$aU*<20tF7j^&+ zx@MZ#4>MOuIrT3)O7(rXK%m*%#@g7#gSGmDEypGRFjxS6!j3`0%)3f^-9|H3U?n_s z175ipb91p`yi$nUF-!1V)^*CI=6l^5#fAU!O2M`S&$^C(Zt~a6++361qU*X5wRHW~ z<t4m!&>B2y4O$;2TavmT&fAyf=g-ZJ>vg>$YUzfdTTxSA!uF1ak?jpTB2qHh;<Kwp zM*$V<V9_bM0SN*cmSF`tu?9U$!d<_Cd(}$!y7%=`kGo#njSF}7+wAo8V5Ybv`oJQL z>INm2aAR+x_iUm!F?;^}$+u5z+&FQU>|5{Lal)}^!yT+!(O|#TzuxM%02!0$q}S=I z+fCH5?0?ly-bl~Qjid{U^<!bZbAJBZ$ukoZ$L>n+UvP#r@^poMMhsg4(kW)e?V{~f z$*YtruH&1icooNWxX{UMC$CENxE&V`7d%B3?|yQD)5(t86|dqhoD{jm0DT-bwO~lo zm`a>vP5~Bdvcrm^3RBKcRclTzH&xR`rfp{?Z9cy<6O~B|s0Q(_e6E!%U3p7uie&1+ zXe5$Rhz@cRhE9E__nCdYA5b&dAwvriCzXj{AQ142d|@|=s4OdL)y?OoYE?I{@^sp4 zYui<gv@J^obViz*Z{<pNF5k*!(IlJMjI5XuEmRjK*Y(xr)Tz~F6@UZ>X}Uu7YlveV zwgXWvxIeMD?a#rt#gP@`w&1PgIvrGUOHRpcrw%GPWuIOECD(bRl=GubhpY%LxWTw( z5Ene>xK7!tQjLm*Ya1$+$I9#1*R)16lv0#LIGxJWdk$yHWnvE{1rsDOViJ)|0f|eD z5s}0=V`M5aCtG2X%p^amt1C$rh9ntkDwC$~g0<?v3q563wD5%4(B9R(Dw$2`$?@0T zAl4v4Op^R;5@(FbOg2SOD8&3!tgf;Umzf(>LlokQP`FHtSf=46Q%^G?a?xJ@a>?jI zD}6~{Lqj9l-~m+hKM<`{E*8q(680)(={Avd)>6r<bW<U23(pn2gGAge(4OTX-JG8{ zx|fGT(WkFpR}^K7D#8~-W+13t3=8$}rr0LVGqFr4MYA_!hLMe&{=*I%O<YpxnF}E; gXoW9?wO~;DXiH+Nsx~L`VF0JTS3l>WyMF}#0ocMeHUIzs delta 1342 zcmchX&u<$=6vw}B_LsZf^(M~R-iTe>al-DFw7A%7ZwRFM(GmnDB&Ah~M4&ZkYNIqX zf&fLJngc>PM53vsN+5(PepDP|MIa6wI8=f|5J;_n77Fx&gjJ;%NRf~N@}>#!4|Ja9 zy*F>(%=^q}G~Z;-r92P-6|aHA*zoYdk;TuyeG|}L2Vg$9_km$-$9sTw6hLzHKsHxC zICf>x%T%=q0HN~nmyh{ITRR{u0Nf*$snSv7)l<6x{0N{}sZ5o)pK%2s9Y9xQX6_`v zMiGEM1!(B_iOEvwxg+NQehi@AnbOHw{EEW>^#DjeTbh}gK2x0rLf-@2q1hA9&pk8t z#-HehvJ2qu3h)Ww{`y@ztlj?y!VJy!!zb^KZrU@{PZPBPnxxg*2Q(875&+oft#z=U zYQK=M{5N}tsz>k<RyKvk>HO`L>g_E@=K(P20Da8f2Z!2Q!rj#tw8KINwqqyImXCG% zv3wz#i|b-%#`d~49X}yC%`P?r8Qb&ovCjD$H<I<NYg%o(x!%~YHGN#aFs_f^>zbx( zcE#g#p|Mi0um5JbmgS}b{Yp!@b@Eti`BBrgs+K!jX}&Bx1f7;?6&xglp~FNMT<rK4 z%E`w%?M)tbiz5Kc*j@l9IsVy;7t@R5>9nwcGwqs|ZIK-q*BCV39yA7N>g%P`r)Tyr zSV8^u4+API&_nu&zHdYy0grj~(2Mlt7SPu1{10S)bv0Qpr&6~HQl_!8w6u7t9_$8y zgN+njrE5rFFP;F}L`jV4iFhLJ7yV+jsT{j0QX(#i-Q?I=@*L0h9NY2iLUSfdp6vxW zS+cWyJ|RU&iZG2tN$j*8yWsUxK6h=jSlm;5cwc|Gy;V)|f}vT-^gy{#Aa;i-F^M=v zBJmXBd4VxT9FfSXjG_WBrq=`tF~$**tn4IlTXSuSzLWcRk4+2|CCL?ymgugY-g{E1 zWW=0%;U!`%LWFS~#~6hf;~B5Xk}MG81(FykBF`K-q>#c#1Wx1_GmNJr(G;USg8+E+ zqMN>;uc`>69XsFy6w{mMFXVH5l-Tn9Vjnphqm120o?pC=a*4R)NMe?xL_Fuyf)a@~ z8rtKk(sup2AP7%}B=xcq-6n@Gt5T>CdrTD5v9yv@=<Hfd(=x4VLpS59)**7Cn~6i0 gR9V*5OKMn_<^9G}q0pU1m#Qw$%b$tLe}9#K03+fXNdN!< From 932142a313f4f9b6893f6c01565221ade006983e Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Thu, 28 Jan 2021 23:57:37 -0500 Subject: [PATCH 14/19] CSS for Create App new menu bar This add the css for the new menu bar of the create app. --- scripts/system/html/css/edit-style.css | 78 ++++++++++++++++++-------- 1 file changed, 54 insertions(+), 24 deletions(-) diff --git a/scripts/system/html/css/edit-style.css b/scripts/system/html/css/edit-style.css index db535327d9..43b1154fd2 100644 --- a/scripts/system/html/css/edit-style.css +++ b/scripts/system/html/css/edit-style.css @@ -1208,7 +1208,7 @@ div.refresh input[type="button"] { } .fieldset .checkbox-sub-props .property:first-child { - margin-top: 0; + margin-top: 0px; } .column { @@ -1252,18 +1252,18 @@ textarea:enabled[scrolling="true"]::-webkit-resizer { } div#grid-section, body#entity-list-body { - padding-bottom: 0; - margin: 16px; + padding-bottom: 0px; + margin: 0px 8px 8px 8px; } #entity-list-header { - margin-bottom: 36px; + margin-bottom: 6px; } #entity-list-header div { display: inline-block; width: 65px; - margin-right: 6px; + margin-right: 4px; } #entity-list-header div input:first-child { @@ -1281,13 +1281,19 @@ div#grid-section, body#entity-list-body { border-bottom-left-radius: 0; } +#delete { + float: right; + margin-right: 0; + background-color: #ff0000; +} + #entity-list { position: relative; /* New positioning context. */ } #filter-area { padding-right: 168px; - padding-bottom: 24px; + padding-bottom: 8px; } #filter-type-multiselect-box select { @@ -1340,35 +1346,59 @@ div#grid-section, body#entity-list-body { #filter-type-options input[type=button]:enabled:hover { background: linear-gradient(#afafaf 20%, #575757 100%); } - #filter-search-and-icon { position: relative; left: 118px; width: calc(100% - 126px); } - #filter-in-view { position: absolute; - top: 0; + top: 0px; right: 126px; } - #filter-radius-and-unit { position: relative; float: right; margin-right: -168px; - top: -45px; + top: -28px; } -#filter-radius-and-unit label { - margin-left: 2px; +#entity-list-menubar { + margin: 0px -8px 6px -8px; + padding: 0px 8px 0px 8px;; + border: none; + background-color: #000; + background: linear-gradient(#343434 20%, #000 100%); } -#filter-radius-and-unit span { +.icon-input-radius input { position: relative; - top: 25px; + padding-left: 36px; +} +.icon-input-radius span { + position: absolute; + left: 4px; + top: -4px; + font-family: Vircadia-Glyphs; + font-size: 23px; + color: #afafaf; +} +.icon-input-radius input:focus + span + label { + color: #ffffff; +} +.icon-input-radius label { + position: absolute; + margin-left: 3px; + bottom: 6px; right: 9px; - z-index: 2; font-style: italic; } +#filter-radius:focus { + outline: none; + box-sizing: border-box; + height: 26px; + margin-top: 1px; + margin-bottom: 1px; + box-shadow: 0 0 0 1px #00b4ef; +} #filter-radius-and-unit input { width: 120px; border-radius: 14.5px; @@ -1384,12 +1414,12 @@ div#grid-section, body#entity-list-body { #footer-text { float: right; - padding-top: 12px; + padding-top: 6px; padding-right: 22px; } input[type=button]#export { - height: 38px; + height: 26px; width: 180px; } @@ -1441,7 +1471,7 @@ input[type=button]#export { overflow-x: hidden; overflow-y: auto; box-sizing: border-box; - padding-top: 28px; /* Space for header and footer outside of scroll region. */ + padding-top: 37px; /* Space for header and footer outside of scroll region. */ margin-top: 28px; border-left: 2px solid #575757; border-right: 2px solid #575757; @@ -1462,7 +1492,7 @@ input[type=button]#export { } #entity-table { - margin-top: -28px; + margin-top: -20px; margin-bottom: -18px; table-layout: fixed; border: none; @@ -1539,7 +1569,7 @@ input[type=button]#export { } #entity-table td .glyph .vglyph { text-align: center; - padding: 0; + padding: 0px; } #properties-base { @@ -1888,10 +1918,10 @@ div.multiZoneSelToolbar { div.entity-list-menu { position: fixed; display: none; - width: 70%; + width: 370px; height: 30px; - top: 42px; - left: 150px; + top: 27px; + left: 8px; right: 0; bottom: 0; border-style: solid; From c8679375b179f3afc0e58d4783f08ef7fe515d13 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Thu, 28 Jan 2021 23:59:44 -0500 Subject: [PATCH 15/19] Height adjustment for new Menu bar Height adjustment for new Menu bar --- scripts/system/create/entityList/html/js/entityList.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/create/entityList/html/js/entityList.js b/scripts/system/create/entityList/html/js/entityList.js index c610795bc9..96366d7183 100644 --- a/scripts/system/create/entityList/html/js/entityList.js +++ b/scripts/system/create/entityList/html/js/entityList.js @@ -15,7 +15,7 @@ const BYTES_PER_MEGABYTE = 1024 * 1024; const COLLAPSE_EXTRA_INFO = "E"; const EXPAND_EXTRA_INFO = "D"; const FILTER_IN_VIEW_ATTRIBUTE = "pressed"; -const WINDOW_NONVARIABLE_HEIGHT = 227; +const WINDOW_NONVARIABLE_HEIGHT = 180; const EMPTY_ENTITY_ID = "0"; const MAX_LENGTH_RADIUS = 9; const MINIMUM_COLUMN_WIDTH = 24; From 70781fea3b42b2ffa8fc9a034e85c4b49b358188 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Fri, 29 Jan 2021 00:04:48 -0500 Subject: [PATCH 16/19] New Menubar Add a New Menubar in the create app, just over the toolbar. The Delete Red button is now back in the toolbar. The radius search label has been replaced by a radar icon, the space has been recuperated for the menubar. So we have now space for more menu & menu items, and for more button too. which will help for future addition to this application. --- .../create/entityList/html/entityList.html | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/scripts/system/create/entityList/html/entityList.html b/scripts/system/create/entityList/html/entityList.html index cc30c6d6df..93585c7338 100644 --- a/scripts/system/create/entityList/html/entityList.html +++ b/scripts/system/create/entityList/html/entityList.html @@ -24,6 +24,11 @@ <script type="text/javascript" src="js/entityList.js"></script> </head> <body onload='loaded();' id="entity-list-body"> + <div id="entity-list-menubar"> + <input type="button" class="normal" id="selection" value="Select▾" /> + <input type="button" class="normal" id="actions" value="Edit▾" /> + <input type="button" class="normal" id="tools" value="Tools▾" /> + </div> <div id="entity-list-header"> <input type="button" class="glyph" id="refresh" value="F" /> <div> @@ -32,9 +37,7 @@ </div> <button id="toggle-space-mode" class="hifi-edit-button space-mode-local">Local</button> <input type="button" class="vglyph" id="hmdmultiselect" value="I" style="display: none;" /> - <input type="button" class="normal" id="selection" value="Select▾" /> - <input type="button" class="normal" id="actions" value="Edit▾" /> - <input type="button" class="normal" id="tools" value="Tools▾" /> + <input type="button" class="red glyph" id="delete" value="{" /> </div> <div id="entity-list"> <div id="filter-area"> @@ -58,8 +61,7 @@ </div> <input type="button" id="filter-in-view" class="glyph" value="" /> <div id="filter-radius-and-unit" class="number"> - <label for="radius">Search radius <span class="unit">m</span></label> - <input type="text" id="filter-radius" maxlength="9" value="100" /> + <span class="icon-input-radius"><input type="text" id="filter-radius" maxlength="8" value="100" /><span>D</span><label>m</label></span> </div> </div> <div id="entity-table-scroll"> @@ -130,12 +132,6 @@ <div class = "menu-item-shortcut">Ctrl-D</div> </div> </button> - <button class="menu-button" id="delete" > - <div class = "menu-item"> - <div class = "menu-item-caption">Delete</div> - <div class = "menu-item-shortcut">Del</div> - </div> - </button> <div class="menu-separator"></div> <button class="menu-button" id="parent" > <div class = "menu-item"> From e57df8b096473679d08ff1eda5ad2476f0c85e9f Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Fri, 29 Jan 2021 21:50:25 -0500 Subject: [PATCH 17/19] Minor code adjustment Minor code adjustment --- scripts/system/html/css/edit-style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/html/css/edit-style.css b/scripts/system/html/css/edit-style.css index 43b1154fd2..07af2e5d83 100644 --- a/scripts/system/html/css/edit-style.css +++ b/scripts/system/html/css/edit-style.css @@ -1364,7 +1364,7 @@ div#grid-section, body#entity-list-body { } #entity-list-menubar { margin: 0px -8px 6px -8px; - padding: 0px 8px 0px 8px;; + padding: 0px 8px 0px 8px; border: none; background-color: #000; background: linear-gradient(#343434 20%, #000 100%); From 75d6b2c2e536ec11fa09e22b62f2486ddfc68602 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Fri, 29 Jan 2021 21:55:55 -0500 Subject: [PATCH 18/19] Minor code adjustment Minor code adjustment --- scripts/system/controllers/controllerModules/inEditMode.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/controllers/controllerModules/inEditMode.js b/scripts/system/controllers/controllerModules/inEditMode.js index 992a76614a..8453a7d8d3 100644 --- a/scripts/system/controllers/controllerModules/inEditMode.js +++ b/scripts/system/controllers/controllerModules/inEditMode.js @@ -85,7 +85,7 @@ Script.include("/~/system/libraries/utils.js"); entityID: this.selectedTarget.objectID, hand: hand, surfaceNormal: this.selectedTarget.surfaceNormal, - intersection: this.selectedTarget.intersection, + intersection: this.selectedTarget.intersection })); } else if (this.selectedTarget.type === Picks.INTERSECTED_OVERLAY) { Messages.sendLocalMessage(this.ENTITY_TOOL_UPDATES_CHANNEL, JSON.stringify({ From f6aaa000a7ce50be63483d6224df60fbf14eda11 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Fri, 29 Jan 2021 21:59:14 -0500 Subject: [PATCH 19/19] Minor Code Adjustment Minor Code Adjustment --- scripts/system/create/audioFeedback/audioFeedback.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/system/create/audioFeedback/audioFeedback.js b/scripts/system/create/audioFeedback/audioFeedback.js index 67af004844..881afddfaf 100644 --- a/scripts/system/create/audioFeedback/audioFeedback.js +++ b/scripts/system/create/audioFeedback/audioFeedback.js @@ -12,7 +12,7 @@ audioFeedback = (function() { var that = {}; - + var confirmationSound = SoundCache.getSound(Script.resolvePath("./sounds/confirmation.mp3")); var rejectionSound = SoundCache.getSound(Script.resolvePath("./sounds/rejection.mp3")); var actionSound = SoundCache.getSound(Script.resolvePath("./sounds/action.mp3")); @@ -26,15 +26,15 @@ audioFeedback = (function() { that.rejection = function() { //Play a rejection sound var injector = Audio.playSound(rejectionSound, { - "volume": 0.3, - "localOnly": true + "volume": 0.3, + "localOnly": true }); } that.action = function() { //Play an action sound var injector = Audio.playSound(actionSound, { - "volume": 0.3, - "localOnly": true + "volume": 0.3, + "localOnly": true }); }