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{
#navRibbon{
height: 49px;
width: 400px;
z-index: 1;
display: block;
position: absolute;
......
......@@ -71,10 +71,7 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre
cellsMax: this.get("cellsMax").clone(),
dimensions: dimensions
};
if (!materials[id]) materials[id] = {};
_.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})
materials.setMaterial(id, data);
},
deleteComposite: function(){
......
......@@ -9,6 +9,12 @@ define(['underscore', 'three', 'appState', 'lattice', 'plist', 'threeModel'], fu
deleteMaterial: {
color: "#ff0000",
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
function changeColorScheme(){
var state = appState.get("realisticColorScheme");
_.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 color = getMaterialColorForState(state, materialInfo, name);
if (materialInfo.threeMaterial) materialInfo.threeMaterial.color = new THREE.Color(color);
else materialInfo.threeMaterial = makeMaterialObject(color);
});
three.render();
}
function getMaterialColorForState(state, definition, key){
......
......@@ -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){
var blob = new Blob([data], {type: "text/plain;charset=utf-8"});
......@@ -22,7 +22,8 @@ define(['underscore', 'fileSaverLib', 'lattice'], function(_, saveAs, lattice){
function save(name){
if (!name || name == "" || name == undefined) name = "DM Assembly";
var data = JSON.stringify({
assembly:_getLatticeDataToSave()
assembly:_getLatticeDataToSave(),
materials:_getMaterialsDataToSave()
});
_saveFile(data, name, ".json");
}
......@@ -52,7 +53,25 @@ define(['underscore', 'fileSaverLib', 'lattice'], function(_, saveAs, lattice){
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
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){
console.warn("no assembly in this file");
return;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment