From be68d99bedba857159262cc2e27c47a7f9e1796f Mon Sep 17 00:00:00 2001 From: Mike Moody Date: Thu, 6 Jul 2017 23:17:23 -0700 Subject: [PATCH 1/7] added ability to drag ParticleEffects and Light Entities around via Overlay Icon. --- scripts/system/edit.js | 10 ++++++++-- .../libraries/entityIconOverlayManager.js | 17 +++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index a83d2159bb..11ab4771b9 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -648,7 +648,10 @@ var toolBar = (function () { // everybody else to think that Interface has lost focus overall. fogbugzid:558 // Window.setFocus(); } - entityIconOverlayManager.setVisible(isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); + var activeLightParticle = (isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); + entityIconOverlayManager.setVisible(activeLightParticle); + entityIconOverlayManager.setIconsSelectable(activeLightParticle); + Entities.setDrawZoneBoundaries(isActive && Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); }; @@ -1464,7 +1467,10 @@ function handeMenuEvent(menuItem) { } else if (menuItem === "Select All Entities Touching Box") { selectAllEtitiesInCurrentSelectionBox(true); } else if (menuItem === MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE) { - entityIconOverlayManager.setVisible(isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); + var activeLightParticle = (isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); + entityIconOverlayManager.setVisible(activeLightParticle); + entityIconOverlayManager.setIconsSelectable(activeLightParticle); + } else if (menuItem === MENU_SHOW_ZONES_IN_EDIT_MODE) { Entities.setDrawZoneBoundaries(isActive && Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); } diff --git a/scripts/system/libraries/entityIconOverlayManager.js b/scripts/system/libraries/entityIconOverlayManager.js index f557a05f60..65a98df90d 100644 --- a/scripts/system/libraries/entityIconOverlayManager.js +++ b/scripts/system/libraries/entityIconOverlayManager.js @@ -2,6 +2,7 @@ EntityIconOverlayManager = function(entityTypes, getOverlayPropertiesFunc) { var visible = false; + var iconsSelectable = false; // List of all created overlays var allOverlays = []; @@ -69,6 +70,18 @@ EntityIconOverlayManager = function(entityTypes, getOverlayPropertiesFunc) { } }; + + this.setIconsSelectable = function(isIconsSelectable) { + if (iconsSelectable !== isIconsSelectable) { + iconsSelectable = isIconsSelectable; + for (var id in entityOverlays) { + Overlays.editOverlay(entityOverlays[id], { + ignoreRayIntersection: iconsSelectable + }); + } + } + }; + // Allocate or get an unused overlay function getOverlay() { var overlay; @@ -114,6 +127,10 @@ EntityIconOverlayManager = function(entityTypes, getOverlayPropertiesFunc) { overlayProperties[key] = customProperties[key]; } } + + if(properties.type === 'ParticleEffect' || properties.type === 'Light'){ + overlayProperties.ignoreRayIntersection = true; + } Overlays.editOverlay(overlay, overlayProperties); } } From d9706452ac4c781a87cc1cf261c1fa27ef2b0924 Mon Sep 17 00:00:00 2001 From: Mike Moody Date: Thu, 6 Jul 2017 23:32:22 -0700 Subject: [PATCH 2/7] added ability to drag ParticleEffects and Light Entities around via Overlay Icon. --- scripts/system/libraries/entityIconOverlayManager.js | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/system/libraries/entityIconOverlayManager.js b/scripts/system/libraries/entityIconOverlayManager.js index 65a98df90d..1953b02d94 100644 --- a/scripts/system/libraries/entityIconOverlayManager.js +++ b/scripts/system/libraries/entityIconOverlayManager.js @@ -127,7 +127,6 @@ EntityIconOverlayManager = function(entityTypes, getOverlayPropertiesFunc) { overlayProperties[key] = customProperties[key]; } } - if(properties.type === 'ParticleEffect' || properties.type === 'Light'){ overlayProperties.ignoreRayIntersection = true; } From 53f581c3d418a246809e019668361dc7a4601bc9 Mon Sep 17 00:00:00 2001 From: Mike Moody Date: Sat, 8 Jul 2017 02:52:27 -0700 Subject: [PATCH 3/7] Fixed Icons not being selectable while not highlighted. --- scripts/system/edit.js | 14 ++++++------- .../libraries/entityIconOverlayManager.js | 21 ++++++++++++++----- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 11ab4771b9..e9afc3a167 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -644,14 +644,12 @@ var toolBar = (function () { selectionDisplay.triggerMapping.enable(); print("starting tablet in landscape mode") tablet.landscape = true; + entityIconOverlayManager.setIconsSelectable(null,false); // Not sure what the following was meant to accomplish, but it currently causes // everybody else to think that Interface has lost focus overall. fogbugzid:558 // Window.setFocus(); } - var activeLightParticle = (isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); - entityIconOverlayManager.setVisible(activeLightParticle); - entityIconOverlayManager.setIconsSelectable(activeLightParticle); - + entityIconOverlayManager.setVisible(isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); Entities.setDrawZoneBoundaries(isActive && Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); }; @@ -944,6 +942,9 @@ function mouseClickEvent(event) { } else { selectionManager.addEntity(foundEntity, true); } + + entityIconOverlayManager.setIconsSelectable(selectionManager.selections,true); + if (wantDebug) { print("Model selected: " + foundEntity); } @@ -1467,10 +1468,7 @@ function handeMenuEvent(menuItem) { } else if (menuItem === "Select All Entities Touching Box") { selectAllEtitiesInCurrentSelectionBox(true); } else if (menuItem === MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE) { - var activeLightParticle = (isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); - entityIconOverlayManager.setVisible(activeLightParticle); - entityIconOverlayManager.setIconsSelectable(activeLightParticle); - + entityIconOverlayManager.setVisible(isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); } else if (menuItem === MENU_SHOW_ZONES_IN_EDIT_MODE) { Entities.setDrawZoneBoundaries(isActive && Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); } diff --git a/scripts/system/libraries/entityIconOverlayManager.js b/scripts/system/libraries/entityIconOverlayManager.js index 1953b02d94..a374783b1f 100644 --- a/scripts/system/libraries/entityIconOverlayManager.js +++ b/scripts/system/libraries/entityIconOverlayManager.js @@ -1,8 +1,8 @@ /* globals EntityIconOverlayManager:true */ EntityIconOverlayManager = function(entityTypes, getOverlayPropertiesFunc) { + var visible = false; - var iconsSelectable = false; // List of all created overlays var allOverlays = []; @@ -71,14 +71,25 @@ EntityIconOverlayManager = function(entityTypes, getOverlayPropertiesFunc) { }; - this.setIconsSelectable = function(isIconsSelectable) { - if (iconsSelectable !== isIconsSelectable) { - iconsSelectable = isIconsSelectable; + this.setIconsSelectable = function(arrayOfSelectedEntityIDs, isIconsSelectable) { + if (arrayOfSelectedEntityIDs === null) { for (var id in entityOverlays) { Overlays.editOverlay(entityOverlays[id], { - ignoreRayIntersection: iconsSelectable + ignoreRayIntersection: isIconsSelectable }); } + } else { + for (var id in entityOverlays) { + if (arrayOfSelectedEntityIDs.indexOf(id) !== -1) { // in the entityOverlays array and selectable + Overlays.editOverlay(entityOverlays[id], { + ignoreRayIntersection: isIconsSelectable + }); + } else { + Overlays.editOverlay(entityOverlays[id], { + ignoreRayIntersection: !isIconsSelectable + }); + } + } } }; From c56450b986e59270730b1de48df087fa5f35ce39 Mon Sep 17 00:00:00 2001 From: Mike Moody Date: Wed, 19 Jul 2017 01:49:39 -0700 Subject: [PATCH 4/7] Moved function to a differnt location that handles both mouse and controller inputs. --- scripts/system/edit.js | 2 -- scripts/system/libraries/entitySelectionTool.js | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index e9afc3a167..52b8c8d51e 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -943,8 +943,6 @@ function mouseClickEvent(event) { selectionManager.addEntity(foundEntity, true); } - entityIconOverlayManager.setIconsSelectable(selectionManager.selections,true); - if (wantDebug) { print("Model selected: " + foundEntity); } diff --git a/scripts/system/libraries/entitySelectionTool.js b/scripts/system/libraries/entitySelectionTool.js index 725803f824..f9081080fd 100644 --- a/scripts/system/libraries/entitySelectionTool.js +++ b/scripts/system/libraries/entitySelectionTool.js @@ -4064,6 +4064,7 @@ SelectionDisplay = (function() { // if another mouse button than left is pressed ignore it return false; } + entityIconOverlayManager.setIconsSelectable(selectionManager.selections,true); var somethingClicked = false; var pickRay = generalComputePickRay(event.x, event.y); From 7de164f1ab6804dedec413320415bcde8784da55 Mon Sep 17 00:00:00 2001 From: Mike Moody Date: Mon, 24 Jul 2017 15:06:45 -0700 Subject: [PATCH 5/7] moved below a check that returns. --- scripts/system/libraries/entitySelectionTool.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/system/libraries/entitySelectionTool.js b/scripts/system/libraries/entitySelectionTool.js index f9081080fd..91ddf2a2d1 100644 --- a/scripts/system/libraries/entitySelectionTool.js +++ b/scripts/system/libraries/entitySelectionTool.js @@ -4064,7 +4064,6 @@ SelectionDisplay = (function() { // if another mouse button than left is pressed ignore it return false; } - entityIconOverlayManager.setIconsSelectable(selectionManager.selections,true); var somethingClicked = false; var pickRay = generalComputePickRay(event.x, event.y); @@ -4075,6 +4074,8 @@ SelectionDisplay = (function() { return false; } + entityIconOverlayManager.setIconsSelectable(selectionManager.selections,true); + // before we do a ray test for grabbers, disable the ray intersection for our selection box Overlays.editOverlay(selectionBox, { ignoreRayIntersection: true From 4c78fba2ccb81c4e29185d40ea7568a250c402a3 Mon Sep 17 00:00:00 2001 From: Mike Moody Date: Mon, 24 Jul 2017 16:50:33 -0700 Subject: [PATCH 6/7] Removed line that caused colflict. --- scripts/system/libraries/entitySelectionTool.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/system/libraries/entitySelectionTool.js b/scripts/system/libraries/entitySelectionTool.js index 91ddf2a2d1..725803f824 100644 --- a/scripts/system/libraries/entitySelectionTool.js +++ b/scripts/system/libraries/entitySelectionTool.js @@ -4074,8 +4074,6 @@ SelectionDisplay = (function() { return false; } - entityIconOverlayManager.setIconsSelectable(selectionManager.selections,true); - // before we do a ray test for grabbers, disable the ray intersection for our selection box Overlays.editOverlay(selectionBox, { ignoreRayIntersection: true From 036a16c0b384f69cf5949645315f0e266b24a0fc Mon Sep 17 00:00:00 2001 From: Mike Moody Date: Mon, 24 Jul 2017 16:51:23 -0700 Subject: [PATCH 7/7] readded line that caused colflict. --- scripts/system/libraries/entitySelectionTool.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/system/libraries/entitySelectionTool.js b/scripts/system/libraries/entitySelectionTool.js index 2d1853fae2..77b62913bf 100644 --- a/scripts/system/libraries/entitySelectionTool.js +++ b/scripts/system/libraries/entitySelectionTool.js @@ -4060,6 +4060,8 @@ SelectionDisplay = (function() { return false; } + entityIconOverlayManager.setIconsSelectable(selectionManager.selections,true); + // ignore ray intersection for our selection box and yaw/pitch/roll result = Overlays.findRayIntersection(pickRay, true, null, [ yawHandle, pitchHandle, rollHandle, selectionBox ] ); if (result.intersects) {