diff --git a/js/main.js b/js/main.js index ee74f6f6cf8e2bcfa103f8a0581811994e285af3..64760189de7c1ea53c170b157fa75551f29168c8 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 0000000000000000000000000000000000000000..c4197ffb05340265c6e0ad3a12fd32be14852228 --- /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 93d0dc5882de611a0b5afd2df0490b846e65d4e0..fce8178b496c924e329575af94cbed2945fd767a 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