Fix jitter when start moving camera in edit mode focused on entity

This commit is contained in:
David Rowe 2020-01-12 17:37:58 +13:00
parent 2abbdfbfe9
commit 316abaeedc
2 changed files with 25 additions and 0 deletions

View file

@ -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);

View file

@ -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;