From 52fac825174d16e3ff6875fc497d3f3cfaf4812c Mon Sep 17 00:00:00 2001
From: Nivesh Rajbhandari
Date: Wed, 21 Mar 2012 12:02:36 -0700
Subject: Get matrix and perspective distance from styles controller.

Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com>
---
 js/helper-classes/3D/view-utils.js | 48 --------------------------------------
 1 file changed, 48 deletions(-)

(limited to 'js/helper-classes')

diff --git a/js/helper-classes/3D/view-utils.js b/js/helper-classes/3D/view-utils.js
index 5a820fc2..41fb8d20 100755
--- a/js/helper-classes/3D/view-utils.js
+++ b/js/helper-classes/3D/view-utils.js
@@ -1099,54 +1099,6 @@ exports.ViewUtils = Montage.create(Component, {
         }
     },
 
-    transformStringToMat: {
-        value: function( str )    {
-            var rtnMat;
-
-            var index1 = str.indexOf( "matrix3d(");
-            if (index1 >= 0)
-            {
-                index1 += 9;    // do not include 'matrix3d('
-                var index2 = str.indexOf( ")", index1 );
-                if (index2 >= 0)
-                {
-                    var substr = str.substr( index1, (index2-index1));
-                    if (substr && (substr.length > 0))
-                    {
-                        var numArray = substr.split(',');
-                        var nNums = numArray.length;
-                        if (nNums == 16)
-                        {
-                            // gl-matrix wants row order
-                            rtnMat = numArray;
-                            for (var i=0;  i<16;  i++)
-                                rtnMat[i] = Number( rtnMat[i] );
-
-                            // the matrix as input is column major order.  The Matrix
-                            // class expects the numbers in row major order.
-                            /*
-                            var rowArray = new Array;
-                            for (var i=0;  i<4;  i++)
-                            {
-                                rtnMat.push( numArray[i] );
-                                var row = new Array;
-                                row.push( Number(numArray[i   ]) );
-                                row.push( Number(numArray[i+ 4]) );
-                                row.push( Number(numArray[i+ 8]) );
-                                row.push( Number(numArray[i+12]) );
-                                rowArray.push( row );
-                            }
-                            rtnMat = Matrix.create( rowArray );
-                            */
-                        }
-                    }
-                }
-            }
-
-            return rtnMat;
-        }
-    },
-
     pushViewportObj: {
         value: function( obj )    {
             this._viewportObjStack.push( this.m_viewportObj );
-- 
cgit v1.2.3


From db0fa4e454b76d8a2bd6ba47c6f10166761179e7 Mon Sep 17 00:00:00 2001
From: Nivesh Rajbhandari
Date: Wed, 4 Apr 2012 14:06:38 -0700
Subject: Adding replaceElement routine and event so Timeline can avoid
 removing and adding layers and PI and SelectionController can avoid
 deselecting and reselecting the element.

Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com>
---
 js/helper-classes/3D/draw-utils.js   | 31 ++++++++++++++++++++++++++++++-
 js/helper-classes/3D/snap-manager.js |  9 +++++++--
 2 files changed, 37 insertions(+), 3 deletions(-)

(limited to 'js/helper-classes')

diff --git a/js/helper-classes/3D/draw-utils.js b/js/helper-classes/3D/draw-utils.js
index c7c1c08d..a5428ea3 100755
--- a/js/helper-classes/3D/draw-utils.js
+++ b/js/helper-classes/3D/draw-utils.js
@@ -112,6 +112,7 @@ var DrawUtils = exports.DrawUtils = Montage.create(Component, {
             this.eventManager.addEventListener("elementsRemoved", this, false);
             this.eventManager.addEventListener("elementChange", this, false);
             this.eventManager.addEventListener("closeDocument", this, false);
+            this.eventManager.addEventListener("elementReplaced", this, false);
 		}
 	},
 
@@ -170,13 +171,41 @@ var DrawUtils = exports.DrawUtils = Montage.create(Component, {
                     this.removeElement(element);
                 }, this);
             } else {
-                this.removeElement(elements._element || elements);
+                this.removeElement(elements);
             }
 
             this.drawWorkingPlane();
         }
     },
 
+    handleElementReplaced: {
+        value: function(event) {
+            var oldElement = event.detail.data.oldChild;
+            var newElement = event.detail.data.newChild;
+
+            // check if we already know about this object
+            var n = this._eltArray.length,
+                plane;
+            for (var i=0;  i<n;  i++) {
+                if (oldElement === this._eltArray[i]) {
+                    this._eltArray[i] = newElement;
+                    plane = this._planesArray[i];
+                    break;
+                }
+            }
+
+            if(!plane) {
+                this._eltArray.push( newElement );
+                plane = Object.create(this.ElementPlanes, {});
+                this._planesArray.push( plane );
+            }
+
+            plane.setElement( newElement );
+            plane.init();
+            newElement.elementModel.props3D.elementPlane = plane;
+        }
+    },
+
     _shouldUpdatePlanes: {
         value: function(props) {
             if(!props) {
diff --git a/js/helper-classes/3D/snap-manager.js b/js/helper-classes/3D/snap-manager.js
index 9f6b9ed1..a401c363 100755
--- a/js/helper-classes/3D/snap-manager.js
+++ b/js/helper-classes/3D/snap-manager.js
@@ -124,6 +124,7 @@ var SnapManager = exports.SnapManager = Montage.create(Component, {
     initialize: {
         value: function() {
             this.eventManager.addEventListener("elementsRemoved", this, false);
+            this.eventManager.addEventListener("elementReplaced", this, false);
         }
     },
 
@@ -170,15 +171,19 @@ var SnapManager = exports.SnapManager = Montage.create(Component, {
             if(Array.isArray(elements)) {
                 elements = Array.prototype.slice.call(elements, 0);
                 elements.forEach(function(element) {
-                    element = element._element || element;
                     self.removeElementFrom2DCache(element);
                 });
             } else {
-                this.removeElementFrom2DCache(elements._element || elements);
+                this.removeElementFrom2DCache(elements);
             }
         }
     },
 
+    handleElementReplaced: {
+        value: function(event) {
+            this._isCacheInvalid = true;
+        }
+    },
 
     setCurrentStage: {
         value: function(stage) {
-- 
cgit v1.2.3