diff options
Diffstat (limited to 'js/helper-classes/3D')
-rwxr-xr-x | js/helper-classes/3D/math-utils.js | 33 | ||||
-rwxr-xr-x | js/helper-classes/3D/snap-manager.js | 32 |
2 files changed, 64 insertions, 1 deletions
diff --git a/js/helper-classes/3D/math-utils.js b/js/helper-classes/3D/math-utils.js index 37044763..de63f880 100755 --- a/js/helper-classes/3D/math-utils.js +++ b/js/helper-classes/3D/math-utils.js | |||
@@ -538,6 +538,39 @@ var MathUtilsClass = exports.MathUtilsClass = Object.create(Object.prototype, { | |||
538 | } | 538 | } |
539 | }, | 539 | }, |
540 | 540 | ||
541 | isIdentityMatrix: { | ||
542 | value: function( mat ) | ||
543 | { | ||
544 | if(!mat) | ||
545 | { | ||
546 | return false; | ||
547 | } | ||
548 | else | ||
549 | { | ||
550 | if(mat[0] !== 1) return false; | ||
551 | if(mat[1] !== 0) return false; | ||
552 | if(mat[2] !== 0) return false; | ||
553 | if(mat[3] !== 0) return false; | ||
554 | |||
555 | if(mat[4] !== 0) return false; | ||
556 | if(mat[5] !== 1) return false; | ||
557 | if(mat[6] !== 0) return false; | ||
558 | if(mat[7] !== 0) return false; | ||
559 | |||
560 | if(mat[8] !== 0) return false; | ||
561 | if(mat[9] !== 0) return false; | ||
562 | if(mat[10] !== 1) return false; | ||
563 | if(mat[11] !== 0) return false; | ||
564 | |||
565 | if(mat[12] !== 0) return false; | ||
566 | if(mat[13] !== 0) return false; | ||
567 | if(mat[14] !== 0) return false; | ||
568 | if(mat[15] !== 1) return false; | ||
569 | } | ||
570 | return true; | ||
571 | } | ||
572 | }, | ||
573 | |||
541 | rectsOverlap: | 574 | rectsOverlap: |
542 | { | 575 | { |
543 | value: function( pt, width, height, elt ) | 576 | value: function( pt, width, height, elt ) |
diff --git a/js/helper-classes/3D/snap-manager.js b/js/helper-classes/3D/snap-manager.js index 372be345..596ba56a 100755 --- a/js/helper-classes/3D/snap-manager.js +++ b/js/helper-classes/3D/snap-manager.js | |||
@@ -40,6 +40,7 @@ var SnapManager = exports.SnapManager = Montage.create(Component, { | |||
40 | 40 | ||
41 | // keep a reference to the most recent hitRecord. Used for drawing feedback on the stage | 41 | // keep a reference to the most recent hitRecord. Used for drawing feedback on the stage |
42 | _lastHit : { value: null, writable: true }, | 42 | _lastHit : { value: null, writable: true }, |
43 | _hitRecords : { value: [], writable: true }, | ||
43 | 44 | ||
44 | // keep a list of objects to avoid snapping to | 45 | // keep a list of objects to avoid snapping to |
45 | _avoidList : { value: [], writable: true }, | 46 | _avoidList : { value: [], writable: true }, |
@@ -274,6 +275,11 @@ var SnapManager = exports.SnapManager = Montage.create(Component, { | |||
274 | } //if (hitRecArray.length == 0) | 275 | } //if (hitRecArray.length == 0) |
275 | 276 | ||
276 | var rtnHit; | 277 | var rtnHit; |
278 | |||
279 | // Save reference to hit records to verify last hit record's element matches browser's elementFromPoint | ||
280 | this._hitRecords.length = 0; | ||
281 | this._hitRecords = hitRecArray; | ||
282 | |||
277 | if (hitRecArray.length > 0) | 283 | if (hitRecArray.length > 0) |
278 | { | 284 | { |
279 | this.sortHitRecords( hitRecArray ); | 285 | this.sortHitRecords( hitRecArray ); |
@@ -2246,6 +2252,30 @@ var SnapManager = exports.SnapManager = Montage.create(Component, { | |||
2246 | drawUtils.setDrawingSurfaceElement(saveContext); | 2252 | drawUtils.setDrawingSurfaceElement(saveContext); |
2247 | } | 2253 | } |
2248 | } | 2254 | } |
2249 | } | 2255 | }, |
2256 | |||
2257 | findHitRecordForElement: { | ||
2258 | value: function(elt) { | ||
2259 | var rtnHit; | ||
2260 | |||
2261 | if (!this._hitRecords) return; | ||
2262 | var nHits = this._hitRecords.length; | ||
2263 | |||
2264 | for (var i=0; i<nHits; i++) | ||
2265 | { | ||
2266 | var hi = this._hitRecords[i]; | ||
2267 | if(hi.getElement() === elt) | ||
2268 | { | ||
2269 | rtnHit = hi; | ||
2270 | break; | ||
2271 | } | ||
2272 | } | ||
2273 | // catch-all to turn off drag plane snapping | ||
2274 | this.deactivateDragPlane(); | ||
2275 | |||
2276 | this.setLastHit( rtnHit ); | ||
2277 | return rtnHit; | ||
2278 | } | ||
2279 | } | ||
2250 | 2280 | ||
2251 | }); | 2281 | }); |