mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 03:44:02 +02:00
Grabber Tool Move up, remove billboard on grabbermoveupoverlay
This commit is contained in:
parent
e9f3dd6e44
commit
a02ee5b7d5
1 changed files with 65 additions and 181 deletions
|
@ -3,7 +3,7 @@
|
|||
// examples
|
||||
//
|
||||
// Created by Brad hefta-Gaub on 10/1/14.
|
||||
// Modified by Daniela Fontes @DanielaFifo and Tiago Andrade @TagoWill on 4/7/2017
|
||||
// Modified by Daniela Fontes * @DanielaFifo and Tiago Andrade @TagoWill on 4/7/2017
|
||||
// Copyright 2014 High Fidelity, Inc.
|
||||
//
|
||||
// This script implements a class useful for building tools for editing entities.
|
||||
|
@ -71,44 +71,16 @@ SelectionManager = (function() {
|
|||
that.selections = [];
|
||||
var listeners = [];
|
||||
|
||||
that.localRotation = Quat.fromPitchYawRollDegrees(0, 0, 0);
|
||||
that.localPosition = {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
};
|
||||
that.localDimensions = {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
};
|
||||
that.localRegistrationPoint = {
|
||||
x: 0.5,
|
||||
y: 0.5,
|
||||
z: 0.5
|
||||
};
|
||||
that.localRotation = Quat.IDENTITY;
|
||||
that.localPosition = Vec3.ZERO;
|
||||
that.localDimensions = Vec3.ZERO;
|
||||
that.localRegistrationPoint = Vec3.HALF;
|
||||
|
||||
that.worldRotation = Quat.fromPitchYawRollDegrees(0, 0, 0);
|
||||
that.worldPosition = {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
};
|
||||
that.worldDimensions = {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
};
|
||||
that.worldRegistrationPoint = {
|
||||
x: 0.5,
|
||||
y: 0.5,
|
||||
z: 0.5
|
||||
};
|
||||
that.centerPosition = {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
};
|
||||
that.worldRotation = Quat.IDENTITY;
|
||||
that.worldPosition = Vec3.ZERO;
|
||||
that.worldDimensions = Vec3.ZERO;
|
||||
that.worldRegistrationPoint = Vec3.HALF;
|
||||
that.centerPosition = Vec3.ZERO;
|
||||
|
||||
that.saveProperties = function() {
|
||||
that.savedProperties = {};
|
||||
|
@ -231,6 +203,14 @@ SelectionManager = (function() {
|
|||
print("ERROR: entitySelectionTool.update got exception: " + JSON.stringify(e));
|
||||
}
|
||||
}
|
||||
|
||||
//update overlay to face Avatar
|
||||
if ((!activeTool) || isActiveTool(grabberMoveUp)) {
|
||||
Overlays.editOverlay(grabberMoveUp, {
|
||||
rotation: Quat.lookAt(grabberMoveUpPosition, Camera.position, Quat.getUp(MyAvatar.orientation))
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
return that;
|
||||
|
@ -350,11 +330,7 @@ SelectionDisplay = (function() {
|
|||
};
|
||||
var grabberLineWidth = 0.5;
|
||||
var grabberSolid = true;
|
||||
var grabberMoveUpPosition = {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
};
|
||||
var grabberMoveUpPosition = Vec3.ZERO;
|
||||
|
||||
var lightOverlayColor = {
|
||||
red: 255,
|
||||
|
@ -363,11 +339,7 @@ SelectionDisplay = (function() {
|
|||
};
|
||||
|
||||
var grabberPropertiesCorner = {
|
||||
position: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
position: Vec3.ZERO,
|
||||
size: grabberSizeCorner,
|
||||
color: grabberColorCorner,
|
||||
alpha: 1,
|
||||
|
@ -380,11 +352,7 @@ SelectionDisplay = (function() {
|
|||
};
|
||||
|
||||
var grabberPropertiesEdge = {
|
||||
position: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
position: Vec3.ZERO,
|
||||
size: grabberSizeEdge,
|
||||
color: grabberColorEdge,
|
||||
alpha: 1,
|
||||
|
@ -397,11 +365,7 @@ SelectionDisplay = (function() {
|
|||
};
|
||||
|
||||
var grabberPropertiesFace = {
|
||||
position: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
position: Vec3.ZERO,
|
||||
size: grabberSizeFace,
|
||||
color: grabberColorFace,
|
||||
alpha: 1,
|
||||
|
@ -414,11 +378,7 @@ SelectionDisplay = (function() {
|
|||
};
|
||||
|
||||
var grabberPropertiesCloner = {
|
||||
position: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
position: Vec3.ZERO,
|
||||
size: grabberSizeCorner,
|
||||
color: grabberColorCloner,
|
||||
alpha: 1,
|
||||
|
@ -436,11 +396,7 @@ SelectionDisplay = (function() {
|
|||
};
|
||||
|
||||
var highlightBox = Overlays.addOverlay("cube", {
|
||||
position: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
position: Vec3.ZERO,
|
||||
size: 1,
|
||||
color: {
|
||||
red: 90,
|
||||
|
@ -457,11 +413,7 @@ SelectionDisplay = (function() {
|
|||
});
|
||||
|
||||
var selectionBox = Overlays.addOverlay("cube", {
|
||||
position: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
position: Vec3.ZERO,
|
||||
size: 1,
|
||||
color: {
|
||||
red: 255,
|
||||
|
@ -478,11 +430,7 @@ SelectionDisplay = (function() {
|
|||
var selectionBoxes = [];
|
||||
|
||||
var rotationDegreesDisplay = Overlays.addOverlay("text3d", {
|
||||
position: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
position: Vec3.ZERO,
|
||||
text: "",
|
||||
color: {
|
||||
red: 0,
|
||||
|
@ -513,17 +461,12 @@ SelectionDisplay = (function() {
|
|||
|
||||
var grabberMoveUp = Overlays.addOverlay("image3d", {
|
||||
url: HIFI_PUBLIC_BUCKET + "images/up-arrow.svg",
|
||||
position: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
position: Vec3.ZERO,
|
||||
color: handleColor,
|
||||
alpha: handleAlpha,
|
||||
visible: false,
|
||||
size: 0.1,
|
||||
scale: 0.1,
|
||||
isFacingAvatar: true,
|
||||
drawInFront: true
|
||||
});
|
||||
|
||||
|
@ -720,16 +663,8 @@ SelectionDisplay = (function() {
|
|||
var xRailOverlay = Overlays.addOverlay("line3d", {
|
||||
visible: false,
|
||||
lineWidth: 1.0,
|
||||
start: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
end: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
start: Vec3.ZERO,
|
||||
end: Vec3.ZERO,
|
||||
color: {
|
||||
red: 255,
|
||||
green: 0,
|
||||
|
@ -740,16 +675,8 @@ SelectionDisplay = (function() {
|
|||
var yRailOverlay = Overlays.addOverlay("line3d", {
|
||||
visible: false,
|
||||
lineWidth: 1.0,
|
||||
start: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
end: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
start: Vec3.ZERO,
|
||||
end: Vec3.ZERO,
|
||||
color: {
|
||||
red: 0,
|
||||
green: 255,
|
||||
|
@ -760,16 +687,8 @@ SelectionDisplay = (function() {
|
|||
var zRailOverlay = Overlays.addOverlay("line3d", {
|
||||
visible: false,
|
||||
lineWidth: 1.0,
|
||||
start: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
end: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
start: Vec3.ZERO,
|
||||
end: Vec3.ZERO,
|
||||
color: {
|
||||
red: 0,
|
||||
green: 0,
|
||||
|
@ -781,16 +700,8 @@ SelectionDisplay = (function() {
|
|||
var rotateZeroOverlay = Overlays.addOverlay("line3d", {
|
||||
visible: false,
|
||||
lineWidth: 2.0,
|
||||
start: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
end: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
start: Vec3.ZERO,
|
||||
end: Vec3.ZERO,
|
||||
color: {
|
||||
red: 255,
|
||||
green: 0,
|
||||
|
@ -802,16 +713,8 @@ SelectionDisplay = (function() {
|
|||
var rotateCurrentOverlay = Overlays.addOverlay("line3d", {
|
||||
visible: false,
|
||||
lineWidth: 2.0,
|
||||
start: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
end: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
start: Vec3.ZERO,
|
||||
end: Vec3.ZERO,
|
||||
color: {
|
||||
red: 0,
|
||||
green: 0,
|
||||
|
@ -822,11 +725,7 @@ SelectionDisplay = (function() {
|
|||
|
||||
|
||||
var rotateOverlayInner = Overlays.addOverlay("circle3d", {
|
||||
position: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
position: Vec3.ZERO,
|
||||
size: 1,
|
||||
color: {
|
||||
red: 51,
|
||||
|
@ -856,11 +755,7 @@ SelectionDisplay = (function() {
|
|||
});
|
||||
|
||||
var rotateOverlayOuter = Overlays.addOverlay("circle3d", {
|
||||
position: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
position: Vec3.ZERO,
|
||||
size: 1,
|
||||
color: {
|
||||
red: 51,
|
||||
|
@ -891,11 +786,7 @@ SelectionDisplay = (function() {
|
|||
});
|
||||
|
||||
var rotateOverlayCurrent = Overlays.addOverlay("circle3d", {
|
||||
position: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
position: Vec3.ZERO,
|
||||
size: 1,
|
||||
color: {
|
||||
red: 224,
|
||||
|
@ -922,11 +813,7 @@ SelectionDisplay = (function() {
|
|||
|
||||
var yawHandle = Overlays.addOverlay("image3d", {
|
||||
url: ROTATE_ARROW_WEST_NORTH_URL,
|
||||
position: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
position: Vec3.ZERO,
|
||||
color: handleColor,
|
||||
alpha: handleAlpha,
|
||||
visible: false,
|
||||
|
@ -939,11 +826,7 @@ SelectionDisplay = (function() {
|
|||
|
||||
var pitchHandle = Overlays.addOverlay("image3d", {
|
||||
url: ROTATE_ARROW_WEST_NORTH_URL,
|
||||
position: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
position: Vec3.ZERO,
|
||||
color: handleColor,
|
||||
alpha: handleAlpha,
|
||||
visible: false,
|
||||
|
@ -956,11 +839,7 @@ SelectionDisplay = (function() {
|
|||
|
||||
var rollHandle = Overlays.addOverlay("image3d", {
|
||||
url: ROTATE_ARROW_WEST_NORTH_URL,
|
||||
position: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0
|
||||
},
|
||||
position: Vec3.ZERO,
|
||||
color: handleColor,
|
||||
alpha: handleAlpha,
|
||||
visible: false,
|
||||
|
@ -1550,11 +1429,11 @@ SelectionDisplay = (function() {
|
|||
Overlays.editOverlay(rollHandle, {
|
||||
scale: handleSize
|
||||
});
|
||||
var pos = Vec3.sum(grabberMoveUpPosition, {
|
||||
x: 0,
|
||||
y: Vec3.length(diff) * GRABBER_DISTANCE_TO_SIZE_RATIO * 3,
|
||||
z: 0
|
||||
});
|
||||
var upDiff = Vec3.multiply((
|
||||
Vec3.length(diff) * GRABBER_DISTANCE_TO_SIZE_RATIO * 3),
|
||||
Quat.getUp(MyAvatar.orientation)
|
||||
);
|
||||
var pos = Vec3.sum(grabberMoveUpPosition, upDiff);
|
||||
Overlays.editOverlay(grabberMoveUp, {
|
||||
position: pos,
|
||||
scale: handleSize / 1.25
|
||||
|
@ -1636,7 +1515,7 @@ SelectionDisplay = (function() {
|
|||
position = SelectionManager.localPosition;
|
||||
registrationPoint = SelectionManager.localRegistrationPoint;
|
||||
} else {
|
||||
rotation = Quat.fromPitchYawRollDegrees(0, 0, 0);
|
||||
rotation = Quat.IDENTITY;
|
||||
dimensions = SelectionManager.worldDimensions;
|
||||
position = SelectionManager.worldPosition;
|
||||
registrationPoint = SelectionManager.worldRegistrationPoint;
|
||||
|
@ -2227,13 +2106,15 @@ SelectionDisplay = (function() {
|
|||
});
|
||||
|
||||
var grabberMoveUpOffset = 0.1;
|
||||
var upVec = Quat.getUp(MyAvatar.orientation);
|
||||
grabberMoveUpPosition = {
|
||||
x: position.x,
|
||||
y: position.y + worldTop + grabberMoveUpOffset,
|
||||
z: position.z
|
||||
x: position.x + (grabberMoveUpOffset + worldTop) * upVec.x ,
|
||||
y: position.y+ (grabberMoveUpOffset + worldTop) * upVec.y,
|
||||
z: position.z + (grabberMoveUpOffset + worldTop) * upVec.z
|
||||
};
|
||||
Overlays.editOverlay(grabberMoveUp, {
|
||||
visible: (!activeTool) || isActiveTool(grabberMoveUp)
|
||||
visible: (!activeTool) || isActiveTool(grabberMoveUp),
|
||||
rotation: Quat.lookAt(grabberMoveUpPosition, Camera.position, upVec)
|
||||
});
|
||||
|
||||
Overlays.editOverlay(baseOfEntityProjectionOverlay, {
|
||||
|
@ -2544,9 +2425,6 @@ SelectionDisplay = (function() {
|
|||
mode: "TRANSLATE_UP_DOWN",
|
||||
onBegin: function(event, pickRay, pickResult) {
|
||||
upDownPickNormal = Quat.getForward(lastCameraOrientation);
|
||||
// Remove y component so the y-axis lies along the plane we're picking on - this will
|
||||
// give movements that follow the mouse.
|
||||
upDownPickNormal.y = 0;
|
||||
lastXYPick = rayPlaneIntersection(pickRay, SelectionManager.worldPosition, upDownPickNormal);
|
||||
|
||||
SelectionManager.saveProperties();
|
||||
|
@ -2583,11 +2461,17 @@ SelectionDisplay = (function() {
|
|||
var newIntersection = rayPlaneIntersection(pickRay, SelectionManager.worldPosition, upDownPickNormal);
|
||||
|
||||
var vector = Vec3.subtract(newIntersection, lastXYPick);
|
||||
|
||||
// project vector onto avatar up vector
|
||||
// we want the avatar referential not the camera.
|
||||
var avatarUpVector = Quat.getUp(MyAvatar.orientation);
|
||||
var dotVectorUp = Vec3.dot(vector, avatarUpVector);
|
||||
vector = Vec3.multiply(dotVectorUp, avatarUpVector);
|
||||
|
||||
|
||||
vector = grid.snapToGrid(vector);
|
||||
|
||||
// we only care about the Y axis
|
||||
vector.x = 0;
|
||||
vector.z = 0;
|
||||
|
||||
|
||||
var wantDebug = false;
|
||||
if (wantDebug) {
|
||||
|
@ -2692,7 +2576,7 @@ SelectionDisplay = (function() {
|
|||
var onBegin = function(event, pickRay, pickResult) {
|
||||
var properties = Entities.getEntityProperties(SelectionManager.selections[0]);
|
||||
initialProperties = properties;
|
||||
rotation = (spaceMode === SPACE_LOCAL) ? properties.rotation : Quat.fromPitchYawRollDegrees(0, 0, 0);
|
||||
rotation = (spaceMode === SPACE_LOCAL) ? properties.rotation : Quat.IDENTITY;
|
||||
|
||||
if (spaceMode === SPACE_LOCAL) {
|
||||
rotation = SelectionManager.localRotation;
|
||||
|
|
Loading…
Reference in a new issue