diff --git a/js/cells/DMACell.js b/js/cells/DMACell.js index 06bcd1399e70c739c6365e34539683041615a3ac..28e2757cb4d3c7011384483333fe1bd6546d05c8 100644 --- a/js/cells/DMACell.js +++ b/js/cells/DMACell.js @@ -240,12 +240,9 @@ define(['underscore', 'three', 'threeModel', 'lattice', 'appState', 'globals'], if (!this.parts) { this._initParts(function(parts){ self.parts = parts; - _.each(this.parts, function(part){ - self.addChildren(part.getMesh()); - }); setVisiblity(); }); - } + } else setVisiblity(); break; case "beam": // if (!this.beams) this.beams = this._initBeams(); @@ -264,7 +261,8 @@ define(['underscore', 'three', 'threeModel', 'lattice', 'appState', 'globals'], if (child.name == "object3D") return; child.visible = visible && (child.name == mode); }); - }; + three.conditionalRender(); + } }; diff --git a/js/lattice/Lattice.js b/js/lattice/Lattice.js index 82a8e6db31e198f5d94b16bd77ceae6263607bb8..d170a147f2efc218e47d198c0c1fce57ea3aac98 100644 --- a/js/lattice/Lattice.js +++ b/js/lattice/Lattice.js @@ -86,10 +86,10 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre var index = (new THREE.Vector3()).subVectors(indices, this.get("cellsMin") || indices); if (!this.sparseCells[index.x][index.y][index.z]) { var self = this; + if (!noRender || noRender === undefined) three.setRenderFlag(); this.makeCellForLatticeType(indices, function(cell){ self.sparseCells[index.x][index.y][index.z] = cell; self.set("numCells", self.get("numCells")+1); - if (!noRender || noRender === undefined) three.render(); }); } else console.warn("already a cell there"); diff --git a/js/three/ThreeModel.js b/js/three/ThreeModel.js index 6b8d94136cc0edfc26c01dfbe9c5c8cc05dc8758..90a2442a41bef075f35501bd776a5971d3bfa567 100644 --- a/js/three/ThreeModel.js +++ b/js/three/ThreeModel.js @@ -17,6 +17,8 @@ define(['underscore', 'three'], function(_, THREE){ var animationLoopRunning = false; var stopAnimationFlag = false; + var shouldRender = false; + initialize(); function initialize(){ @@ -122,8 +124,18 @@ define(['underscore', 'three'], function(_, THREE){ renderer.render(scene, camera); } + function setRenderFlag(){ + shouldRender = true; + } + + function conditionalRender(){ + if (shouldRender) render(); + } + return {//return public properties/methods render: render, + conditionalRender: conditionalRender, + setRenderFlag: setRenderFlag, startAnimationLoop: startAnimationLoop, stopAnimationLoop: stopAnimationLoop, sceneRemove: sceneRemove,