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 <mqg734@motorola.com>
---
 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