punch list updates and various fixes

This commit is contained in:
David Back 2018-01-31 18:27:15 -08:00
parent 54e496329c
commit c01790bd3e

View file

@ -94,6 +94,7 @@ SelectionManager = (function() {
for (var i = 0; i < entityIDs.length; i++) { for (var i = 0; i < entityIDs.length; i++) {
var entityID = entityIDs[i]; var entityID = entityIDs[i];
that.selections.push(entityID); that.selections.push(entityID);
//Selection.addToSelectedItemsList("contextOverlayHighlightList", "entity", entityID);
} }
that._update(true); that._update(true);
@ -110,8 +111,10 @@ SelectionManager = (function() {
} }
if (idx === -1) { if (idx === -1) {
that.selections.push(entityID); that.selections.push(entityID);
//Selection.addToSelectedItemsList("contextOverlayHighlightList", "entity", entityID);
} else if (toggleSelection) { } else if (toggleSelection) {
that.selections.splice(idx, 1); that.selections.splice(idx, 1);
//Selection.removeFromSelectedItemsList("contextOverlayHighlightList", "entity", entityID);
} }
} }
@ -122,6 +125,7 @@ SelectionManager = (function() {
var idx = that.selections.indexOf(entityID); var idx = that.selections.indexOf(entityID);
if (idx >= 0) { if (idx >= 0) {
that.selections.splice(idx, 1); that.selections.splice(idx, 1);
//Selection.removeFromSelectedItemsList("contextOverlayHighlightList", "entity", entityID);
} }
that._update(true); that._update(true);
}; };
@ -145,9 +149,9 @@ SelectionManager = (function() {
that.localPosition = properties.position; that.localPosition = properties.position;
that.localRotation = properties.rotation; that.localRotation = properties.rotation;
that.localRegistrationPoint = properties.registrationPoint; that.localRegistrationPoint = properties.registrationPoint;
that.worldDimensions = properties.dimensions; // properties.boundingbox.dimensions; that.worldDimensions = properties.boundingBox.dimensions;
that.worldPosition = properties.position; that.worldPosition = properties.boundingBox.center;
that.worldRotation = properties.rotation; that.worldRotation = properties.boundingBox.rotation;
SelectionDisplay.setSpaceMode(SPACE_LOCAL); SelectionDisplay.setSpaceMode(SPACE_LOCAL);
} else { } else {
that.localRotation = null; that.localRotation = null;
@ -225,39 +229,43 @@ function getRelativeCenterPosition(dimensions, registrationPoint) {
SelectionDisplay = (function() { SelectionDisplay = (function() {
var that = {}; var that = {};
var COLOR_GREEN = { red:0, green:255, blue:0 }; var COLOR_GREEN = { red:44, green:142, blue:14 };
var COLOR_BLUE = { red:0, green:0, blue:255 }; var COLOR_BLUE = { red:0, green:147, blue:197 };
var COLOR_RED = { red:255, green:0, blue:0 }; var COLOR_RED = { red:183, green:10, blue:55 };
var GRABBER_TRANSLATE_ARROW_CYLINDER_OFFSET = 1.35; var GRABBER_TRANSLATE_ARROW_CYLINDER_OFFSET = 0.1;
var GRABBER_TRANSLATE_ARROW_CYLINDER_DIMENSION_MULTIPLE = 0.05; var GRABBER_TRANSLATE_ARROW_CYLINDER_CAMERA_DISTANCE_MULTIPLE = 0.005;
var GRABBER_TRANSLATE_ARROW_CYLINDER_Y_MULTIPLE = 7.5; var GRABBER_TRANSLATE_ARROW_CYLINDER_Y_MULTIPLE = 7.5;
var GRABBER_TRANSLATE_ARROW_CONE_DIMENSION_MULTIPLE = 0.25; var GRABBER_TRANSLATE_ARROW_CONE_CAMERA_DISTANCE_MULTIPLE = 0.025;
var GRABBER_ROTATE_RINGS_DIMENSION_MULTIPLE = 2.0; var GRABBER_ROTATE_RINGS_CAMERA_DISTANCE_MULTIPLE = 0.15;
var GRABBER_STRETCH_SPHERE_OFFSET = 1.0; var GRABBER_STRETCH_SPHERE_OFFSET = 0.06;
var GRABBER_STRETCH_SPHERE_DIMENSION_MULTIPLE = 0.1; var GRABBER_STRETCH_SPHERE_CAMERA_DISTANCE_MULTIPLE = 0.01;
var GRABBER_SCALE_CUBE_OFFSET = 1.0; var GRABBER_SCALE_CUBE_OFFSET = 0.5;
var GRABBER_SCALE_CUBE_DIMENSION_MULTIPLE = 0.15; var GRABBER_SCALE_CUBE_CAMERA_DISTANCE_MULTIPLE = 0.015;
var GRABBER_CLONER_OFFSET = { x:0.9, y:-0.9, z:0.9 }; var GRABBER_CLONER_OFFSET = { x:0.9, y:-0.9, z:0.9 };
var GRABBER_SCALE_CUBE_IDLE_COLOR = { red:120, green:120, blue:120 }; var GRABBER_SCALE_CUBE_IDLE_COLOR = { red:106, green:106, blue:106 };
var GRABBER_SCALE_CUBE_SELECTED_COLOR = { red:0, green:0, blue:0 }; var GRABBER_SCALE_CUBE_SELECTED_COLOR = { red:18, green:18, blue:18 };
var GRABBER_SCALE_EDGE_COLOR = { red:120, green:120, blue:120 }; var GRABBER_SCALE_EDGE_COLOR = { red:87, green:87, blue:87 };
var GRABBER_HOVER_COLOR = { red:227, green:227, blue:227 };
var SCALE_MINIMUM_DIMENSION = 0.02; var SCALE_MINIMUM_DIMENSION = 0.02;
var STRETCH_MINIMUM_DIMENSION = 0.001; var STRETCH_MINIMUM_DIMENSION = 0.001;
var STRETCH_DIRECTION_ALL_FACTOR = 15; var STRETCH_DIRECTION_ALL_FACTOR = 25;
// These are multipliers for sizing the rotation degrees display while rotating an entity // These are multipliers for sizing the rotation degrees display while rotating an entity
var ROTATION_DISPLAY_DISTANCE_MULTIPLIER = 1.0; var ROTATION_DISPLAY_DISTANCE_MULTIPLIER = 1.0;
var ROTATION_DISPLAY_SIZE_X_MULTIPLIER = 0.6; var ROTATION_DISPLAY_SIZE_X_MULTIPLIER = 0.3;
var ROTATION_DISPLAY_SIZE_Y_MULTIPLIER = 0.18; var ROTATION_DISPLAY_SIZE_Y_MULTIPLIER = 0.09;
var ROTATION_DISPLAY_LINE_HEIGHT_MULTIPLIER = 0.14; var ROTATION_DISPLAY_LINE_HEIGHT_MULTIPLIER = 0.07;
var ROTATION_CTRL_SNAP_ANGLE = 22.5; var ROTATION_CTRL_SNAP_ANGLE = 22.5;
var ROTATION_DEFAULT_SNAP_ANGLE = 1; var ROTATION_DEFAULT_SNAP_ANGLE = 1;
var ROTATION_DEFAULT_TICK_MARKS_ANGLE = 5; var ROTATION_DEFAULT_TICK_MARKS_ANGLE = 5;
var ROTATION_RING_IDLE_INNER_RADIUS = 0.97;
var ROTATION_RING_SELECTED_INNER_RADIUS = 0.9;
var TRANSLATE_DIRECTION = { var TRANSLATE_DIRECTION = {
X : 0, X : 0,
Y : 1, Y : 1,
@ -307,6 +315,10 @@ SelectionDisplay = (function() {
var ctrlPressed = false; var ctrlPressed = false;
var previousHandle = null;
var previousHandleHelper = null;
var previousHandleColor;
var activeTool = null; var activeTool = null;
var grabberTools = {}; var grabberTools = {};
@ -339,9 +351,10 @@ SelectionDisplay = (function() {
var grabberPropertiesRotateRings = { var grabberPropertiesRotateRings = {
alpha: 1, alpha: 1,
innerRadius: 0.9, solid: true,
startAt: 0, startAt: 0,
endAt: 360, endAt: 360,
innerRadius: ROTATION_RING_IDLE_INNER_RADIUS,
majorTickMarksAngle: ROTATION_DEFAULT_TICK_MARKS_ANGLE, majorTickMarksAngle: ROTATION_DEFAULT_TICK_MARKS_ANGLE,
majorTickMarksLength: 0.1, majorTickMarksLength: 0.1,
visible: false, visible: false,
@ -472,7 +485,7 @@ SelectionDisplay = (function() {
var selectionBox = Overlays.addOverlay("cube", { var selectionBox = Overlays.addOverlay("cube", {
size: 1, size: 1,
color: COLOR_RED, color: COLOR_RED,
alpha: 1, alpha: 0, // setting to 0 alpha for now to keep this hidden vs using visible false because its used as the translate xz tool overlay
solid: false, solid: false,
visible: false, visible: false,
dashed: false dashed: false
@ -644,12 +657,13 @@ SelectionDisplay = (function() {
pickNormal = { x:0, y:1, z:0 }; pickNormal = { x:0, y:1, z:0 };
} }
var rotation = SelectionManager.worldRotation; var rotation = spaceMode === SPACE_LOCAL ? SelectionManager.localRotation : SelectionManager.worldRotation;
pickNormal = Vec3.multiplyQbyV(rotation, pickNormal); pickNormal = Vec3.multiplyQbyV(rotation, pickNormal);
lastPick = rayPlaneIntersection(pickRay, SelectionManager.worldPosition, pickNormal); lastPick = rayPlaneIntersection(pickRay, SelectionManager.worldPosition, pickNormal);
SelectionManager.saveProperties(); SelectionManager.saveProperties();
that.resetPreviousHandleColor();
that.setGrabberTranslateXVisible(direction === TRANSLATE_DIRECTION.X); that.setGrabberTranslateXVisible(direction === TRANSLATE_DIRECTION.X);
that.setGrabberTranslateYVisible(direction === TRANSLATE_DIRECTION.Y); that.setGrabberTranslateYVisible(direction === TRANSLATE_DIRECTION.Y);
@ -696,7 +710,7 @@ SelectionDisplay = (function() {
projectionVector = { x:0, y:0, z:1 }; projectionVector = { x:0, y:0, z:1 };
} }
var rotation = SelectionManager.worldRotation; var rotation = spaceMode === SPACE_LOCAL ? SelectionManager.localRotation : SelectionManager.worldRotation;
projectionVector = Vec3.multiplyQbyV(rotation, projectionVector); projectionVector = Vec3.multiplyQbyV(rotation, projectionVector);
var dotVector = Vec3.dot(vector, projectionVector); var dotVector = Vec3.dot(vector, projectionVector);
@ -925,14 +939,15 @@ SelectionDisplay = (function() {
that.setGrabberStretchZVisible(directionEnum === STRETCH_DIRECTION.Z); that.setGrabberStretchZVisible(directionEnum === STRETCH_DIRECTION.Z);
that.setGrabberClonerVisible(false); that.setGrabberClonerVisible(false);
SelectionManager.saveProperties();
that.resetPreviousHandleColor();
if (stretchPanel != null) { if (stretchPanel != null) {
Overlays.editOverlay(stretchPanel, { visible: true }); Overlays.editOverlay(stretchPanel, { visible: true });
} }
if (scaleGrabber != null) { if (scaleGrabber != null) {
Overlays.editOverlay(scaleGrabber, { color: GRABBER_SCALE_CUBE_SELECTED_COLOR }); Overlays.editOverlay(scaleGrabber, { color: GRABBER_SCALE_CUBE_SELECTED_COLOR });
} }
SelectionManager.saveProperties();
}; };
var onEnd = function(event, reason) { var onEnd = function(event, reason) {
@ -1122,13 +1137,15 @@ SelectionDisplay = (function() {
// FUNCTION: UPDATE ROTATION DEGREES OVERLAY // FUNCTION: UPDATE ROTATION DEGREES OVERLAY
function updateRotationDegreesOverlay(angleFromZero, position) { function updateRotationDegreesOverlay(angleFromZero, position) {
var angle = angleFromZero * (Math.PI / 180); var angle = angleFromZero * (Math.PI / 180);
var cameraPosition = Camera.getPosition();
var entityToCameraDistance = Vec3.length(Vec3.subtract(cameraPosition, position));
var overlayProps = { var overlayProps = {
position: position, position: position,
dimensions: { dimensions: {
x: ROTATION_DISPLAY_SIZE_X_MULTIPLIER, x: entityToCameraDistance * ROTATION_DISPLAY_SIZE_X_MULTIPLIER,
y: ROTATION_DISPLAY_SIZE_Y_MULTIPLIER y: entityToCameraDistance * ROTATION_DISPLAY_SIZE_Y_MULTIPLIER
}, },
lineHeight: ROTATION_DISPLAY_LINE_HEIGHT_MULTIPLIER, lineHeight: entityToCameraDistance * ROTATION_DISPLAY_LINE_HEIGHT_MULTIPLIER,
text: normalizeDegrees(-angleFromZero) + "°" text: normalizeDegrees(-angleFromZero) + "°"
}; };
Overlays.editOverlay(rotationDegreesDisplay, overlayProps); Overlays.editOverlay(rotationDegreesDisplay, overlayProps);
@ -1173,6 +1190,7 @@ SelectionDisplay = (function() {
mode: mode, mode: mode,
onBegin: function(event, pickRay, pickResult) { onBegin: function(event, pickRay, pickResult) {
SelectionManager.saveProperties(); SelectionManager.saveProperties();
that.resetPreviousHandleColor();
that.setGrabberTranslateVisible(false); that.setGrabberTranslateVisible(false);
that.setGrabberRotatePitchVisible(direction === ROTATE_DIRECTION.PITCH); that.setGrabberRotatePitchVisible(direction === ROTATE_DIRECTION.PITCH);
@ -1196,9 +1214,13 @@ SelectionDisplay = (function() {
selectedGrabber = grabberRotateRollRing; selectedGrabber = grabberRotateRollRing;
} }
Overlays.editOverlay(selectedGrabber, { hasTickMarks: true }); Overlays.editOverlay(selectedGrabber, {
hasTickMarks: true,
solid: false,
innerRadius: ROTATION_RING_SELECTED_INNER_RADIUS
});
var rotation = SelectionManager.worldRotation; var rotation = spaceMode === SPACE_LOCAL ? SelectionManager.localRotation : SelectionManager.worldRotation;
rotationNormal = Vec3.multiplyQbyV(rotation, rotationNormal); rotationNormal = Vec3.multiplyQbyV(rotation, rotationNormal);
var rotCenter = SelectionManager.worldPosition; var rotCenter = SelectionManager.worldPosition;
@ -1221,12 +1243,16 @@ SelectionDisplay = (function() {
var rotCenterToZero = Vec3.subtract(rotZero, rotCenter); var rotCenterToZero = Vec3.subtract(rotZero, rotCenter);
var rotCenterToZeroLength = Vec3.length(rotCenterToZero); var rotCenterToZeroLength = Vec3.length(rotCenterToZero);
rotDegreePos = Vec3.sum(rotCenter, Vec3.multiply(Vec3.normalize(rotCenterToZero), rotCenterToZeroLength * 1.2)); rotDegreePos = Vec3.sum(rotCenter, Vec3.multiply(Vec3.normalize(rotCenterToZero), rotCenterToZeroLength * 1.75));
updateRotationDegreesOverlay(0, rotDegreePos); updateRotationDegreesOverlay(0, rotDegreePos);
}, },
onEnd: function(event, reason) { onEnd: function(event, reason) {
Overlays.editOverlay(rotationDegreesDisplay, { visible: false }); Overlays.editOverlay(rotationDegreesDisplay, { visible: false });
Overlays.editOverlay(selectedGrabber, { hasTickMarks: false }); Overlays.editOverlay(selectedGrabber, {
hasTickMarks: false,
solid: true,
innerRadius: ROTATION_RING_IDLE_INNER_RADIUS
});
Overlays.editOverlay(grabberRotateCurrentRing, { visible: false }); Overlays.editOverlay(grabberRotateCurrentRing, { visible: false });
pushCommandForSelections(); pushCommandForSelections();
}, },
@ -1266,6 +1292,7 @@ SelectionDisplay = (function() {
if (direction === ROTATE_DIRECTION.YAW) { if (direction === ROTATE_DIRECTION.YAW) {
Overlays.editOverlay(grabberRotateCurrentRing, { rotation: worldRotationZ }); Overlays.editOverlay(grabberRotateCurrentRing, { rotation: worldRotationZ });
} }
} }
} }
}); });
@ -1307,7 +1334,6 @@ SelectionDisplay = (function() {
}; };
that.highlightSelectable = function(entityID) { that.highlightSelectable = function(entityID) {
var properties = Entities.getEntityProperties(entityID);
}; };
that.unhighlightSelectable = function(entityID) { that.unhighlightSelectable = function(entityID) {
@ -1370,118 +1396,119 @@ SelectionDisplay = (function() {
} }
if (SelectionManager.hasSelection()) { if (SelectionManager.hasSelection()) {
var worldPosition = SelectionManager.worldPosition; var position = SelectionManager.worldPosition;
var worldRotation = SelectionManager.worldRotation; var rotation = spaceMode === SPACE_LOCAL ? SelectionManager.localRotation : SelectionManager.worldRotation;
var worldRotationInverse = Quat.inverse(worldRotation); var dimensions = spaceMode === SPACE_LOCAL ? SelectionManager.localDimensions : SelectionManager.worldDimensions;
var worldDimensions = SelectionManager.worldDimensions; var rotationInverse = Quat.inverse(rotation);
var worldDimensionsX = worldDimensions.x; var cameraPosition = Camera.getPosition();
var worldDimensionsY = worldDimensions.y; var entityToCameraDistance = Vec3.length(Vec3.subtract(cameraPosition, position));
var worldDimensionsZ = worldDimensions.z;
var dimensionAverage = (worldDimensionsX + worldDimensionsY + worldDimensionsZ) / 3;
var localRotationX = Quat.fromPitchYawRollDegrees(0, 0, -90); var localRotationX = Quat.fromPitchYawRollDegrees(0, 0, -90);
worldRotationX = Quat.multiply(worldRotation, localRotationX); rotationX = Quat.multiply(rotation, localRotationX);
worldRotationX = rotationX;
var localRotationY = Quat.fromPitchYawRollDegrees(0, 90, 0); var localRotationY = Quat.fromPitchYawRollDegrees(0, 90, 0);
worldRotationY = Quat.multiply(worldRotation, localRotationY); rotationY = Quat.multiply(rotation, localRotationY);
worldRotationY = rotationY;
var localRotationZ = Quat.fromPitchYawRollDegrees(90, 0, 0); var localRotationZ = Quat.fromPitchYawRollDegrees(90, 0, 0);
worldRotationZ = Quat.multiply(worldRotation, localRotationZ); rotationZ = Quat.multiply(rotation, localRotationZ);
worldRotationZ = rotationZ;
var arrowCylinderDimension = dimensionAverage * GRABBER_TRANSLATE_ARROW_CYLINDER_DIMENSION_MULTIPLE; var arrowCylinderDimension = entityToCameraDistance * GRABBER_TRANSLATE_ARROW_CYLINDER_CAMERA_DISTANCE_MULTIPLE;
var arrowCylinderDimensions = { x:arrowCylinderDimension, y:arrowCylinderDimension * GRABBER_TRANSLATE_ARROW_CYLINDER_Y_MULTIPLE, z:arrowCylinderDimension }; var arrowCylinderDimensions = { x:arrowCylinderDimension, y:arrowCylinderDimension * GRABBER_TRANSLATE_ARROW_CYLINDER_Y_MULTIPLE, z:arrowCylinderDimension };
var arrowConeDimension = dimensionAverage * GRABBER_TRANSLATE_ARROW_CONE_DIMENSION_MULTIPLE; var arrowConeDimension = entityToCameraDistance * GRABBER_TRANSLATE_ARROW_CONE_CAMERA_DISTANCE_MULTIPLE;
var arrowConeDimensions = { x:arrowConeDimension, y:arrowConeDimension, z:arrowConeDimension }; var arrowConeDimensions = { x:arrowConeDimension, y:arrowConeDimension, z:arrowConeDimension };
var cylinderXPos = Vec3.sum(worldPosition, Vec3.multiplyQbyV(worldRotation, { x:GRABBER_TRANSLATE_ARROW_CYLINDER_OFFSET * dimensionAverage, y:0, z:0 })); var cylinderXPos = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x:GRABBER_TRANSLATE_ARROW_CYLINDER_OFFSET * entityToCameraDistance, y:0, z:0 }));
Overlays.editOverlay(grabberTranslateXCylinder, { Overlays.editOverlay(grabberTranslateXCylinder, {
position: cylinderXPos, position: cylinderXPos,
rotation: worldRotationX, rotation: rotationX,
dimensions: arrowCylinderDimensions dimensions: arrowCylinderDimensions
}); });
var cylinderXDiff = Vec3.subtract(cylinderXPos, worldPosition); var cylinderXDiff = Vec3.subtract(cylinderXPos, position);
var coneXPos = Vec3.sum(cylinderXPos, Vec3.multiply(Vec3.normalize(cylinderXDiff), arrowCylinderDimensions.y * 0.83)); var coneXPos = Vec3.sum(cylinderXPos, Vec3.multiply(Vec3.normalize(cylinderXDiff), arrowCylinderDimensions.y * 0.83));
Overlays.editOverlay(grabberTranslateXCone, { Overlays.editOverlay(grabberTranslateXCone, {
position: coneXPos, position: coneXPos,
rotation: worldRotationX, rotation: rotationX,
dimensions: arrowConeDimensions dimensions: arrowConeDimensions
}); });
var cylinderYPos = Vec3.sum(worldPosition, Vec3.multiplyQbyV(worldRotation, { x:0, y:GRABBER_TRANSLATE_ARROW_CYLINDER_OFFSET * dimensionAverage, z:0 })); var cylinderYPos = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x:0, y:GRABBER_TRANSLATE_ARROW_CYLINDER_OFFSET * entityToCameraDistance, z:0 }));
Overlays.editOverlay(grabberTranslateYCylinder, { Overlays.editOverlay(grabberTranslateYCylinder, {
position: cylinderYPos, position: cylinderYPos,
rotation: worldRotationY, rotation: rotationY,
dimensions: arrowCylinderDimensions dimensions: arrowCylinderDimensions
}); });
var cylinderYDiff = Vec3.subtract(cylinderYPos, worldPosition); var cylinderYDiff = Vec3.subtract(cylinderYPos, position);
var coneYPos = Vec3.sum(cylinderYPos, Vec3.multiply(Vec3.normalize(cylinderYDiff), arrowCylinderDimensions.y * 0.83)); var coneYPos = Vec3.sum(cylinderYPos, Vec3.multiply(Vec3.normalize(cylinderYDiff), arrowCylinderDimensions.y * 0.83));
Overlays.editOverlay(grabberTranslateYCone, { Overlays.editOverlay(grabberTranslateYCone, {
position: coneYPos, position: coneYPos,
rotation: worldRotationY, rotation: rotationY,
dimensions: arrowConeDimensions dimensions: arrowConeDimensions
}); });
var cylinderZPos = Vec3.sum(worldPosition, Vec3.multiplyQbyV(worldRotation, { x:0, y:0, z:GRABBER_TRANSLATE_ARROW_CYLINDER_OFFSET * dimensionAverage })); var cylinderZPos = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x:0, y:0, z:GRABBER_TRANSLATE_ARROW_CYLINDER_OFFSET * entityToCameraDistance }));
Overlays.editOverlay(grabberTranslateZCylinder, { Overlays.editOverlay(grabberTranslateZCylinder, {
position: cylinderZPos, position: cylinderZPos,
rotation: worldRotationZ, rotation: rotationZ,
dimensions: arrowCylinderDimensions dimensions: arrowCylinderDimensions
}); });
var cylinderZDiff = Vec3.subtract(cylinderZPos, worldPosition); var cylinderZDiff = Vec3.subtract(cylinderZPos, position);
var coneZPos = Vec3.sum(cylinderZPos, Vec3.multiply(Vec3.normalize(cylinderZDiff), arrowCylinderDimensions.y * 0.83)); var coneZPos = Vec3.sum(cylinderZPos, Vec3.multiply(Vec3.normalize(cylinderZDiff), arrowCylinderDimensions.y * 0.83));
Overlays.editOverlay(grabberTranslateZCone, { Overlays.editOverlay(grabberTranslateZCone, {
position: coneZPos, position: coneZPos,
rotation: worldRotationZ, rotation: rotationZ,
dimensions: arrowConeDimensions dimensions: arrowConeDimensions
}); });
var grabberScaleCubeOffsetX = GRABBER_SCALE_CUBE_OFFSET * worldDimensionsX; var grabberScaleCubeOffsetX = GRABBER_SCALE_CUBE_OFFSET * dimensions.x;
var grabberScaleCubeOffsetY = GRABBER_SCALE_CUBE_OFFSET * worldDimensionsY; var grabberScaleCubeOffsetY = GRABBER_SCALE_CUBE_OFFSET * dimensions.y;
var grabberScaleCubeOffsetZ = GRABBER_SCALE_CUBE_OFFSET * worldDimensionsZ; var grabberScaleCubeOffsetZ = GRABBER_SCALE_CUBE_OFFSET * dimensions.z;
var scaleDimension = dimensionAverage * GRABBER_SCALE_CUBE_DIMENSION_MULTIPLE; var scaleDimension = entityToCameraDistance * GRABBER_SCALE_CUBE_CAMERA_DISTANCE_MULTIPLE;
var scaleDimensions = { x:scaleDimension, y:scaleDimension, z:scaleDimension }; var scaleDimensions = { x:scaleDimension, y:scaleDimension, z:scaleDimension };
var grabberScaleLBNCubePos = Vec3.sum(worldPosition, Vec3.multiplyQbyV(worldRotation, { x:-grabberScaleCubeOffsetX, y:-grabberScaleCubeOffsetY, z:-grabberScaleCubeOffsetZ })); var grabberScaleLBNCubePos = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x:-grabberScaleCubeOffsetX, y:-grabberScaleCubeOffsetY, z:-grabberScaleCubeOffsetZ }));
Overlays.editOverlay(grabberScaleLBNCube, { Overlays.editOverlay(grabberScaleLBNCube, {
position: grabberScaleLBNCubePos, position: grabberScaleLBNCubePos,
rotation: worldRotation, rotation: rotation,
dimensions: scaleDimensions dimensions: scaleDimensions
}); });
var grabberScaleRBNCubePos = Vec3.sum(worldPosition, Vec3.multiplyQbyV(worldRotation, { x:-grabberScaleCubeOffsetX, y:-grabberScaleCubeOffsetY, z:grabberScaleCubeOffsetZ })); var grabberScaleRBNCubePos = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x:-grabberScaleCubeOffsetX, y:-grabberScaleCubeOffsetY, z:grabberScaleCubeOffsetZ }));
Overlays.editOverlay(grabberScaleRBNCube, { Overlays.editOverlay(grabberScaleRBNCube, {
position: grabberScaleRBNCubePos, position: grabberScaleRBNCubePos,
rotation: worldRotation, rotation: rotation,
dimensions: scaleDimensions dimensions: scaleDimensions
}); });
var grabberScaleLBFCubePos = Vec3.sum(worldPosition, Vec3.multiplyQbyV(worldRotation, { x:grabberScaleCubeOffsetX, y:-grabberScaleCubeOffsetY, z:-grabberScaleCubeOffsetZ })); var grabberScaleLBFCubePos = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x:grabberScaleCubeOffsetX, y:-grabberScaleCubeOffsetY, z:-grabberScaleCubeOffsetZ }));
Overlays.editOverlay(grabberScaleLBFCube, { Overlays.editOverlay(grabberScaleLBFCube, {
position: grabberScaleLBFCubePos, position: grabberScaleLBFCubePos,
rotation: worldRotation, rotation: rotation,
dimensions: scaleDimensions dimensions: scaleDimensions
}); });
var grabberScaleRBFCubePos = Vec3.sum(worldPosition, Vec3.multiplyQbyV(worldRotation, { x:grabberScaleCubeOffsetX, y:-grabberScaleCubeOffsetY, z:grabberScaleCubeOffsetZ })); var grabberScaleRBFCubePos = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x:grabberScaleCubeOffsetX, y:-grabberScaleCubeOffsetY, z:grabberScaleCubeOffsetZ }));
Overlays.editOverlay(grabberScaleRBFCube, { Overlays.editOverlay(grabberScaleRBFCube, {
position: grabberScaleRBFCubePos, position: grabberScaleRBFCubePos,
rotation: worldRotation, rotation: rotation,
dimensions: scaleDimensions dimensions: scaleDimensions
}); });
var grabberScaleLTNCubePos = Vec3.sum(worldPosition, Vec3.multiplyQbyV(worldRotation, { x:-grabberScaleCubeOffsetX, y:grabberScaleCubeOffsetY, z:-grabberScaleCubeOffsetZ })); var grabberScaleLTNCubePos = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x:-grabberScaleCubeOffsetX, y:grabberScaleCubeOffsetY, z:-grabberScaleCubeOffsetZ }));
Overlays.editOverlay(grabberScaleLTNCube, { Overlays.editOverlay(grabberScaleLTNCube, {
position: grabberScaleLTNCubePos, position: grabberScaleLTNCubePos,
rotation: worldRotation, rotation: rotation,
dimensions: scaleDimensions dimensions: scaleDimensions
}); });
var grabberScaleRTNCubePos = Vec3.sum(worldPosition, Vec3.multiplyQbyV(worldRotation, { x:-grabberScaleCubeOffsetX, y:grabberScaleCubeOffsetY, z:grabberScaleCubeOffsetZ })); var grabberScaleRTNCubePos = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x:-grabberScaleCubeOffsetX, y:grabberScaleCubeOffsetY, z:grabberScaleCubeOffsetZ }));
Overlays.editOverlay(grabberScaleRTNCube, { Overlays.editOverlay(grabberScaleRTNCube, {
position: grabberScaleRTNCubePos, position: grabberScaleRTNCubePos,
rotation: worldRotation, rotation: rotation,
dimensions: scaleDimensions dimensions: scaleDimensions
}); });
var grabberScaleLTFCubePos = Vec3.sum(worldPosition, Vec3.multiplyQbyV(worldRotation, { x:grabberScaleCubeOffsetX, y:grabberScaleCubeOffsetY, z:-grabberScaleCubeOffsetZ })); var grabberScaleLTFCubePos = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x:grabberScaleCubeOffsetX, y:grabberScaleCubeOffsetY, z:-grabberScaleCubeOffsetZ }));
Overlays.editOverlay(grabberScaleLTFCube, { Overlays.editOverlay(grabberScaleLTFCube, {
position: grabberScaleLTFCubePos, position: grabberScaleLTFCubePos,
rotation: worldRotation, rotation: rotation,
dimensions: scaleDimensions dimensions: scaleDimensions
}); });
var grabberScaleRTFCubePos = Vec3.sum(worldPosition, Vec3.multiplyQbyV(worldRotation, { x:grabberScaleCubeOffsetX, y:grabberScaleCubeOffsetY, z:grabberScaleCubeOffsetZ })); var grabberScaleRTFCubePos = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x:grabberScaleCubeOffsetX, y:grabberScaleCubeOffsetY, z:grabberScaleCubeOffsetZ }));
Overlays.editOverlay(grabberScaleRTFCube, { Overlays.editOverlay(grabberScaleRTFCube, {
position: grabberScaleRTFCubePos, position: grabberScaleRTFCubePos,
rotation: worldRotation, rotation: rotation,
dimensions: scaleDimensions dimensions: scaleDimensions
}); });
@ -1498,82 +1525,85 @@ SelectionDisplay = (function() {
Overlays.editOverlay(grabberScaleFREdge, { start: grabberScaleRTFCubePos, end: grabberScaleRBFCubePos }); Overlays.editOverlay(grabberScaleFREdge, { start: grabberScaleRTFCubePos, end: grabberScaleRBFCubePos });
Overlays.editOverlay(grabberScaleFLEdge, { start: grabberScaleLTFCubePos, end: grabberScaleLBFCubePos }); Overlays.editOverlay(grabberScaleFLEdge, { start: grabberScaleLTFCubePos, end: grabberScaleLBFCubePos });
var stretchSphereDimension = dimensionAverage * GRABBER_STRETCH_SPHERE_DIMENSION_MULTIPLE; var stretchSphereDimension = entityToCameraDistance * GRABBER_STRETCH_SPHERE_CAMERA_DISTANCE_MULTIPLE;
var stretchSphereDimensions = { x:stretchSphereDimension, y:stretchSphereDimension, z:stretchSphereDimension }; var stretchSphereDimensions = { x:stretchSphereDimension, y:stretchSphereDimension, z:stretchSphereDimension };
var stretchXPos = Vec3.sum(worldPosition, Vec3.multiplyQbyV(worldRotation, { x:GRABBER_STRETCH_SPHERE_OFFSET * worldDimensionsX, y:0, z:0 })); var stretchXPos = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x:GRABBER_STRETCH_SPHERE_OFFSET * entityToCameraDistance, y:0, z:0 }));
Overlays.editOverlay(grabberStretchXSphere, { Overlays.editOverlay(grabberStretchXSphere, {
position: stretchXPos, position: stretchXPos,
dimensions: stretchSphereDimensions dimensions: stretchSphereDimensions
}); });
var grabberScaleLTFCubePosRot = Vec3.multiplyQbyV(worldRotationInverse, grabberScaleLTFCubePos); var grabberScaleLTFCubePosRot = Vec3.multiplyQbyV(rotationInverse, grabberScaleLTFCubePos);
var grabberScaleRBFCubePosRot = Vec3.multiplyQbyV(worldRotationInverse, grabberScaleRBFCubePos); var grabberScaleRBFCubePosRot = Vec3.multiplyQbyV(rotationInverse, grabberScaleRBFCubePos);
var stretchPanelXDimensions = Vec3.subtract(grabberScaleLTFCubePosRot, grabberScaleRBFCubePosRot); var stretchPanelXDimensions = Vec3.subtract(grabberScaleLTFCubePosRot, grabberScaleRBFCubePosRot);
var tempY = Math.abs(stretchPanelXDimensions.y); var tempY = Math.abs(stretchPanelXDimensions.y);
stretchPanelXDimensions.x = 0.01; stretchPanelXDimensions.x = 0.01;
stretchPanelXDimensions.y = Math.abs(stretchPanelXDimensions.z); stretchPanelXDimensions.y = Math.abs(stretchPanelXDimensions.z);
stretchPanelXDimensions.z = tempY; stretchPanelXDimensions.z = tempY;
var stretchPanelXPos = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x:dimensions.x / 2, y:0, z:0 }));
Overlays.editOverlay(grabberStretchXPanel, { Overlays.editOverlay(grabberStretchXPanel, {
position: stretchXPos, position: stretchPanelXPos,
rotation: worldRotationZ, rotation: rotationZ,
dimensions: stretchPanelXDimensions dimensions: stretchPanelXDimensions
}); });
var stretchYPos = Vec3.sum(worldPosition, Vec3.multiplyQbyV(worldRotation, { x:0, y:GRABBER_STRETCH_SPHERE_OFFSET * worldDimensionsY, z:0 })); var stretchYPos = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x:0, y:GRABBER_STRETCH_SPHERE_OFFSET * entityToCameraDistance, z:0 }));
Overlays.editOverlay(grabberStretchYSphere, { Overlays.editOverlay(grabberStretchYSphere, {
position: stretchYPos, position: stretchYPos,
dimensions: stretchSphereDimensions dimensions: stretchSphereDimensions
}); });
var grabberScaleLTFCubePosRot = Vec3.multiplyQbyV(worldRotationInverse, grabberScaleLTNCubePos); var grabberScaleLTFCubePosRot = Vec3.multiplyQbyV(rotationInverse, grabberScaleLTNCubePos);
var grabberScaleRTNCubePosRot = Vec3.multiplyQbyV(worldRotationInverse, grabberScaleRTFCubePos); var grabberScaleRTNCubePosRot = Vec3.multiplyQbyV(rotationInverse, grabberScaleRTFCubePos);
var stretchPanelYDimensions = Vec3.subtract(grabberScaleLTFCubePosRot, grabberScaleRTNCubePosRot); var stretchPanelYDimensions = Vec3.subtract(grabberScaleLTFCubePosRot, grabberScaleRTNCubePosRot);
var tempX = Math.abs(stretchPanelYDimensions.x); var tempX = Math.abs(stretchPanelYDimensions.x);
stretchPanelYDimensions.x = Math.abs(stretchPanelYDimensions.z); stretchPanelYDimensions.x = Math.abs(stretchPanelYDimensions.z);
stretchPanelYDimensions.y = 0.01; stretchPanelYDimensions.y = 0.01;
stretchPanelYDimensions.z = tempX; stretchPanelYDimensions.z = tempX;
var stretchPanelYPos = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x:0, y:dimensions.y / 2, z:0 }));
Overlays.editOverlay(grabberStretchYPanel, { Overlays.editOverlay(grabberStretchYPanel, {
position: stretchYPos, position: stretchPanelYPos,
rotation: worldRotationY, rotation: rotationY,
dimensions: stretchPanelYDimensions dimensions: stretchPanelYDimensions
}); });
var stretchZPos = Vec3.sum(worldPosition, Vec3.multiplyQbyV(worldRotation, { x:0, y:0, z:GRABBER_STRETCH_SPHERE_OFFSET * worldDimensionsZ })); var stretchZPos = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x:0, y:0, z:GRABBER_STRETCH_SPHERE_OFFSET * entityToCameraDistance }));
Overlays.editOverlay(grabberStretchZSphere, { Overlays.editOverlay(grabberStretchZSphere, {
position: stretchZPos, position: stretchZPos,
dimensions: stretchSphereDimensions dimensions: stretchSphereDimensions
}); });
var grabberScaleRTFCubePosRot = Vec3.multiplyQbyV(worldRotationInverse, grabberScaleRTFCubePos); var grabberScaleRTFCubePosRot = Vec3.multiplyQbyV(rotationInverse, grabberScaleRTFCubePos);
var grabberScaleRBNCubePosRot = Vec3.multiplyQbyV(worldRotationInverse, grabberScaleRBNCubePos); var grabberScaleRBNCubePosRot = Vec3.multiplyQbyV(rotationInverse, grabberScaleRBNCubePos);
var stretchPanelZDimensions = Vec3.subtract(grabberScaleRTFCubePosRot, grabberScaleRBNCubePosRot); var stretchPanelZDimensions = Vec3.subtract(grabberScaleRTFCubePosRot, grabberScaleRBNCubePosRot);
var tempX = Math.abs(stretchPanelZDimensions.x); var tempX = Math.abs(stretchPanelZDimensions.x);
stretchPanelZDimensions.x = Math.abs(stretchPanelZDimensions.y); stretchPanelZDimensions.x = Math.abs(stretchPanelZDimensions.y);
stretchPanelZDimensions.y = tempX; stretchPanelZDimensions.y = tempX;
stretchPanelZDimensions.z = 0.01; stretchPanelZDimensions.z = 0.01;
var stretchPanelZPos = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x:0, y:0, z:dimensions.z / 2 }));
Overlays.editOverlay(grabberStretchZPanel, { Overlays.editOverlay(grabberStretchZPanel, {
position: stretchZPos, position: stretchPanelZPos,
rotation: worldRotationX, rotation: rotationX,
dimensions: stretchPanelZDimensions dimensions: stretchPanelZDimensions
}); });
var rotateDimension = dimensionAverage * GRABBER_ROTATE_RINGS_DIMENSION_MULTIPLE; var rotateDimension = entityToCameraDistance * GRABBER_ROTATE_RINGS_CAMERA_DISTANCE_MULTIPLE;
var rotateDimensions = { x:rotateDimension, y:rotateDimension, z:rotateDimension }; var rotateDimensions = { x:rotateDimension, y:rotateDimension, z:rotateDimension };
if (!isActiveTool(grabberRotatePitchRing)) { if (!isActiveTool(grabberRotatePitchRing)) {
Overlays.editOverlay(grabberRotatePitchRing, { Overlays.editOverlay(grabberRotatePitchRing, {
position: SelectionManager.worldPosition, position: position,
rotation: worldRotationY, rotation: rotationY,
dimensions: rotateDimensions, dimensions: rotateDimensions,
majorTickMarksAngle: ROTATION_DEFAULT_TICK_MARKS_ANGLE majorTickMarksAngle: ROTATION_DEFAULT_TICK_MARKS_ANGLE
}); });
} }
if (!isActiveTool(grabberRotateYawRing)) { if (!isActiveTool(grabberRotateYawRing)) {
Overlays.editOverlay(grabberRotateYawRing, { Overlays.editOverlay(grabberRotateYawRing, {
position: SelectionManager.worldPosition, position: position,
rotation: worldRotationZ, rotation: rotationZ,
dimensions: rotateDimensions, dimensions: rotateDimensions,
majorTickMarksAngle: ROTATION_DEFAULT_TICK_MARKS_ANGLE majorTickMarksAngle: ROTATION_DEFAULT_TICK_MARKS_ANGLE
}); });
} }
if (!isActiveTool(grabberRotateRollRing)) { if (!isActiveTool(grabberRotateRollRing)) {
Overlays.editOverlay(grabberRotateRollRing, { Overlays.editOverlay(grabberRotateRollRing, {
position: SelectionManager.worldPosition, position: position,
rotation: worldRotationX, rotation: rotationX,
dimensions: rotateDimensions, dimensions: rotateDimensions,
majorTickMarksAngle: ROTATION_DEFAULT_TICK_MARKS_ANGLE majorTickMarksAngle: ROTATION_DEFAULT_TICK_MARKS_ANGLE
}); });
@ -1588,18 +1618,18 @@ SelectionDisplay = (function() {
isActiveTool(grabberCloner) || isActiveTool(selectionBox); isActiveTool(grabberCloner) || isActiveTool(selectionBox);
Overlays.editOverlay(selectionBox, { Overlays.editOverlay(selectionBox, {
position: worldPosition, position: position,
rotation: worldRotation, rotation: rotation,
dimensions: worldDimensions, dimensions: dimensions,
visible: !inModeRotate visible: !inModeRotate
}); });
var grabberClonerOffset = { x:GRABBER_CLONER_OFFSET.x * worldDimensionsX, y:GRABBER_CLONER_OFFSET.y * worldDimensionsY, z:GRABBER_CLONER_OFFSET.z * worldDimensionsZ }; var grabberClonerOffset = { x:GRABBER_CLONER_OFFSET.x * dimensions.x, y:GRABBER_CLONER_OFFSET.y * dimensions.y, z:GRABBER_CLONER_OFFSET.z * dimensions.z };
var grabberClonerPos = Vec3.sum(worldPosition, Vec3.multiplyQbyV(worldRotation, grabberClonerOffset)); var grabberClonerPos = Vec3.sum(position, Vec3.multiplyQbyV(rotation, grabberClonerOffset));
Overlays.editOverlay(grabberCloner, { Overlays.editOverlay(grabberCloner, {
position: grabberClonerPos, position: grabberClonerPos,
rotation: worldRotation, rotation: rotation,
dimensions: scaleDimensions, dimensions: scaleDimensions
}); });
} }
@ -1615,12 +1645,14 @@ SelectionDisplay = (function() {
that.setGrabberScaleVisible(!activeTool || isActiveTool(grabberScaleLBNCube) || isActiveTool(grabberScaleRBNCube) || isActiveTool(grabberScaleLBFCube) || isActiveTool(grabberScaleRBFCube) that.setGrabberScaleVisible(!activeTool || isActiveTool(grabberScaleLBNCube) || isActiveTool(grabberScaleRBNCube) || isActiveTool(grabberScaleLBFCube) || isActiveTool(grabberScaleRBFCube)
|| isActiveTool(grabberScaleLTNCube) || isActiveTool(grabberScaleRTNCube) || isActiveTool(grabberScaleLTFCube) || isActiveTool(grabberScaleRTFCube) || isActiveTool(grabberScaleLTNCube) || isActiveTool(grabberScaleRTNCube) || isActiveTool(grabberScaleLTFCube) || isActiveTool(grabberScaleRTFCube)
|| isActiveTool(grabberStretchXSphere) || isActiveTool(grabberStretchYSphere) || isActiveTool(grabberStretchZSphere)); || isActiveTool(grabberStretchXSphere) || isActiveTool(grabberStretchYSphere) || isActiveTool(grabberStretchZSphere));
that.setGrabberClonerVisible(!activeTool || isActiveTool(grabberCloner)); //keep cloner always hidden for now since you can hold Alt to clone while dragging to translate - we may bring cloner back for HMD only later
//that.setGrabberClonerVisible(!activeTool || isActiveTool(grabberCloner));
if (wantDebug) { if (wantDebug) {
print("====== Update Grabbers <======="); print("====== Update Grabbers <=======");
} }
}; };
Script.update.connect(that.updateGrabbers);
that.updateActiveRotateRing = function() { that.updateActiveRotateRing = function() {
var activeRotateRing = null; var activeRotateRing = null;
@ -1756,6 +1788,7 @@ SelectionDisplay = (function() {
} }
SelectionManager.saveProperties(); SelectionManager.saveProperties();
that.resetPreviousHandleColor();
that.setGrabberTranslateVisible(false); that.setGrabberTranslateVisible(false);
that.setGrabberRotateVisible(false); that.setGrabberRotateVisible(false);
@ -2059,6 +2092,33 @@ SelectionDisplay = (function() {
return activeTool; return activeTool;
}; };
that.resetPreviousHandleColor = function() {
if (previousHandle != null) {
Overlays.editOverlay(previousHandle, { color: previousHandleColor });
previousHandle = null;
}
if (previousHandleHelper != null) {
Overlays.editOverlay(previousHandleHelper, { color: previousHandleColor });
previousHandleHelper = null;
}
};
that.getHandleHelper = function(overlay) {
if (overlay === grabberTranslateXCone) {
return grabberTranslateXCylinder;
} else if (overlay === grabberTranslateXCylinder) {
return grabberTranslateXCone;
} else if (overlay === grabberTranslateYCone) {
return grabberTranslateYCylinder;
} else if (overlay === grabberTranslateYCylinder) {
return grabberTranslateYCone;
} else if (overlay === grabberTranslateZCone) {
return grabberTranslateZCylinder;
} else if (overlay === grabberTranslateZCylinder) {
return grabberTranslateZCone;
}
};
// FUNCTION: MOUSE MOVE EVENT // FUNCTION: MOUSE MOVE EVENT
that.mouseMoveEvent = function(event) { that.mouseMoveEvent = function(event) {
var wantDebug = false; var wantDebug = false;
@ -2083,6 +2143,66 @@ SelectionDisplay = (function() {
return true; return true;
} }
// if no tool is active, then just look for handles to highlight...
var pickRay = generalComputePickRay(event.x, event.y);
var result = Overlays.findRayIntersection(pickRay);
var pickedColor;
var highlightNeeded = false;
if (result.intersects) {
switch (result.overlayID) {
case grabberTranslateXCone:
case grabberTranslateXCylinder:
case grabberRotatePitchRing:
case grabberStretchXSphere:
pickedColor = COLOR_RED;
highlightNeeded = true;
break;
case grabberTranslateYCone:
case grabberTranslateYCylinder:
case grabberRotateYawRing:
case grabberStretchYSphere:
pickedColor = COLOR_GREEN;
highlightNeeded = true;
break;
case grabberTranslateZCone:
case grabberTranslateZCylinder:
case grabberRotateRollRing:
case grabberStretchZSphere:
pickedColor = COLOR_BLUE;
highlightNeeded = true;
break;
case grabberScaleLBNCube:
case grabberScaleRBNCube:
case grabberScaleLBFCube:
case grabberScaleRBFCube:
case grabberScaleLTNCube:
case grabberScaleRTNCube:
case grabberScaleLTFCube:
case grabberScaleRTFCube:
pickedColor = GRABBER_SCALE_CUBE_IDLE_COLOR;
highlightNeeded = true;
break;
default:
that.resetPreviousHandleColor();
break;
}
if (highlightNeeded) {
that.resetPreviousHandleColor();
Overlays.editOverlay(result.overlayID, { color: GRABBER_HOVER_COLOR });
previousHandle = result.overlayID;
previousHandleHelper = that.getHandleHelper(result.overlayID);
if (previousHandleHelper != null) {
Overlays.editOverlay(previousHandleHelper, { color: GRABBER_HOVER_COLOR });
}
previousHandleColor = pickedColor;
}
} else {
that.resetPreviousHandleColor();
}
if (wantDebug) { if (wantDebug) {
print("=============== eST::MouseMoveEvent END ======================="); print("=============== eST::MouseMoveEvent END =======================");
} }