From e5aee44ceb60c0261533988e5ea7df740aad3fe0 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 9 Dec 2014 08:51:04 -0800 Subject: [PATCH 1/3] Add setting save/load to grid tool --- examples/html/gridControls.html | 6 +-- examples/libraries/gridTool.js | 77 ++++++++++++++++++++++++++++----- 2 files changed, 68 insertions(+), 15 deletions(-) diff --git a/examples/html/gridControls.html b/examples/html/gridControls.html index d95c9545e4..06090da423 100644 --- a/examples/html/gridControls.html +++ b/examples/html/gridControls.html @@ -29,11 +29,11 @@ elPosY.value = origin.y.toFixed(2); } - if (data.minorGridSpacing) { + if (data.minorGridSpacing !== undefined) { elMinorSpacing.value = data.minorGridSpacing; } - if (data.majorGridEvery) { + if (data.majorGridEvery !== undefined) { elMajorSpacing.value = data.majorGridEvery; } @@ -41,7 +41,7 @@ gridColor = data.gridColor; } - if (data.elSnapToGrid !== undefined) { + if (data.snapToGrid !== undefined) { elSnapToGrid.checked = data.snapToGrid == true; } diff --git a/examples/libraries/gridTool.js b/examples/libraries/gridTool.js index 7d98befec8..1793fb5b4f 100644 --- a/examples/libraries/gridTool.js +++ b/examples/libraries/gridTool.js @@ -1,3 +1,9 @@ +var SETTING_GRID_VISIBLE = 'gridVisible'; +var SETTING_GRID_SNAP_TO_GRID = 'gridSnapToGrid'; +var SETTING_GRID_MINOR_WIDTH= 'gridMinorWidth'; +var SETTING_GRID_MAJOR_EVERY = 'gridMajorEvery'; +var SETTING_GRID_COLOR = 'gridColor'; + Grid = function(opts) { var that = {}; @@ -12,9 +18,6 @@ Grid = function(opts) { var worldSize = 16384; - var minorGridWidth = 0.5; - var majorGridWidth = 1.5; - var snapToGrid = false; var gridOverlay = Overlays.addOverlay("grid", { @@ -23,7 +26,7 @@ Grid = function(opts) { color: { red: 0, green: 0, blue: 128 }, alpha: 1.0, rotation: Quat.fromPitchYawRollDegrees(90, 0, 0), - minorGridWidth: 0.1, + minorGridSpacing: 0.1, majorGridEvery: 2, }); @@ -40,16 +43,38 @@ Grid = function(opts) { that.getSnapToGrid = function() { return snapToGrid; }; that.setEnabled = function(enabled) { - that.enabled = enabled; - updateGrid(); + if (that.enabled != enabled) { + that.enabled = enabled; + + if (enabled) { + if (selectionManager.hasSelection()) { + that.setPosition(selectionManager.getBottomPosition()); + } else { + that.setPosition(MyAvatar.position); + } + } + + updateGrid(); + } } that.setVisible = function(visible, noUpdate) { - that.visible = visible; - updateGrid(); + if (visible != that.visible) { + that.visible = visible; + updateGrid(); - if (!noUpdate) { - that.emitUpdate(); + print("Setting visible"); + if (visible) { + if (selectionManager.hasSelection()) { + that.setPosition(selectionManager.getBottomPosition()); + } else { + that.setPosition(MyAvatar.position); + } + } + + if (!noUpdate) { + that.emitUpdate(); + } } } @@ -171,7 +196,7 @@ Grid = function(opts) { Overlays.editOverlay(gridOverlay, { position: { x: origin.y, y: origin.y, z: -origin.y }, visible: that.visible && that.enabled, - minorGridWidth: minorGridSpacing, + minorGridSpacing: minorGridSpacing, majorGridEvery: majorGridEvery, color: gridColor, alpha: gridAlpha, @@ -181,15 +206,43 @@ Grid = function(opts) { } function cleanup() { + saveSettings(); + Overlays.deleteOverlay(gridOverlay); } + function loadSettings() { + that.setVisible(Settings.getValue(SETTING_GRID_VISIBLE) == "true", true); + snapToGrid = Settings.getValue(SETTING_GRID_SNAP_TO_GRID) == "true"; + minorGridSpacing = parseFloat(Settings.getValue(SETTING_GRID_MINOR_WIDTH), 10); + majorGridEvery = parseInt(Settings.getValue(SETTING_GRID_MAJOR_EVERY), 10); + try { + var newColor = JSON.parse(Settings.getValue(SETTING_GRID_COLOR)); + if (newColor.red !== undefined && newColor.green !== undefined && newColor.blue !== undefined) { + gridColor.red = newColor.red; + gridColor.green = newColor.green; + gridColor.blue = newColor.blue; + } + } catch (e) { + } + updateGrid(); + } + + function saveSettings() { + Settings.setValue(SETTING_GRID_VISIBLE, that.visible); + Settings.setValue(SETTING_GRID_SNAP_TO_GRID, snapToGrid); + Settings.setValue(SETTING_GRID_MINOR_WIDTH, minorGridSpacing); + Settings.setValue(SETTING_GRID_MAJOR_EVERY, majorGridEvery); + Settings.setValue(SETTING_GRID_COLOR, JSON.stringify(gridColor)); + } + that.addListener = function(callback) { that.onUpdate = callback; } Script.scriptEnding.connect(cleanup); - updateGrid(); + + loadSettings(); that.onUpdate = null; From 2696f71be93b318098d5217ce455557d9343a13f Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 9 Dec 2014 08:54:28 -0800 Subject: [PATCH 2/3] Update edit entities to disable on wasd or arrow keys --- examples/newEditEntities.js | 45 ++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/examples/newEditEntities.js b/examples/newEditEntities.js index ef1be8fef9..f9f604afe8 100644 --- a/examples/newEditEntities.js +++ b/examples/newEditEntities.js @@ -215,6 +215,28 @@ var toolBar = (function () { Overlays.editOverlay(loadFileMenuItem, { visible: active }); } + + that.setActive = function(active) { + if (active != isActive) { + isActive = active; + if (!isActive) { + entityListTool.setVisible(false); + gridTool.setVisible(false); + grid.setEnabled(false); + propertiesTool.setVisible(false); + selectionManager.clearSelections(); + cameraManager.disable(); + } else { + cameraManager.enable(); + entityListTool.setVisible(true); + gridTool.setVisible(true); + propertiesTool.setVisible(true); + grid.setEnabled(true); + } + } + toolBar.selectTool(activeButton, active); + }; + var RESIZE_INTERVAL = 50; var RESIZE_TIMEOUT = 20000; var RESIZE_MAX_CHECKS = RESIZE_TIMEOUT / RESIZE_INTERVAL; @@ -290,21 +312,7 @@ var toolBar = (function () { clickedOverlay = Overlays.getOverlayAtPoint({ x: event.x, y: event.y }); if (activeButton === toolBar.clicked(clickedOverlay)) { - isActive = !isActive; - if (!isActive) { - entityListTool.setVisible(false); - gridTool.setVisible(false); - grid.setEnabled(false); - propertiesTool.setVisible(false); - selectionManager.clearSelections(); - cameraManager.disable(); - } else { - cameraManager.enable(); - entityListTool.setVisible(true); - gridTool.setVisible(true); - grid.setEnabled(true); - propertiesTool.setVisible(true); - } + that.setActive(!isActive); return true; } @@ -817,6 +825,13 @@ function handeMenuEvent(menuItem) { Menu.menuItemEvent.connect(handeMenuEvent); +Controller.keyPressEvent.connect(function(event) { + if (event.text == 'w' || event.text == 'a' || event.text == 's' || event.text == 'd' + || event.text == 'UP' || event.text == 'DOWN' || event.text == 'LEFT' || event.text == 'RIGHT') { + toolBar.setActive(false); + } +}); + Controller.keyReleaseEvent.connect(function (event) { // since sometimes our menu shortcut keys don't work, trap our menu items here also and fire the appropriate menu items if (event.text == "`") { From 19ba2a1f84a6cd1ac0361e022885e2d1d134bdf4 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 9 Dec 2014 08:56:29 -0800 Subject: [PATCH 3/3] Remove print statement --- examples/libraries/gridTool.js | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/libraries/gridTool.js b/examples/libraries/gridTool.js index 1793fb5b4f..622822e108 100644 --- a/examples/libraries/gridTool.js +++ b/examples/libraries/gridTool.js @@ -63,7 +63,6 @@ Grid = function(opts) { that.visible = visible; updateGrid(); - print("Setting visible"); if (visible) { if (selectionManager.hasSelection()) { that.setPosition(selectionManager.getBottomPosition());