Skip to content
Snippets Groups Projects
Commit 14424b03 authored by Amanda Ghassaei's avatar Amanda Ghassaei
Browse files

composite materials saved

parent 3f0679e5
Branches
No related tags found
No related merge requests found
...@@ -304,7 +304,6 @@ input.intInput, input.floatInput{ ...@@ -304,7 +304,6 @@ input.intInput, input.floatInput{
#navRibbon{ #navRibbon{
height: 49px; height: 49px;
width: 400px;
z-index: 1; z-index: 1;
display: block; display: block;
position: absolute; position: absolute;
......
...@@ -71,10 +71,7 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre ...@@ -71,10 +71,7 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre
cellsMax: this.get("cellsMax").clone(), cellsMax: this.get("cellsMax").clone(),
dimensions: dimensions dimensions: dimensions
}; };
if (!materials[id]) materials[id] = {}; materials.setMaterial(id, data);
_.extend(materials[id], data);//todo trigger change on all instances
if (materials[id].threeMaterial) materials[id].threeMaterial.color = new THREE.Color(this.get("color"));
else materials[id].threeMaterial = new THREE.MeshLambertMaterial({color:new THREE.Color(this.get("color")), shading:THREE.FlatShading})
}, },
deleteComposite: function(){ deleteComposite: function(){
......
...@@ -9,6 +9,12 @@ define(['underscore', 'three', 'appState', 'lattice', 'plist', 'threeModel'], fu ...@@ -9,6 +9,12 @@ define(['underscore', 'three', 'appState', 'lattice', 'plist', 'threeModel'], fu
deleteMaterial: { deleteMaterial: {
color: "#ff0000", color: "#ff0000",
threeMaterial:new THREE.MeshLambertMaterial({color:"#ff0000", shading:THREE.FlatShading}) threeMaterial:new THREE.MeshLambertMaterial({color:"#ff0000", shading:THREE.FlatShading})
},
setMaterial: function(id, data){
if (!materials[id]) materials[id] = {};
var oldColor = materials[id].color;
_.extend(materials[id], data);//todo trigger change on all instances
if (materials[id].threeMaterial || oldColor != materials[id].color) changeSingleMaterialColorScheme(id);
} }
}; };
...@@ -44,12 +50,17 @@ define(['underscore', 'three', 'appState', 'lattice', 'plist', 'threeModel'], fu ...@@ -44,12 +50,17 @@ define(['underscore', 'three', 'appState', 'lattice', 'plist', 'threeModel'], fu
function changeColorScheme(){ function changeColorScheme(){
var state = appState.get("realisticColorScheme"); var state = appState.get("realisticColorScheme");
_.each(_.keys(materials), function(name){ _.each(_.keys(materials), function(name){
changeSingleMaterialColorScheme(name, state);
});
three.render();
}
function changeSingleMaterialColorScheme(name, state){
if (!state) state = appState.get("realisticColorScheme");
var materialInfo = materials[name]; var materialInfo = materials[name];
var color = getMaterialColorForState(state, materialInfo, name); var color = getMaterialColorForState(state, materialInfo, name);
if (materialInfo.threeMaterial) materialInfo.threeMaterial.color = new THREE.Color(color); if (materialInfo.threeMaterial) materialInfo.threeMaterial.color = new THREE.Color(color);
else materialInfo.threeMaterial = makeMaterialObject(color); else materialInfo.threeMaterial = makeMaterialObject(color);
});
three.render();
} }
function getMaterialColorForState(state, definition, key){ function getMaterialColorForState(state, definition, key){
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
*/ */
define(['underscore', 'fileSaverLib', 'lattice'], function(_, saveAs, lattice){ define(['underscore', 'fileSaverLib', 'lattice', 'materials'], function(_, saveAs, lattice, materials){
function _saveFile(data, name, extension){ function _saveFile(data, name, extension){
var blob = new Blob([data], {type: "text/plain;charset=utf-8"}); var blob = new Blob([data], {type: "text/plain;charset=utf-8"});
...@@ -22,7 +22,8 @@ define(['underscore', 'fileSaverLib', 'lattice'], function(_, saveAs, lattice){ ...@@ -22,7 +22,8 @@ define(['underscore', 'fileSaverLib', 'lattice'], function(_, saveAs, lattice){
function save(name){ function save(name){
if (!name || name == "" || name == undefined) name = "DM Assembly"; if (!name || name == "" || name == undefined) name = "DM Assembly";
var data = JSON.stringify({ var data = JSON.stringify({
assembly:_getLatticeDataToSave() assembly:_getLatticeDataToSave(),
materials:_getMaterialsDataToSave()
}); });
_saveFile(data, name, ".json"); _saveFile(data, name, ".json");
} }
...@@ -52,7 +53,25 @@ define(['underscore', 'fileSaverLib', 'lattice'], function(_, saveAs, lattice){ ...@@ -52,7 +53,25 @@ define(['underscore', 'fileSaverLib', 'lattice'], function(_, saveAs, lattice){
return lattice.getSaveJSON(); return lattice.getSaveJSON();
} }
function _getMaterialsDataToSave(){
var data = {};
var compositeKeys = _.filter(_.keys(materials), function(key){
return key.substr(0,5) == "super";
});
_.each(compositeKeys, function(key){
data[key] = _.omit(materials[key], "threeMaterial");
});
return data;
}
function loadFile(data){//parsed json todo make this better - load composite function loadFile(data){//parsed json todo make this better - load composite
if (!data.materials){
console.warn("no material definitions in this file")
return;
}
_.each(_.keys(data.materials), function(key){
materials.setMaterial(key, data.materials[key]);
});
if (!data.assembly){ if (!data.assembly){
console.warn("no assembly in this file"); console.warn("no assembly in this file");
return; return;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment