From d11ee5674385a5fc9f6eb40d9dbabdce7f91fed0 Mon Sep 17 00:00:00 2001
From: Amanda Ghassaei <amandaghassaei@gmail.com>
Date: Mon, 14 Sep 2015 16:57:19 -0400
Subject: [PATCH] lego part

---
 assets/stls/parts/LegoBrick1x1.stl | Bin 16884 -> 16884 bytes
 js/cells/GIKCell.js                |  27 +++++++++++++++++++++------
 js/main.js                         |   1 +
 js/parts/LegoPart.js               |  28 ++++++++++++++++++++++++++++
 js/plists/PList.js                 |   4 ++--
 5 files changed, 52 insertions(+), 8 deletions(-)
 create mode 100644 js/parts/LegoPart.js

diff --git a/assets/stls/parts/LegoBrick1x1.stl b/assets/stls/parts/LegoBrick1x1.stl
index 2f6614f5c27d1402c334687c2e9b265340774c78..ff818f27c861eacc915848f27382a651078a7d42 100644
GIT binary patch
literal 16884
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

literal 16884
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
bRlHx71TDPp(057DLV`D$dV(t6OH%qDG$hPA

diff --git a/js/cells/GIKCell.js b/js/cells/GIKCell.js
index bd4352ab..3fd43699 100644
--- a/js/cells/GIKCell.js
+++ b/js/cells/GIKCell.js
@@ -20,14 +20,29 @@ define(['underscore', 'three', 'threeModel', 'lattice', 'appState', 'cubeCell'],
         var self = this;
         var parts  = [];
 
-        if (lattice.get("partType") == "lego") {
-            require(['gikPart'], function(GIKPart){
-                parts.push(new GIKPart(self.index.x, self));
+        if (lattice.get("partType") == "willLego") {
+            require(['gikPart'], function(PartSubclass){
+                parts.push(new PartSubclass(self.index.x, self));
                 callback(parts);
             });
-        } else {
-            require(['gikPartLowPoly'], function(GIKPartLowPoly){
-                parts.push(new GIKPartLowPoly(self.index.x, self));
+        } else if (lattice.get("partType") == "willLegoLowPoly") {
+            require(['gikPartLowPoly'], function(PartSubclass){
+                parts.push(new PartSubclass(self.index.x, self));
+                callback(parts);
+            });
+        } else if (lattice.get("partType") == "dnaLego") {
+            require(['legoPart'], function(PartSubclass){
+                parts.push(new PartSubclass(self.index.x, self));
+                callback(parts);
+            });
+        } else if (lattice.get("partType") == "lego") {
+            require(['legoPart'], function(PartSubclass){
+                parts.push(new PartSubclass(self.index.x, self));
+                callback(parts);
+            });
+        } else if (lattice.get("partType") == "dnaStraight") {
+            require(['gikPartLowPoly'], function(PartSubclass){
+                parts.push(new PartSubclass(self.index.x, self));
                 callback(parts);
             });
         }
diff --git a/js/main.js b/js/main.js
index b9210064..f380e40a 100644
--- a/js/main.js
+++ b/js/main.js
@@ -107,6 +107,7 @@ require.config({
         kennyTeqPart: 'parts/KennyTeqPart',
         kennyTeqHighResPart: 'parts/KennyTeqHighResPart',
         samTeqPart: 'parts/SamTeqPart',
+        legoPart: 'parts/LegoPart',
 
         //materials
         materials: 'materials/DMAMaterials',
diff --git a/js/parts/LegoPart.js b/js/parts/LegoPart.js
new file mode 100644
index 00000000..5519e8e5
--- /dev/null
+++ b/js/parts/LegoPart.js
@@ -0,0 +1,28 @@
+/**
+ * Created by aghassaei on 9/14/15.
+ */
+
+
+define(['underscore', 'stlLoader', 'gikPart', 'bin!../assets/stls/parts/legoBrick1x1.stl'], function(_, THREE, GIKPart, stl){
+
+    var loader = new THREE.STLLoader();
+    var unitGeo = preProcessGeo(loader.parse(stl));
+
+    function preProcessGeo(geo){
+        geo.computeBoundingBox();
+        var unitScale = 1/(8.2);
+        geo.applyMatrix(new THREE.Matrix4().makeScale(unitScale, unitScale, unitScale));
+        return geo;
+    }
+
+    function LegoPart(index, parent){
+        GIKPart.call(this, index, parent);
+    }
+    LegoPart.prototype = Object.create(GIKPart.prototype);
+
+    LegoPart.prototype._getGeometry = function(){
+        return unitGeo;
+    };
+
+    return LegoPart;
+});
\ No newline at end of file
diff --git a/js/plists/PList.js b/js/plists/PList.js
index fd489591..fee1cb42 100644
--- a/js/plists/PList.js
+++ b/js/plists/PList.js
@@ -224,10 +224,10 @@ define(['three'], function(THREE){
                             willGik: {
                                 name: "Electronic GIK Lattice",
                                 parts: {
-                                    lego: {
+                                    willLego: {
                                         name: "Micro LEGO (high res)"
                                     },
-                                    legoLowPoly: {
+                                    willLegoLowPoly: {
                                         name: "Micro LEGO (low res)"
                                     }
                                 },
-- 
GitLab