From 316abaeedc743110335a98ab49bcd901f70f493b Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sun, 12 Jan 2020 17:37:58 +1300 Subject: [PATCH] Fix jitter when start moving camera in edit mode focused on entity --- scripts/system/inspect.js | 21 ++++++++++++++++++++ scripts/system/libraries/entityCameraTool.js | 4 ++++ 2 files changed, 25 insertions(+) diff --git a/scripts/system/inspect.js b/scripts/system/inspect.js index 6f21e7e8ba..e00dd5f3c2 100644 --- a/scripts/system/inspect.js +++ b/scripts/system/inspect.js @@ -61,6 +61,20 @@ var mode = noMode; var isAwayEnabled = true; +var EDIT_CAMERA_MANAGER_CHANNEL = "Edit-Camera-Manager-Channel"; +var isEditUsingCamera = false; +Messages.messageReceived.connect(function (channel, data, senderID, localOnly) { + if (channel === EDIT_CAMERA_MANAGER_CHANNEL && senderID === MyAvatar.sessionUUID && localOnly) { + var message; + try { + message = JSON.parse(data); + isEditUsingCamera = message.enabled; + } catch (e) { + // Ignore. + } + } +}); + var pick = Picks.createPick(PickType.Ray, { filter: Picks.PICK_DOMAIN_ENTITIES | Picks.PICK_AVATAR_ENTITIES | Picks.PICK_AVATARS | Picks.INCLUDE_VISIBLE | Picks.PICK_INCLUDE_COLLIDABLE | Picks.PICK_INCLUDE_NONCOLLIDABLE | Picks.PICK_PRECISE, @@ -183,6 +197,10 @@ function restoreCameraState() { } function handleModes() { + if (isEditUsingCamera) { + return; + } + var newMode = (mode === noMode) ? noMode : detachedMode; if (alt) { if (control) { @@ -231,6 +249,9 @@ function keyPressEvent(event) { var changed = false; if (event.text === "ALT") { + if (isEditUsingCamera) { + return; + } alt = true; changed = true; Picks.enablePick(pick); diff --git a/scripts/system/libraries/entityCameraTool.js b/scripts/system/libraries/entityCameraTool.js index 2968b8e903..b93879d8e1 100644 --- a/scripts/system/libraries/entityCameraTool.js +++ b/scripts/system/libraries/entityCameraTool.js @@ -68,6 +68,8 @@ CameraManager = function() { that.enabled = false; that.mode = MODE_INACTIVE; + var EDIT_CAMERA_MANAGER_CHANNEL = "Edit-Camera-Manager-Channel"; + Messages.sendLocalMessage(EDIT_CAMERA_MANAGER_CHANNEL, JSON.stringify({ enabled: false })); var actions = { orbitLeft: 0, @@ -153,6 +155,7 @@ CameraManager = function() { that.enabled = true; that.mode = MODE_INACTIVE; + Messages.sendLocalMessage(EDIT_CAMERA_MANAGER_CHANNEL, JSON.stringify({ enabled: true })); // Pick a point INITIAL_ZOOM_DISTANCE in front of the camera to use as a focal point that.zoomDistance = INITIAL_ZOOM_DISTANCE; @@ -193,6 +196,7 @@ CameraManager = function() { that.enabled = false; that.mode = MODE_INACTIVE; + Messages.sendLocalMessage(EDIT_CAMERA_MANAGER_CHANNEL, JSON.stringify({ enabled: false })); if (!ignoreCamera) { Camera.mode = that.previousCameraMode;