Merge pull request #10406 from amvmoody/21289

21289 - Edit: Add the ability to duplicate an object with hand controller
This commit is contained in:
Philip Rosedale 2017-05-13 20:43:52 -07:00 committed by GitHub
commit 6e82343b29

View file

@ -341,6 +341,11 @@ SelectionDisplay = (function() {
green: 120, green: 120,
blue: 120 blue: 120
}; };
var grabberColorCloner = {
red: 0,
green: 155,
blue: 0
};
var grabberLineWidth = 0.5; var grabberLineWidth = 0.5;
var grabberSolid = true; var grabberSolid = true;
var grabberMoveUpPosition = { var grabberMoveUpPosition = {
@ -406,6 +411,23 @@ SelectionDisplay = (function() {
borderSize: 1.4, borderSize: 1.4,
}; };
var grabberPropertiesCloner = {
position: {
x: 0,
y: 0,
z: 0
},
size: grabberSizeCorner,
color: grabberColorCloner,
alpha: 1,
solid: grabberSolid,
visible: false,
dashed: false,
lineWidth: grabberLineWidth,
drawInFront: true,
borderSize: 1.4,
};
var spotLightLineProperties = { var spotLightLineProperties = {
color: lightOverlayColor, color: lightOverlayColor,
lineWidth: 1.5, lineWidth: 1.5,
@ -583,6 +605,8 @@ SelectionDisplay = (function() {
var grabberPointLightF = Overlays.addOverlay("cube", grabberPropertiesEdge); var grabberPointLightF = Overlays.addOverlay("cube", grabberPropertiesEdge);
var grabberPointLightN = Overlays.addOverlay("cube", grabberPropertiesEdge); var grabberPointLightN = Overlays.addOverlay("cube", grabberPropertiesEdge);
var grabberCloner = Overlays.addOverlay("cube", grabberPropertiesCloner);
var stretchHandles = [ var stretchHandles = [
grabberLBN, grabberLBN,
grabberRBN, grabberRBN,
@ -629,6 +653,8 @@ SelectionDisplay = (function() {
grabberPointLightR, grabberPointLightR,
grabberPointLightF, grabberPointLightF,
grabberPointLightN, grabberPointLightN,
grabberCloner
]; ];
@ -970,6 +996,7 @@ SelectionDisplay = (function() {
grabberPointLightCircleX, grabberPointLightCircleX,
grabberPointLightCircleY, grabberPointLightCircleY,
grabberPointLightCircleZ, grabberPointLightCircleZ,
].concat(stretchHandles); ].concat(stretchHandles);
overlayNames[highlightBox] = "highlightBox"; overlayNames[highlightBox] = "highlightBox";
@ -1016,7 +1043,7 @@ SelectionDisplay = (function() {
overlayNames[rotateZeroOverlay] = "rotateZeroOverlay"; overlayNames[rotateZeroOverlay] = "rotateZeroOverlay";
overlayNames[rotateCurrentOverlay] = "rotateCurrentOverlay"; overlayNames[rotateCurrentOverlay] = "rotateCurrentOverlay";
overlayNames[grabberCloner] = "grabberCloner";
var activeTool = null; var activeTool = null;
var grabberTools = {}; var grabberTools = {};
@ -2136,6 +2163,12 @@ SelectionDisplay = (function() {
position: FAR position: FAR
}); });
Overlays.editOverlay(grabberCloner, {
visible: true,
rotation: rotation,
position: EdgeTR
});
var boxPosition = Vec3.multiplyQbyV(rotation, center); var boxPosition = Vec3.multiplyQbyV(rotation, center);
boxPosition = Vec3.sum(position, boxPosition); boxPosition = Vec3.sum(position, boxPosition);
Overlays.editOverlay(selectionBox, { Overlays.editOverlay(selectionBox, {
@ -2293,7 +2326,6 @@ SelectionDisplay = (function() {
rotation: Quat.fromPitchYawRollDegrees(90, 0, 0), rotation: Quat.fromPitchYawRollDegrees(90, 0, 0),
}); });
}; };
that.setOverlaysVisible = function(isVisible) { that.setOverlaysVisible = function(isVisible) {
@ -2325,7 +2357,7 @@ SelectionDisplay = (function() {
greatestDimension: 0.0, greatestDimension: 0.0,
startingDistance: 0.0, startingDistance: 0.0,
startingElevation: 0.0, startingElevation: 0.0,
onBegin: function(event) { onBegin: function(event,isAltFromGrab) {
SelectionManager.saveProperties(); SelectionManager.saveProperties();
startPosition = SelectionManager.worldPosition; startPosition = SelectionManager.worldPosition;
var dimensions = SelectionManager.worldDimensions; var dimensions = SelectionManager.worldDimensions;
@ -2340,7 +2372,7 @@ SelectionDisplay = (function() {
// Duplicate entities if alt is pressed. This will make a // Duplicate entities if alt is pressed. This will make a
// copy of the selected entities and move the _original_ entities, not // copy of the selected entities and move the _original_ entities, not
// the new ones. // the new ones.
if (event.isAlt) { if (event.isAlt || isAltFromGrab) {
duplicatedEntityIDs = []; duplicatedEntityIDs = [];
for (var otherEntityID in SelectionManager.savedProperties) { for (var otherEntityID in SelectionManager.savedProperties) {
var properties = SelectionManager.savedProperties[otherEntityID]; var properties = SelectionManager.savedProperties[otherEntityID];
@ -2581,6 +2613,34 @@ SelectionDisplay = (function() {
}, },
}); });
addGrabberTool(grabberCloner, {
mode: "CLONE",
onBegin: function(event) {
var pickRay = generalComputePickRay(event.x, event.y);
var result = Overlays.findRayIntersection(pickRay);
translateXZTool.pickPlanePosition = result.intersection;
translateXZTool.greatestDimension = Math.max(Math.max(SelectionManager.worldDimensions.x, SelectionManager.worldDimensions.y),
SelectionManager.worldDimensions.z);
translateXZTool.onBegin(event,true);
},
elevation: function (event) {
translateXZTool.elevation(event);
},
onEnd: function (event) {
translateXZTool.onEnd(event);
},
onMove: function (event) {
translateXZTool.onMove(event);
}
});
var vec3Mult = function(v1, v2) { var vec3Mult = function(v1, v2) {
return { return {
x: v1.x * v2.x, x: v1.x * v2.x,
@ -4482,6 +4542,12 @@ SelectionDisplay = (function() {
highlightNeeded = true; highlightNeeded = true;
break; break;
case grabberCloner:
pickedColor = grabberColorCloner;
pickedAlpha = grabberAlpha;
highlightNeeded = true;
break;
default: default:
if (previousHandle) { if (previousHandle) {
Overlays.editOverlay(previousHandle, { Overlays.editOverlay(previousHandle, {