diff --git a/js/lattice/LatticeBase.js b/js/lattice/LatticeBase.js index 555b8bf505c711dc73554b9426b453b31822c2a9..037dd4f7c2661a3c10b8cb44df8b94be3195a1a2 100644 --- a/js/lattice/LatticeBase.js +++ b/js/lattice/LatticeBase.js @@ -8,8 +8,8 @@ */ -define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'threeModel', 'materials'], - function(_, Backbone, appState, globals, plist, THREE, three, materials){ +define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'threeModel'], + function(_, Backbone, appState, globals, plist, THREE, three){ return Backbone.Model.extend({ @@ -95,10 +95,12 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre makeCellForLatticeType: function(json, callback){ var subclassFile = this.getCellSubclassFile(); - if (json.materialID && materials.isComposite(json.materialID)) subclassFile = "compositeCell"; - require([subclassFile], function(CellSubclass){ - var cell = new CellSubclass(json); - if (callback) callback(cell); + require(['materials'], function(materials){ + if (json.materialID && materials.isComposite(json.materialID)) subclassFile = "compositeCell"; + require([subclassFile], function(CellSubclass){ + var cell = new CellSubclass(json); + if (callback) callback(cell); + }); }); }, diff --git a/js/materials/DMAMaterial.js b/js/materials/DMAMaterial.js index ffccacfbee621e5fab5e01510c70d33c295cf305..0cecddb333e4f357b2704aba3311aa3621bc48a6 100644 --- a/js/materials/DMAMaterial.js +++ b/js/materials/DMAMaterial.js @@ -15,10 +15,12 @@ define(['underscore', 'appState'], function(_, appState){ function DMAMaterial(json, id){ this.id = id; + var randomColor = this.randomHexColor(); + var defaults = { name: "", - color: "#000000", - altColor: "#000000", + color: randomColor, + altColor: randomColor, noDelete: false, properties:{} }; @@ -68,6 +70,10 @@ define(['underscore', 'appState'], function(_, appState){ return this.altColor; }; + DMAMaterial.prototype.randomHexColor = function(){ + return '#' + Math.floor(Math.random()*16777215).toString(16); + }; + DMAMaterial.prototype._makeMaterialObject = function(color, transparent){ if (transparent) return new THREE.MeshLambertMaterial({color:color, transparent: true, opacity:0.1}); return new THREE.MeshLambertMaterial({color:color}); diff --git a/js/materials/DMAMaterials.js b/js/materials/DMAMaterials.js index 07371187aecc958a453fe53c5efcf157198b9d31..f5375bf7ad2132a7df1d1f07cc8539215ffacffb 100644 --- a/js/materials/DMAMaterials.js +++ b/js/materials/DMAMaterials.js @@ -6,6 +6,7 @@ define(['underscore', 'three', 'appState', 'lattice', 'materialsPlist', 'threeModel', 'material'], function(_, THREE, appState, lattice, materialsPlist, three, DMAMaterial){ + var materialsList = { }; newMaterial({ diff --git a/js/menus/MaterialEditorMenuView.js b/js/menus/MaterialEditorMenuView.js index ca635fd44749d7752eaf08a5790d793eb7bd3c2d..f100e3eb9a241470957073b324c03d7a894dec49 100644 --- a/js/menus/MaterialEditorMenuView.js +++ b/js/menus/MaterialEditorMenuView.js @@ -42,7 +42,7 @@ define(['jquery', 'underscore', 'menuParent', 'plist', 'materials', 'text!materi _changeRandomColor: function(e){ e.preventDefault(); - var color = '#' + Math.floor(Math.random()*16777215).toString(16); + var color = this.material.randomHexColor(); this.material.altColor = color; this.render(); }, diff --git a/js/menus/templates/MaterialMenuView.html b/js/menus/templates/MaterialMenuView.html index 3b3f1b809bafc4d1c515c1f945e19a9e53f94c62..db8ff1850f1dffb1b2f1cb7b5ed9061ea4defb7e 100644 --- a/js/menus/templates/MaterialMenuView.html +++ b/js/menus/templates/MaterialMenuView.html @@ -28,11 +28,11 @@ Materials:<br/> <span><span class="materialListTitle"><%= material.name %></span><a data-id="<%= key %>" class="editMaterial">Edit...</a></span></div> </label> <% }); %> +<a id="newElementaryMaterial" href="#" class="btn btn-block btn-lg btn-default">+ Create New Material Definition</a> <label class="checkbox" for="realisticColorScheme"> <input id="realisticColorScheme" data-property="realisticColorScheme" type="checkbox" <% if (realisticColorScheme){ %> checked="checked"<% } %> value="" data-toggle="checkbox" class="appState custom-checkbox"> <span class="icons"><span class="icon-unchecked"></span><span class="icon-checked"></span></span> Use realistic color scheme</label><br/> -<a id="newElementaryMaterial" href="#" class="btn btn-block btn-lg btn-default">+ Create New Material Definition</a> <br/> <% if (!inSimMode){ %> Composite Materials:<br/> diff --git a/js/models/AppState.js b/js/models/AppState.js index b72126a890d3881654368c637d1afae1bb3c7a1c..cb15349cc78a8c30d1ab57aafd0b12ed9bedf37d 100644 --- a/js/models/AppState.js +++ b/js/models/AppState.js @@ -132,7 +132,7 @@ define(['underscore', 'backbone', 'threeModel', 'three', 'plist', 'globals'], var self = this; require(['materials'], function(materials){ - var materialType = this.get("materialType"); + var materialType = self.get("materialType"); //verify that correct class is in sync if (materials.isComposite(materialType)) { if (materials.isComposite(self.previous("materialType"))) return;