diff options
Diffstat (limited to 'js/helper-classes/3D/snap-manager.js')
-rwxr-xr-x | js/helper-classes/3D/snap-manager.js | 32 |
1 files changed, 31 insertions, 1 deletions
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 | }); |