diff --git a/examples/editEntities.js b/examples/editEntities.js index 2d0fb3dc8a..df8605f9df 100644 --- a/examples/editEntities.js +++ b/examples/editEntities.js @@ -62,6 +62,11 @@ selectionManager.addEventListener(function() { gridTool.setVisible(true); hasShownPropertiesTool = true; } + if (!selectionManager.hasSelection()) { + toolBar.setActive(false); + } else { + toolBar.setActive(true); + } }); var windowDimensions = Controller.getViewportDimensions(); @@ -129,11 +134,13 @@ var toolBar = (function () { function initialize() { toolBar = new ToolBar(0, 0, ToolBar.VERTICAL); + // Hide active button for now - this may come back, so not deleting yet. activeButton = toolBar.addTool({ imageURL: toolIconUrl + "models-tool.svg", - subImage: { x: 0, y: Tool.IMAGE_WIDTH, width: Tool.IMAGE_WIDTH, height: Tool.IMAGE_HEIGHT }, - width: toolWidth, - height: toolHeight, + // subImage: { x: 0, y: Tool.IMAGE_WIDTH, width: Tool.IMAGE_WIDTH, height: Tool.IMAGE_HEIGHT }, + subImage: { x: 0, y: Tool.IMAGE_WIDTH, width: 0, height: 0 }, + width: 0,//toolWidth, + height: 0,//toolHeight, alpha: 0.9, visible: true }, true, false); @@ -548,19 +555,16 @@ function mouseMoveEvent(event) { } mouseHasMovedSincePress = true; - if (isActive) { - // allow the selectionDisplay and cameraManager to handle the event first, if it doesn't handle it, then do our own thing - if (selectionDisplay.mouseMoveEvent(event) || cameraManager.mouseMoveEvent(event)) { - return; - } - lastMousePosition = { x: event.x, y: event.y }; - - highlightEntityUnderCursor(lastMousePosition, false); - idleMouseTimerId = Script.setTimeout(handleIdleMouse, IDLE_MOUSE_TIMEOUT); - } else { - cameraManager.mouseMoveEvent(event); + // allow the selectionDisplay and cameraManager to handle the event first, if it doesn't handle it, then do our own thing + if (selectionDisplay.mouseMoveEvent(event) || cameraManager.mouseMoveEvent(event)) { + return; } + + lastMousePosition = { x: event.x, y: event.y }; + + highlightEntityUnderCursor(lastMousePosition, false); + idleMouseTimerId = Script.setTimeout(handleIdleMouse, IDLE_MOUSE_TIMEOUT); } function handleIdleMouse() { @@ -613,7 +617,7 @@ function mouseReleaseEvent(event) { } function mouseClickEvent(event) { - if (!isActive) { + if (!event.isRightButton) { return; } @@ -624,6 +628,7 @@ function mouseClickEvent(event) { } return; } + toolBar.setActive(true); var pickRay = result.pickRay; var foundEntity = result.entityID; @@ -837,6 +842,8 @@ 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 == "BACKSPACE" || event.text == "DELETE") { deleteSelectedEntities(); + } else if (event.text == "ESC") { + selectionManager.clearSelections(); } else if (event.text == "TAB") { selectionDisplay.toggleSpaceMode(); } else if (event.text == "f") { @@ -1040,4 +1047,4 @@ PropertiesTool = function(opts) { }; propertiesTool = PropertiesTool(); - +toolBar.setActive(true); diff --git a/examples/libraries/entityCameraTool.js b/examples/libraries/entityCameraTool.js index 609c1db076..bf5bf6b105 100644 --- a/examples/libraries/entityCameraTool.js +++ b/examples/libraries/entityCameraTool.js @@ -267,6 +267,11 @@ CameraManager = function() { if (that.enabled && that.mode != MODE_INACTIVE) { var x = Window.getCursorPositionX(); var y = Window.getCursorPositionY(); + if (!hasDragged) { + that.lastMousePosition.x = x; + that.lastMousePosition.y = y; + hasDragged = true; + } if (that.mode == MODE_ORBIT) { var diffX = x - that.lastMousePosition.x; var diffY = y - that.lastMousePosition.y; @@ -294,9 +299,31 @@ CameraManager = function() { that.moveFocalPoint(dPosition); } - var newX = Window.x + Window.innerWidth / 2; - var newY = Window.y + Window.innerHeight / 2; - Window.setCursorPosition(newX, newY); + + var newX = x; + var newY = y; + var updatePosition = false; + + if (x <= Window.x) { + newX = Window.x + Window.innerWidth; + updatePosition = true; + } else if (x >= (Window.x + Window.innerWidth)) { + newX = Window.x; + updatePosition = true; + } + + if (y <= Window.y) { + newY = Window.y + Window.innerHeight; + updatePosition = true; + } else if (y >= (Window.y + Window.innerHeight)) { + newY = Window.y; + updatePosition = true; + } + + if (updatePosition) { + Window.setCursorPosition(newX, newY); + } + that.lastMousePosition.x = newX; that.lastMousePosition.y = newY; @@ -305,6 +332,7 @@ CameraManager = function() { return false; } + var hasDragged = false; that.mousePressEvent = function(event) { if (cameraTool.mousePressEvent(event)) { return true; @@ -319,12 +347,7 @@ CameraManager = function() { } if (that.mode != MODE_INACTIVE) { - var newX = Window.x + Window.innerWidth / 2; - var newY = Window.y + Window.innerHeight / 2; - Window.setCursorPosition(newX, newY); - that.lastMousePosition.x = newX; - that.lastMousePosition.y = newY; - Window.setCursorVisible(false); + hasDragged = false; return true; }