aboutsummaryrefslogtreecommitdiff
path: root/js/tools/SelectionTool.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/tools/SelectionTool.js')
-rwxr-xr-xjs/tools/SelectionTool.js33
1 files changed, 20 insertions, 13 deletions
diff --git a/js/tools/SelectionTool.js b/js/tools/SelectionTool.js
index 6d8ff175..f9411f48 100755
--- a/js/tools/SelectionTool.js
+++ b/js/tools/SelectionTool.js
@@ -16,6 +16,7 @@ var Montage = require("montage/core/core").Montage,
16var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, { 16var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, {
17 drawingFeedback: { value: { mode: "Draw2D", type: "" } }, 17 drawingFeedback: { value: { mode: "Draw2D", type: "" } },
18 18
19 _inLocalMode: { value: false}, // This tool should always use global mode for translations
19 _canOperateOnStage: { value: true}, 20 _canOperateOnStage: { value: true},
20 _isSelecting: {value: false, writable:true}, 21 _isSelecting: {value: false, writable:true},
21 _shiftMove: { value: 10}, 22 _shiftMove: { value: 10},
@@ -34,14 +35,12 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, {
34 value: function () { 35 value: function () {
35 if(this._targets && this._targets.length) 36 if(this._targets && this._targets.length)
36 { 37 {
37 // TODO - drawUtils's elementPlanes check in drawSelectionBounds doesn't seem to work,
38 // so temporary workaround to simply check if all elements have identity matrix
39 // TODO - Eventually, this should instead check if all the selected items are on the view plane
40 var len = this._targets.length; 38 var len = this._targets.length;
39 var plane = this.application.ninja.stage.stageDeps.snapManager.getDragPlane();
41 for(var i = 0; i < len; i++) 40 for(var i = 0; i < len; i++)
42 { 41 {
43 var mat = this._targets[i].mat; 42 var elt = this._targets[i].elt;
44 if(!MathUtils.isIdentityMatrix(mat)) 43 if(!this.application.ninja.stage.stageDeps.snapManager.elementIsOnPlane(elt, plane))
45 { 44 {
46 return false; 45 return false;
47 } 46 }
@@ -123,14 +122,14 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, {
123 this.doDraw(event); 122 this.doDraw(event);
124 } else { 123 } else {
125 this._showFeedbackOnMouseMove(event); 124 this._showFeedbackOnMouseMove(event);
126 // if(this._canSnap) 125 if(this._canSnap)
127 // { 126 {
128 // this.doSnap(event); 127 this.doSnap(event);
129 // } 128 }
130 } 129 }
131 130
132 this.DrawHandles(this._delta); 131 this.DrawHandles(this._delta);
133 if(this._canSnap && this._isDrawing) 132 if(this._canSnap)
134 { 133 {
135 this.application.ninja.stage.stageDeps.snapManager.drawLastHit(); 134 this.application.ninja.stage.stageDeps.snapManager.drawLastHit();
136 } 135 }
@@ -206,12 +205,12 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, {
206 { 205 {
207 this._handleMode = null; 206 this._handleMode = null;
208 this._delta = null; 207 this._delta = null;
209 this.DrawHandles();
210 } 208 }
211 209
212 this.endDraw(event); 210 this.endDraw(event);
213 this._canSnap = true; 211 this._canSnap = true;
214 this._use3DMode = false; 212 this._use3DMode = false;
213 this.DrawHandles();
215 } 214 }
216 }, 215 },
217 216
@@ -452,7 +451,10 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, {
452 if(this._use3DMode) 451 if(this._use3DMode)
453 { 452 {
454 curMat = item.mat; 453 curMat = item.mat;
455 glmat4.multiply(curMat, qMat, curMat); 454
455 curMat[12] += transMat[12];
456 curMat[13] += transMat[13];
457 curMat[14] += transMat[14];
456 viewUtils.setMatrixForElement( elt, curMat, true); 458 viewUtils.setMatrixForElement( elt, curMat, true);
457 this._targets[i].mat = curMat; 459 this._targets[i].mat = curMat;
458 } 460 }
@@ -575,6 +577,7 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, {
575 { 577 {
576 // form the translation vector and post translate the matrix by it. 578 // form the translation vector and post translate the matrix by it.
577 delta = vecUtils.vecSubtract( 3, data.pt1, data.pt0 ); 579 delta = vecUtils.vecSubtract( 3, data.pt1, data.pt0 );
580 delta[2] = 0;
578 var transMat = Matrix.Translation( delta ); 581 var transMat = Matrix.Translation( delta );
579 this._moveElements(transMat); 582 this._moveElements(transMat);
580 } 583 }
@@ -704,7 +707,11 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, {
704 */ 707 */
705 _showFeedbackOnMouseMove : { 708 _showFeedbackOnMouseMove : {
706 value: function (event) { 709 value: function (event) {
707 if(this._target && this._handles) 710 if(!this._showTransformHandles)
711 {
712 return;
713 }
714 if(this._target && this._handles && (this._targets.length === 1))
708 { 715 {
709 var len = this._handles.length; 716 var len = this._handles.length;
710 var i = 0, 717 var i = 0,