aboutsummaryrefslogtreecommitdiff
path: root/js/tools
diff options
context:
space:
mode:
authorNivesh Rajbhandari2012-03-12 17:06:05 -0700
committerNivesh Rajbhandari2012-03-12 17:06:05 -0700
commit9d885aae7a17b4fc731a41f6b1ac8840092b83ac (patch)
tree4e2fd901492df729cac529ca5fa924d90582fd4e /js/tools
parent5fb358d9e80a364d5f300d60b7a9fe0f773741e7 (diff)
downloadninja-9d885aae7a17b4fc731a41f6b1ac8840092b83ac.tar.gz
Fixing snapping bugs in Selection, translate and rotate tools.
We should show snap marker on mouse move for selection tool prior to mousing down as well. We should create drag plane parallel to the view and where the user moused down. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com>
Diffstat (limited to 'js/tools')
-rwxr-xr-xjs/tools/SelectionTool.js23
-rwxr-xr-xjs/tools/Translate3DToolBase.js1
-rwxr-xr-xjs/tools/TranslateObject3DTool.js2
-rwxr-xr-xjs/tools/modifier-tool-base.js12
4 files changed, 20 insertions, 18 deletions
diff --git a/js/tools/SelectionTool.js b/js/tools/SelectionTool.js
index 6d8ff175..13a04944 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 }
@@ -704,6 +703,10 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, {
704 */ 703 */
705 _showFeedbackOnMouseMove : { 704 _showFeedbackOnMouseMove : {
706 value: function (event) { 705 value: function (event) {
706 if(!this._showTransformHandles)
707 {
708 return;
709 }
707 if(this._target && this._handles) 710 if(this._target && this._handles)
708 { 711 {
709 var len = this._handles.length; 712 var len = this._handles.length;
diff --git a/js/tools/Translate3DToolBase.js b/js/tools/Translate3DToolBase.js
index 3d9191da..24a68ad1 100755
--- a/js/tools/Translate3DToolBase.js
+++ b/js/tools/Translate3DToolBase.js
@@ -10,7 +10,6 @@ Subclass TranslateObject3DTool will translate the object that was clicked.
10var Montage = require("montage/core/core").Montage, 10var Montage = require("montage/core/core").Montage,
11 ModifierToolBase = require("js/tools/modifier-tool-base").ModifierToolBase, 11 ModifierToolBase = require("js/tools/modifier-tool-base").ModifierToolBase,
12 toolHandleModule = require("js/stage/tool-handle"), 12 toolHandleModule = require("js/stage/tool-handle"),
13 snapManager = require("js/helper-classes/3D/snap-manager").SnapManager,
14 viewUtils = require("js/helper-classes/3D/view-utils").ViewUtils, 13 viewUtils = require("js/helper-classes/3D/view-utils").ViewUtils,
15 vecUtils = require("js/helper-classes/3D/vec-utils").VecUtils, 14 vecUtils = require("js/helper-classes/3D/vec-utils").VecUtils,
16 drawUtils = require("js/helper-classes/3D/draw-utils").DrawUtils, 15 drawUtils = require("js/helper-classes/3D/draw-utils").DrawUtils,
diff --git a/js/tools/TranslateObject3DTool.js b/js/tools/TranslateObject3DTool.js
index 5157e39c..92b9b2f7 100755
--- a/js/tools/TranslateObject3DTool.js
+++ b/js/tools/TranslateObject3DTool.js
@@ -103,7 +103,7 @@ exports.TranslateObject3DTool = Object.create(Translate3DToolBase, {
103 } 103 }
104 else 104 else
105 { 105 {
106 this._dragPlane = snapManager.setupDragPlanes( hitRec ); 106 this._dragPlane = snapManager.setupDragPlanes( hitRec, true );
107 } 107 }
108 108
109 } 109 }
diff --git a/js/tools/modifier-tool-base.js b/js/tools/modifier-tool-base.js
index 7892d015..80f7d758 100755
--- a/js/tools/modifier-tool-base.js
+++ b/js/tools/modifier-tool-base.js
@@ -171,7 +171,7 @@ exports.ModifierToolBase = Montage.create(DrawingTool, {
171// } 171// }
172// else 172// else
173// { 173// {
174 this._dragPlane = snapManager.setupDragPlanes( hitRec ); 174 this._dragPlane = snapManager.setupDragPlanes( hitRec, true );
175// } 175// }
176 } 176 }
177 177
@@ -828,14 +828,14 @@ exports.ModifierToolBase = Montage.create(DrawingTool, {
828 this.doDraw(event); 828 this.doDraw(event);
829 } else { 829 } else {
830 this._showFeedbackOnMouseMove(event); 830 this._showFeedbackOnMouseMove(event);
831// if(this._canSnap) 831 if(this._canSnap)
832// { 832 {
833// this.doSnap(event); 833 this.doSnap(event);
834// } 834 }
835 } 835 }
836 836
837 this.DrawHandles(this._delta); 837 this.DrawHandles(this._delta);
838 if(this._canSnap && this._isDrawing) 838 if(this._canSnap)
839 { 839 {
840 snapManager.drawLastHit(); 840 snapManager.drawLastHit();
841 } 841 }