From 952e0b2c28af081041fa8987c3e865b931d052fa Mon Sep 17 00:00:00 2001 From: Nivesh Rajbhandari Date: Mon, 9 Apr 2012 16:04:24 -0700 Subject: Single perspective fix. Note that rotating multiple objects when the stage is rotated still doesn't work and flatten still doesn't work. Signed-off-by: Nivesh Rajbhandari --- js/helper-classes/3D/snap-manager.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'js/helper-classes/3D/snap-manager.js') diff --git a/js/helper-classes/3D/snap-manager.js b/js/helper-classes/3D/snap-manager.js index a401c363..61f5bc97 100755 --- a/js/helper-classes/3D/snap-manager.js +++ b/js/helper-classes/3D/snap-manager.js @@ -229,7 +229,9 @@ var SnapManager = exports.SnapManager = Montage.create(Component, { parentPt = [quadPt[0], quadPt[1], 0.0]; else parentPt = [xScreen, yScreen, 0.0]; - var vec = viewUtils.parentToChildVec(parentPt, stage); + + var eyePt = []; + var vec = viewUtils.parentToChildVec(parentPt, stage, eyePt); if (vec) { // activate the drag working plane @@ -241,7 +243,6 @@ var SnapManager = exports.SnapManager = Montage.create(Component, { var wp = currentWorkingPlane.slice(0); var mat = viewUtils.getMatrixFromElement(stage); wp = MathUtils.transformPlane(wp, mat); - var eyePt = viewUtils.getEyePoint(); var projPt = MathUtils.vecIntersectPlane(eyePt, vec, wp); if (projPt) { @@ -709,8 +710,8 @@ var SnapManager = exports.SnapManager = Montage.create(Component, { var wp = currentWorkingPlane.slice(0); var mat = viewUtils.getMatrixFromElement(stage); wp = MathUtils.transformPlane(wp, mat); - var eyePt = viewUtils.getEyePoint(); - var vec = viewUtils.parentToChildVec(gPt, stage); + var eyePt = []; + var vec = viewUtils.parentToChildVec(gPt, stage, eyePt); var projPt = MathUtils.vecIntersectPlane(eyePt, vec, wp); var wpMat = drawUtils.getPlaneToWorldMatrix(currentWorkingPlane, MathUtils.getPointOnPlane(currentWorkingPlane)); projPt[3] = 1.0; @@ -1067,8 +1068,9 @@ var SnapManager = exports.SnapManager = Montage.create(Component, { // Snapping is done in screen space, so convert the bounds from // local element space to global screen space var bounds3D = new Array(); + var eltMat = viewUtils.getLocalToGlobalMatrix( elt ); for (var i=0; i<4; i++) - bounds3D[i] = viewUtils.localToGlobal( bounds[i], elt ); + bounds3D[i] = viewUtils.localToGlobal2(bounds[i], eltMat); var hitRec = this.snapToScreenBounds( elt, globalScrPt, bounds, bounds3D ); -- cgit v1.2.3