diff --git a/js/models/AppState.js b/js/models/AppState.js index 0a4a7c1c0ef649ba6ded2db28573979c3c76cfab..a1271a8e2c3d843f89bfe7a310d27226f991fd9b 100644 --- a/js/models/AppState.js +++ b/js/models/AppState.js @@ -157,7 +157,7 @@ define(['underscore', 'backbone', 'threeModel', 'three', 'plist', 'globals'], fu this.downKeys[e.keyCode] = true; } else this.downKeys[e.keyCode] = false; - // console.log(e); +// console.log(e); // console.log(e.keyCode); switch(e.keyCode){ case 8://delete key - causes back nav in chrome, super annoying @@ -230,6 +230,18 @@ define(['underscore', 'backbone', 'threeModel', 'three', 'plist', 'globals'], fu case 90://z - decrease supercell index if (state) this.set("superCellIndex", this._decrementSuperCellIndex("z", this.get("superCellIndex").clone())); break; + case 38://up arrow + if (!state || this.get("currentNav") != "electronicNavSim") return; + require(['eSim'], function(eSim){ + eSim.setZSimHeight(eSim.get("simZHeight")+1); + }); + break; + case 40://down arrow + if (!state || this.get("currentNav") != "electronicNavSim") return; + require(['eSim'], function(eSim){ + eSim.setZSimHeight(eSim.get("simZHeight")-1); + }); + break; default: break; } diff --git a/js/simulation/electronics/LatticeEsim.js b/js/simulation/electronics/LatticeEsim.js index 7df2d321cbace281787d0e8aa2fd421974f926bd..54724a795d20c6a2c1ccaed418cbd9eec4012139 100644 --- a/js/simulation/electronics/LatticeEsim.js +++ b/js/simulation/electronics/LatticeEsim.js @@ -188,8 +188,7 @@ define(['lattice', 'appState', 'three', 'threeModel', 'numeric', 'eSim', 'eSimFi } else { eSim.set("chargeField", new ESimField(chargeMat, offset, resolution, eSim.get("simZHeight"), dataRange)); } - eSim.set("visibleStaticSim", "chargeField");//will cause render -// -10*(P15+Q14+R15+Q16-4*Q15) +// eSim.set("visibleStaticSim", "chargeField");//will cause render }, diff --git a/js/simulation/electronics/eSim.js b/js/simulation/electronics/eSim.js index e66f1a794adb699fd71f923089289b4b9f74bd27..b72432b145cd20e5a141c4de5d4a7436a7151a6c 100644 --- a/js/simulation/electronics/eSim.js +++ b/js/simulation/electronics/eSim.js @@ -35,6 +35,12 @@ define(['underscore', 'backbone', 'threeModel'], function(_, Backbone, three){ }, + setZSimHeight: function(height){ + if (height < 0) return; + var field = this.get(this.get("visibleStaticSim")); + if (field && height<field.getMaxHeight()) this.set("simZHeight", height); + }, + _hideAllFields: function(){ if (this.get("rawPotentialField")) this.get("rawPotentialField").hide(); if (this.get("potentialField")) this.get("potentialField").hide(); diff --git a/js/simulation/electronics/eSimField.js b/js/simulation/electronics/eSimField.js index 7659963b727943fb994ef72da222357273f8a0de..802f3a5a5473e8313a977f7e02d484a5641c9809 100644 --- a/js/simulation/electronics/eSimField.js +++ b/js/simulation/electronics/eSimField.js @@ -30,6 +30,11 @@ define(['underscore', 'threeModel'], function(_, three){ this._threeObjects = this._createThreeObjects(data, offset, 1/resolution, height, this._object3D); }; + ESimField.prototype.getMaxHeight = function(){ + if (!this._data) return 0; + return this._data[0][0].length; + }; + ESimField.prototype._setObject3DPosition = function(offset, resolution, height){ this._object3D.position.set(offset.x, offset.y, offset.z+height/resolution); };