From 42c2a480a3883389e47d4ec291dfb55d99cf4b7f Mon Sep 17 00:00:00 2001 From: Nivesh Rajbhandari Date: Tue, 29 May 2012 10:26:19 -0700 Subject: Cache perspective distance lookup to speed up user interaction. Signed-off-by: Nivesh Rajbhandari --- js/helper-classes/3D/view-utils.js | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'js/helper-classes/3D/view-utils.js') diff --git a/js/helper-classes/3D/view-utils.js b/js/helper-classes/3D/view-utils.js index a3d09404..3c7ae6ff 100755 --- a/js/helper-classes/3D/view-utils.js +++ b/js/helper-classes/3D/view-utils.js @@ -195,7 +195,12 @@ exports.ViewUtils = Montage.create(Component, { getPerspectiveDistFromElement: { value: function( elt ) { - return ElementsMediator.getPerspectiveDist(elt); + var pDist = ElementsMediator.getPerspectiveDist(elt); + if(pDist === "none") { + return null; + } else { + return pDist; + } } }, @@ -1320,14 +1325,6 @@ exports.ViewUtils = Montage.create(Component, { } }, - getCurrentDocument: - { - value: function() - { - return snapManagerModule.SnapManager.application.ninja.currentDocument; - } - }, - setStageZoom: { value:function( globalPt, zoomFactor ) { var localPt; -- cgit v1.2.3 From 0b830a8c6415e9cc255d1593a05ae3fa9d94c5e2 Mon Sep 17 00:00:00 2001 From: Nivesh Rajbhandari Date: Thu, 31 May 2012 14:31:00 -0700 Subject: Adding back the stage references in the 3d classes. Signed-off-by: Nivesh Rajbhandari --- js/helper-classes/3D/view-utils.js | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) (limited to 'js/helper-classes/3D/view-utils.js') diff --git a/js/helper-classes/3D/view-utils.js b/js/helper-classes/3D/view-utils.js index 3c7ae6ff..5a128408 100755 --- a/js/helper-classes/3D/view-utils.js +++ b/js/helper-classes/3D/view-utils.js @@ -24,6 +24,9 @@ exports.ViewUtils = Montage.create(Component, { // keep a stack of viewport objects _viewportObjStack: { value: []}, + _rootElement: { value: null}, + _stageElement: { value: null}, + /////////////////////////////////////////////////////////////////////// // Property accessors /////////////////////////////////////////////////////////////////////// @@ -36,6 +39,13 @@ exports.ViewUtils = Montage.create(Component, { }, getViewportObj: { value: function() { return this.m_viewportObj; } }, + setRootElement: { value: function( elt ) { this._rootElement = elt; } }, + getRootElement: { value: function () { return this._rootElement; } }, + + setStageElement: { value: function( elt ) { this._stageElement = elt; } }, + getStageElement: { value: function () { return this._stageElement; } }, + + getPerspectiveDistance: { value: function () { return this._perspectiveDist; } }, /////////////////////////////////////////////////////////////////////// @@ -285,7 +295,7 @@ exports.ViewUtils = Montage.create(Component, { // into stage world space. postViewToStageWorld: { value: function( localPt, elt ) { - if ((elt == null) || (elt === this.application.ninja.currentDocument.model.documentRoot)) return localPt; + if ((elt == null) || (elt === this._stageElement)) return localPt; // get the 3D transformation and 2D offset from the element var pt = localPt.slice(0); @@ -312,7 +322,7 @@ exports.ViewUtils = Montage.create(Component, { this.popViewportObj(); // check if we are done - if (parent === this.application.ninja.currentDocument.model.documentRoot) break; + if (parent === this._stageElement) break; if (this.elementHas3D( parent )) { @@ -344,10 +354,10 @@ exports.ViewUtils = Montage.create(Component, { // if (child === this.application.ninja.currentDocument.model.documentRoot) break; // child = child.offsetParent; - if (child === this.application.ninja.currentDocument.model.documentRoot) break; - if (child === this.application.ninja.currentDocument.model.documentRoot.parentNode) break; + if (child === this._stageElement) break; + if (child === this._rootElement) break; child = child.offsetParent; - if (child === this.application.ninja.currentDocument.model.documentRoot.parentNode) break; + if (child === this._rootElement) break; } ///////////////////////////////////////////////////////// @@ -397,7 +407,7 @@ exports.ViewUtils = Montage.create(Component, { { // TODO - Commenting out flatten support until new perspective workflow is fully working // if (flatten) pt[2] = 0; -// var flatten = (parent !== this.application.ninja.currentDocument.model.documentRoot.parentNode) && (ElementsMediator.getProperty(parent, "-webkit-transform-style") !== "preserve-3d"); +// var flatten = (parent !== this._rootElement) && (ElementsMediator.getProperty(parent, "-webkit-transform-style") !== "preserve-3d"); // if(flatten) // { // pt[2] = 0; @@ -682,7 +692,7 @@ exports.ViewUtils = Montage.create(Component, { // if (elt.__ninjaXOff) xOff = elt.__ninjaXOff; // if (elt.__ninjaYOff) yOff = elt.__ninjaYOff; var offset = [xOff, yOff]; - if(elt.offsetParent && (elt.offsetParent !== this.application.ninja.currentDocument.model.documentRoot)) + if(elt.offsetParent && (elt.offsetParent !== this._stageElement)) { var pS = elt.ownerDocument.defaultView.getComputedStyle(elt.offsetParent); @@ -698,7 +708,7 @@ exports.ViewUtils = Montage.create(Component, { } } - if(elt === this.application.ninja.currentDocument.model.documentRoot) + if(elt === this._stageElement) { // TODO - Call a routine from the user document controller to get the offsets/margins // Once we expose the document controller to ViewUtils @@ -989,7 +999,7 @@ exports.ViewUtils = Montage.create(Component, { glmat4.multiply( v2s, mat, mat ); // TODO - Commenting out flatten support until new perspective workflow is fully working -// var flatten = (elt !== this.application.ninja.currentDocument.model.documentRoot.parentNode) && (elt.parentElement !== this.application.ninja.currentDocument.model.documentRoot.parentNode) && (ElementsMediator.getProperty(elt.parentElement, "-webkit-transform-style") !== "preserve-3d"); +// var flatten = (elt !== this._rootElement) && (elt.parentElement !== this._rootElement) && (ElementsMediator.getProperty(elt.parentElement, "-webkit-transform-style") !== "preserve-3d"); // if(flatten) // { // glmat4.multiply( zMat, mat, mat ); @@ -1003,10 +1013,10 @@ exports.ViewUtils = Montage.create(Component, { this.popViewportObj(); - if (elt === this.application.ninja.currentDocument.model.documentRoot) break; - if (elt === this.application.ninja.currentDocument.model.documentRoot.parentNode) break; + if (elt === this._stageElement) break; + if (elt === this._rootElement) break; elt = elt.offsetParent; - if (elt === this.application.ninja.currentDocument.model.documentRoot.parentNode) break; + if (elt === this._rootElement) break; } return mat; @@ -1040,7 +1050,7 @@ exports.ViewUtils = Montage.create(Component, { // multiply all the matrices together //mat = s2v.multiply( mat ); glmat4.multiply( s2v, mat, mat ); - if (elt === this.application.ninja.currentDocument.model.documentRoot) break; + if (elt === this._stageElement) break; //mat = objMat.multiply( mat ); glmat4.multiply( objMat, mat, mat ); if(shouldProject && pDist) @@ -1089,7 +1099,7 @@ exports.ViewUtils = Montage.create(Component, { // multiply all the matrices together //mat = s2v.multiply( mat ); glmat4.multiply( s2v, mat, mat ); - if (elt === this.application.ninja.currentDocument.model.documentRoot) break; + if (elt === this._stageElement) break; //mat = objMat.multiply( mat ); if (shouldLocalTransform) { glmat4.multiply( objMat, mat, mat ); -- cgit v1.2.3