From 0c4e74bf92d1d243a6ce78aaeb56a22e0555f776 Mon Sep 17 00:00:00 2001
From: Amanda Ghassaei <amandaghassaei@gmail.com>
Date: Thu, 4 Jun 2015 12:26:23 -0700
Subject: [PATCH] materials parent class

---
 js/main.js                          |  1 +
 js/materials/DMAMaterials.js        | 36 +++++++++++++++++++++++++++++
 js/materials/ElectronicMaterials.js | 33 +++++++-------------------
 3 files changed, 45 insertions(+), 25 deletions(-)
 create mode 100644 js/materials/DMAMaterials.js

diff --git a/js/main.js b/js/main.js
index ee74f6f6..64760189 100644
--- a/js/main.js
+++ b/js/main.js
@@ -66,6 +66,7 @@ require.config({
         gikSuperCell: 'cells/supercells/GIKSuperCell',
 
         //materials
+        materials: 'materials/DMAMaterials',
         electronicMaterials: 'materials/ElectronicMaterials',
 
         //UI
diff --git a/js/materials/DMAMaterials.js b/js/materials/DMAMaterials.js
new file mode 100644
index 00000000..c4197ffb
--- /dev/null
+++ b/js/materials/DMAMaterials.js
@@ -0,0 +1,36 @@
+/**
+ * Created by aghassaei on 6/4/15.
+ */
+
+
+define(['underscore', 'three', 'appState'], function(_, THREE, appState){
+
+    function DMAMaterials(materialList){
+        this.materials = {};
+        this.materialList = materialList;
+        this.changeMaterials();
+    }
+
+    DMAMaterials.prototype.changeMaterials = function(){
+        var self = this;
+        _.each(_.keys(self.materialList), function(material){
+            if (appState.get("realisticColorScheme")) {
+                if (self.materials[material]) self.materials[material].color = new THREE.Color(self.materialList[material].color);
+                else self.materials[material] = new THREE.MeshLambertMaterial({color:self.materialList[material].color});
+                if (self.materialList[material].opacity){
+                    self.materials[material].transparent = true;
+                    self.materials[material].opacity = self.materialList[material].opacity;
+                } else {
+                    self.materials[material].transparent = false;
+                }
+            }
+            else {
+                if (self.materials[material]) self.materials[material].color = new THREE.Color(self.materialList[material].altColor);
+                else self.materials[material] = new THREE.MeshLambertMaterial({color:self.materialList[material].altColor});
+                self.materials[material].transparent = false;
+            }
+        });
+    };
+
+    return DMAMaterials;
+});
\ No newline at end of file
diff --git a/js/materials/ElectronicMaterials.js b/js/materials/ElectronicMaterials.js
index 93d0dc58..fce8178b 100644
--- a/js/materials/ElectronicMaterials.js
+++ b/js/materials/ElectronicMaterials.js
@@ -3,34 +3,17 @@
  */
 
 
-define(['underscore', 'three', 'appState', 'plist'], function(_, THREE, appState, plist){
+define(['underscore', 'three', 'appState', 'plist', 'materials'], function(_, THREE, appState, plist, DMAMaterials){
     
-    var materials = {};
-    var materialList = plist.allMaterialTypes.cube.gik;
-    
-    function changeMaterials(){
-        _.each(_.keys(materialList), function(material){
-            if (appState.get("realisticColorScheme")) {
-                if (materials[material]) materials[material].color = new THREE.Color(materialList[material].color);
-                else materials[material] = new THREE.MeshLambertMaterial({color:materialList[material].color});
-                if (materialList[material].opacity){
-                    materials[material].transparent = true;
-                    materials[material].opacity = materialList[material].opacity;
-                } else {
-                    materials[material].transparent = false;
-                }
-            }
-            else {
-                if (materials[material]) materials[material].color = new THREE.Color(materialList[material].altColor);
-                else materials[material] = new THREE.MeshLambertMaterial({color:materialList[material].altColor});
-                materials[material].transparent = false;
-            }
-        });
+    function ElectronicMaterials(){
+       DMAMaterials.call(this, plist.allMaterialTypes.cube.gik);
     }
-    changeMaterials();
+    ElectronicMaterials.prototype = Object.create(DMAMaterials.prototype);
+
+    var material = new ElectronicMaterials();
     
     return {
-        changeMaterials: changeMaterials,
-        materials: materials
+        changeMaterials: material.changeMaterials,
+        materials: material.materials
     }
 });
\ No newline at end of file
-- 
GitLab