From 703b831d85a1fc921a6da6728b8d4e1eb9597b4e Mon Sep 17 00:00:00 2001
From: Amanda Ghassaei <amandaghassaei@gmail.com>
Date: Thu, 26 Feb 2015 03:09:47 -0500
Subject: [PATCH] last few edits

---
 js/fea/DmaCell.js          |  9 +++----
 js/models/BasePlane.js     | 50 --------------------------------------
 js/models/Lattice.js       |  8 +++---
 js/models/ThreeModel.js    |  5 +++-
 js/threeViews/ThreeView.js |  2 +-
 5 files changed, 14 insertions(+), 60 deletions(-)

diff --git a/js/fea/DmaCell.js b/js/fea/DmaCell.js
index 82d5e088..9fc15150 100644
--- a/js/fea/DmaCell.js
+++ b/js/fea/DmaCell.js
@@ -254,8 +254,7 @@ DMACell.prototype.destroy = function(){
 
     var unitCellGeo = new THREE.BoxGeometry(1,1,1);
 
-    var cellMaterials = [new THREE.MeshNormalMaterial(),
-        new THREE.MeshBasicMaterial({color:0x000000, wireframe:true})];
+    var cellMaterials = [new THREE.MeshNormalMaterial()];//new THREE.MeshBasicMaterial({color:0x000000, wireframe:true})
 
 
     function DMACubeCell(indices, scale, lattice){
@@ -274,9 +273,9 @@ DMACell.prototype.destroy = function(){
     DMACubeCell.prototype._buildCellMesh = function(){//abstract mesh representation of cell
         var mesh = new THREE.SceneUtils.createMultiMaterialObject(unitCellGeo, cellMaterials);
         mesh.myParent = this;//we need a reference to this instance from the mesh for intersection selection stuff
-//        var wireframe = new THREE.BoxHelper(mesh);
-//        wireframe.material.color.set(0x000000);
-//        mesh.add(wireframe);
+        var wireframe = new THREE.BoxHelper(mesh.children[0]);
+        wireframe.material.color.set(0x000000);
+        mesh.children.push(wireframe);
         dmaGlobals.three.sceneAdd(mesh, "cell");
         return mesh;
     };
diff --git a/js/models/BasePlane.js b/js/models/BasePlane.js
index a41e3462..d570835b 100644
--- a/js/models/BasePlane.js
+++ b/js/models/BasePlane.js
@@ -196,56 +196,6 @@ OctaBasePlane = BasePlane.extend({
 
 SquareBasePlane = BasePlane.extend({
 
-    _makeBasePlaneMesh: function(){
-
-        var dimX = this.get("dimX");
-        var dimY = this.get("dimY");
-
-        var geometry = new THREE.Geometry();
-
-        for ( var i = - dimX; i <= dimX; i += 1 ) {
-            geometry.vertices.push( new THREE.Vector3(-dimX, i, 0));
-            geometry.vertices.push( new THREE.Vector3(dimX, i, 0));
-            geometry.vertices.push( new THREE.Vector3(i, -dimX, 0));
-            geometry.vertices.push( new THREE.Vector3(i, dimX, 0));
-
-        }
-
-        var planeGeometry = new THREE.Geometry();
-        planeGeometry.vertices.push( new THREE.Vector3(-dimX, -dimX, 0));
-        planeGeometry.vertices.push( new THREE.Vector3(dimX, -dimX, 0));
-        planeGeometry.vertices.push( new THREE.Vector3(-dimX, dimX, 0));
-        planeGeometry.vertices.push( new THREE.Vector3(dimX, dimX, 0));
-        planeGeometry.faces.push(new THREE.Face3(0, 1, 3));
-        planeGeometry.faces.push(new THREE.Face3(0, 3, 2));
-        planeGeometry.computeFaceNormals();
-
-        var mesh = new THREE.Mesh(planeGeometry, new THREE.MeshBasicMaterial({color:0x000000, transparent:true, opacity:0.0, side:THREE.DoubleSide}));
-        mesh.myParent = this;//reference used for intersection highlighting
-        return [mesh, new THREE.Line(geometry, new THREE.LineBasicMaterial({color:0x000000, transparent:true, linewidth:2, opacity:this.get("material").opacity}), THREE.LinePieces)];
-    },
-
-    _renderZIndexChange: function(){
-        var zIndex = this.get("zIndex");
-        var zScale = dmaGlobals.lattice.zScale();
-        _.each(this.get("mesh"), function(mesh){
-            mesh.position.set(0, 0, zIndex*zScale);
-        });
-        dmaGlobals.three.render();
-    },
-
-    calcHighlighterPosition: function(face, position){
-        var index = dmaGlobals.lattice.getIndexForPosition(position);
-        index.z = this.get("zIndex") - 1;//pretend we're on the top of the cell underneath the baseplane
-        var position = dmaGlobals.lattice.getPositionForIndex(index);
-        position.z += dmaGlobals.lattice.zScale()/2;
-        return {index: index, direction: new THREE.Vector3(0,0,1), position:position};
-    }
-
-});
-
-OctaVertexBasePlane = BasePlane.extend({
-
     _makeBasePlaneMesh: function(){
 
         var scale = dmaGlobals.lattice.xScale(1);
diff --git a/js/models/Lattice.js b/js/models/Lattice.js
index 40cdd47e..13237c9a 100644
--- a/js/models/Lattice.js
+++ b/js/models/Lattice.js
@@ -326,9 +326,11 @@ Lattice = Backbone.Model.extend({
         this._iterCells(this.get("cells"), function(cell){
             if (cell) cell.updateForScale(scale);
         });
-        this._iterCells(this.get("inverseCells"), function(cell){
-            if (cell) cell.updateForScale(scale);
-        });
+        if (this.get("shouldShowInverseCells")){
+            this._iterCells(this.get("inverseCells"), function(cell){
+                if (cell) cell.updateForScale(scale);
+            });
+        }
         dmaGlobals.three.render();
     },
 
diff --git a/js/models/ThreeModel.js b/js/models/ThreeModel.js
index 9da34ed6..5a239c71 100644
--- a/js/models/ThreeModel.js
+++ b/js/models/ThreeModel.js
@@ -11,6 +11,7 @@ function ThreeModel(){
 
     //store all meshes to highlight
     var cells = [];
+    var highlightableCells = [];//may be able to get rid of this eventually
     var invCells = [];
     var parts = [];
     var basePlane = [];
@@ -55,6 +56,7 @@ function ThreeModel(){
 
         if (type == "cell"){
             cells.push(object);
+            highlightableCells.push(object.children[0]);
         } else if (type == "inverseCell"){
             invCells.push(object);
         } else if (type == "part"){
@@ -73,6 +75,7 @@ function ThreeModel(){
 
         if (type == "cell"){
             cells.splice(cells.indexOf(objectToRemove), 1);
+            highlightableCells.splice(highlightableCells.indexOf(objectToRemove.children[0]), 1);
         } else if (type == "inverseCell"){
             invCells.splice(invCells.indexOf(objectToRemove), 1);
         } else if (type == "part"){
@@ -108,7 +111,7 @@ function ThreeModel(){
 //        scene: scene,
         domElement: renderer.domElement,
         camera: camera,
-        cells: cells,
+        cells: highlightableCells,
         invCells: invCells,
         parts: parts,
         basePlane: basePlane,
diff --git a/js/threeViews/ThreeView.js b/js/threeViews/ThreeView.js
index a441ca83..c8d8e620 100644
--- a/js/threeViews/ThreeView.js
+++ b/js/threeViews/ThreeView.js
@@ -93,7 +93,7 @@ ThreeView = Backbone.View.extend({
             if(this.mouseProjection.intersectObject(this.highlighter.mesh, false).length > 0) return;
         }
 
-        var intersections = this.mouseProjection.intersectObjects(this.model.cells.concat(this.model.basePlane), true);
+        var intersections = this.mouseProjection.intersectObjects(this.model.cells.concat(this.model.basePlane), false);
         if (intersections.length == 0) {//no intersections
             this.highlighter.setNothingHighlighted();
             this._setNoPartIntersections();
-- 
GitLab