aboutsummaryrefslogtreecommitdiff
path: root/js/tools/Translate3DToolBase.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/tools/Translate3DToolBase.js')
-rwxr-xr-xjs/tools/Translate3DToolBase.js177
1 files changed, 93 insertions, 84 deletions
diff --git a/js/tools/Translate3DToolBase.js b/js/tools/Translate3DToolBase.js
index e4f1fb99..ac98d018 100755
--- a/js/tools/Translate3DToolBase.js
+++ b/js/tools/Translate3DToolBase.js
@@ -71,9 +71,9 @@ exports.Translate3DToolBase = Montage.create(ModifierToolBase,
71 this._delta = delta.slice(0); 71 this._delta = delta.slice(0);
72 } 72 }
73 73
74 //console.log( "modifyElements delta: " + delta );
74 var transMat = Matrix.Translation( delta ); 75 var transMat = Matrix.Translation( delta );
75 76
76 //console.log( "Translate: " + delta );
77 if(this._inLocalMode && (this._targets.length === 1) ) 77 if(this._inLocalMode && (this._targets.length === 1) )
78 { 78 {
79 this._translateLocally(transMat); 79 this._translateLocally(transMat);
@@ -149,26 +149,28 @@ exports.Translate3DToolBase = Montage.create(ModifierToolBase,
149 149
150 _translateGlobally: { 150 _translateGlobally: {
151 value: function (transMat) { 151 value: function (transMat) {
152 //console.log( "_translateGlobally, startMat: " + this._startMat + ", transMat: " + transMat ); 152 //console.log( "_translateGlobally, transMat: " + transMat );
153 //console.log( "_translateGlobally, transMat: " + transMat ); 153 //console.log( "_translateGlobally, startMat: " + this._startMat + ", transMat: " + transMat[12] + ", " + transMat[13] + ", " + transMat[14] );
154 var len = this._targets.length, 154 var len = this._targets.length,
155 i = 0, 155 i = 0,
156 item, 156 item,
157 elt, 157 elt,
158 curMat = viewUtils.getMatrixFromElement( this._target ), 158 curMat = viewUtils.getMatrixFromElement( this._target ),
159 matInv = glmat4.inverse(this._startMat, []), 159 matInv = glmat4.inverse(this._startMat, []),
160 nMat = glmat4.multiply(transMat, this._startMat, [] ), 160 nMat = glmat4.multiply(transMat, this._startMat, [] ),
161 qMat = glmat4.multiply(matInv, nMat, []); 161 qMat = glmat4.multiply(matInv, nMat, []);
162 162
163 if (this._mode === 1) 163 if (this._mode === 1)
164 { 164 {
165 var curInv = glmat4.inverse( curMat, [] ); 165 if (len > 1) curMat = this._targets[0].mat.slice();
166 transMat = glmat4.multiply( nMat, curInv, [] ); 166 var curInv = glmat4.inverse( curMat, [] );
167 } 167 transMat = glmat4.multiply( nMat, curInv, [] );
168 }
168 169
169 var shouldUpdateStartMat = true; 170 var shouldUpdateStartMat = true;
170 171
171 if(this._clickedOnStage) 172 //if (this._clickedOnStage)
173 if(this._clickedOnStage || ((this._handleMode === 2) && (this._targets.length > 1)))
172 { 174 {
173 shouldUpdateStartMat = false; 175 shouldUpdateStartMat = false;
174 } 176 }
@@ -186,26 +188,30 @@ exports.Translate3DToolBase = Montage.create(ModifierToolBase,
186// glmat4.multiply(curMat, qMat, curMat); 188// glmat4.multiply(curMat, qMat, curMat);
187// 189//
188// viewUtils.setMatrixForElement( elt, curMat, true); 190// viewUtils.setMatrixForElement( elt, curMat, true);
189 curMat[12] += transMat[12]; 191 curMat[12] += transMat[12];
190 curMat[13] += transMat[13]; 192 curMat[13] += transMat[13];
191 curMat[14] += transMat[14]; 193 curMat[14] += transMat[14];
192 viewUtils.setMatrixForElement( elt, curMat, true); 194 viewUtils.setMatrixForElement( elt, curMat, true);
193 195
194 if(shouldUpdateStartMat) 196 if(shouldUpdateStartMat)
195 { 197 {
196 //console.log( "\t\tshouldUpdateStartMat" ); 198 //console.log( "\t\tshouldUpdateStartMat" );
197 this._targets[i].mat = curMat; 199 this._targets[i].mat = curMat;
198 } 200 }
199 } 201 }
200 } 202 }
201 }, 203 },
202 204
203 _updateTargets: { 205 _updateTargets: {
204 value: function(addToUndoStack) { 206 value: function(addToUndoStack) {
207 {
208 {
205// console.log( "_updateTargets" ); 209// console.log( "_updateTargets" );
206 var newStyles = [], 210 console.log( "_updateTargets" );
207 previousStyles = [], 211 //console.log( "_updateTargets" );
208 len = this.application.ninja.selectedElements.length; 212 var newStyles = [],
213 previousStyles = [],
214 len = this.application.ninja.selectedElements.length;
209 this._targets = []; 215 this._targets = [];
210 for(var i = 0; i < len; i++) 216 for(var i = 0; i < len; i++)
211 { 217 {
@@ -215,47 +221,47 @@ exports.Translate3DToolBase = Montage.create(ModifierToolBase,
215 var curMatInv = glmat4.inverse(curMat, []); 221 var curMatInv = glmat4.inverse(curMat, []);
216 222
217 this._targets.push({elt:elt, mat:curMat, matInv:curMatInv}); 223 this._targets.push({elt:elt, mat:curMat, matInv:curMatInv});
218 if(addToUndoStack) 224 if(addToUndoStack)
219 { 225 {
220 var previousStyleStr = {dist:this._undoArray[i].dist, mat:MathUtils.scientificToDecimal(this._undoArray[i].mat.slice(0), 5)}; 226 var previousStyleStr = {dist:this._undoArray[i].dist, mat:MathUtils.scientificToDecimal(this._undoArray[i].mat.slice(0), 5)};
221 227
222 var newStyleStr = {dist:viewUtils.getPerspectiveDistFromElement(elt), mat:MathUtils.scientificToDecimal(curMat, 5)}; 228 var newStyleStr = {dist:viewUtils.getPerspectiveDistFromElement(elt), mat:MathUtils.scientificToDecimal(curMat, 5)};
223 229
224 previousStyles.push(previousStyleStr); 230 previousStyles.push(previousStyleStr);
225 newStyles.push(newStyleStr); 231 newStyles.push(newStyleStr);
226 } 232 }
227 } 233 }
228 if(addToUndoStack) 234 if(addToUndoStack)
229 { 235 {
230 ElementsMediator.set3DProperties(this.application.ninja.selectedElements, 236 ElementsMediator.set3DProperties(this.application.ninja.selectedElements,
231 newStyles, 237 newStyles,
232 "Change", 238 "Change",
233 "translateTool", 239 "translateTool",
234 previousStyles 240 previousStyles
235 ); 241 );
236 if(this._origin && this._delta) 242 if(this._origin && this._delta)
237 { 243 {
238 if(this._handleMode !== null) 244 if(this._handleMode !== null)
239 { 245 {
240 this._origin[this._handleMode] += this._delta; 246 this._origin[this._handleMode] += this._delta;
241 } 247 }
242 else 248 else
243 { 249 {
244 this._origin[0] += this._delta[0]; 250 this._origin[0] += this._delta[0];
245 this._origin[1] += this._delta[1]; 251 this._origin[1] += this._delta[1];
246 } 252 }
247 } 253 }
248 this._delta = null; 254 this._delta = null;
249 } 255 }
250 // Save previous value for undo/redo 256 // Save previous value for undo/redo
251 this._undoArray = []; 257 this._undoArray = [];
252 for(i = 0, len = this._targets.length; i < len; i++) 258 for(i = 0, len = this._targets.length; i < len; i++)
253 { 259 {
254 var elt = this._targets[i].elt; 260 var elt = this._targets[i].elt;
255 var _mat = viewUtils.getMatrixFromElement(elt); 261 var _mat = viewUtils.getMatrixFromElement(elt);
256 var _dist = viewUtils.getPerspectiveDistFromElement(elt); 262 var _dist = viewUtils.getPerspectiveDistFromElement(elt);
257 this._undoArray.push({mat:_mat, dist:_dist}); 263 this._undoArray.push({mat:_mat, dist:_dist});
258 } 264 }
259 265
260 } 266 }
261 }, 267 },
@@ -305,27 +311,27 @@ exports.Translate3DToolBase = Montage.create(ModifierToolBase,
305 } 311 }
306 else 312 else
307 { 313 {
308 if(this._origin) 314 if(this._origin)
309 { 315 {
310 if(this._delta) 316 if(this._delta)
311 { 317 {
312 if(this._handleMode !== null) 318 if(this._handleMode !== null)
313 { 319 {
314// this._origin[this._handleMode] = this._delta; 320// this._origin[this._handleMode] = this._delta;
315 } 321 }
316 else 322 else
317 { 323 {
318 this._origin[0] += this._delta[0]; 324 this._origin[0] += this._delta[0];
319 this._origin[1] += this._delta[1]; 325 this._origin[1] += this._delta[1];
320 } 326 }
321 } 327 }
322 } 328 }
323 else 329 else
324 { 330 {
325 this._origin = drawUtils._selectionCtr.slice(0); 331 this._origin = drawUtils._selectionCtr.slice(0);
326 this._origin[0] += this.application.ninja.stage.userContentLeft; 332 this._origin[0] += this.application.ninja.stage.userContentLeft;
327 this._origin[1] += this.application.ninja.stage.userContentTop; 333 this._origin[1] += this.application.ninja.stage.userContentTop;
328 }