From e9e943819a9892d7dd8e0bb8f57eeb4e1b5d9d7e Mon Sep 17 00:00:00 2001
From: Amanda Ghassaei <amandaghassaei@gmail.com>
Date: Mon, 18 May 2015 23:02:17 -0400
Subject: [PATCH] improgress

---
 js/models/LatticeOther.js | 28 +++++++++++++++++++---------
 1 file changed, 19 insertions(+), 9 deletions(-)

diff --git a/js/models/LatticeOther.js b/js/models/LatticeOther.js
index 7666c8e9..7b4cbd57 100644
--- a/js/models/LatticeOther.js
+++ b/js/models/LatticeOther.js
@@ -110,26 +110,36 @@ OtherLatticeSubclasses = {
             for (var i=this._getRasterLoopInit(var1);this._getRasterLoopCondition(i,var1);i+=this._getRasterLoopIterator(var1)){
                 for (var j=this._getRasterLoopInit(var2);this._getRasterLoopCondition(j,var2);j+=this._getRasterLoopIterator(var2)){
                     for (var k=this._getRasterLoopInit(var3);this._getRasterLoopCondition(k,var3);k+=this._getRasterLoopIterator(var3)){
+                        var numToSkip = [0,0];
                         if (var1.order == 0){
-                            if (var2.order == 1) callback(this._retrieveSuperCell(cells[i][j][k]), i, j, k);
-                            else if (var2.order == 2) callback(this._retrieveSuperCell(cells[i][k][j]), i, k, j);
+                            if (var2.order == 1) numToSkip = this._doSuperCellCallback(cells, i, j, k, callback);
+                            else if (var2.order == 2) numToSkip = this._doSuperCellCallback(cells, i, k, j, callback);
                         } else if (var1.order == 1){
-                            if (var2.order == 0) callback(this._retrieveSuperCell(cells[j][i][k]), j, i, k);
-                            else if (var2.order == 2) callback(this._retrieveSuperCell(cells[k][i][j]), k, i, j);
+                            if (var2.order == 0) numToSkip = this._doSuperCellCallback(cells, j, i, k, callback);
+                            else if (var2.order == 2) numToSkip = this._doSuperCellCallback(cells, k, i, j, callback);
                         } else {
-                            if (var2.order == 0) callback(this._retrieveSuperCell(cells[j][k][i]), j, k, i);
+                            if (var2.order == 0) numToSkip = this._doSuperCellCallback(cells, j, k, i, callback);
                             else if (var2.order == 1) {
-                                callback(this._retrieveSuperCell(cells[k][j][i]), k, j, i);
+                                numToSkip = this._doSuperCellCallback(cells, k, j, i, callback);
                             }
                         }
+
                     }
                 }
             }
         },
 
-        _retrieveSuperCell: function(cell){
-            if (cell) return cell.superCell;
-            return null;
+        _doSuperCellCallback: function(cells, x, y, z, callback){
+            var cell = cells[x][y][z];
+            if (z%2 != 0) cell = cells[y][x][z];
+            if (!cell) {
+                callback(null, x, y, z);
+                return [0,0];
+            }
+            var superCell = cell.superCell;
+            callback(superCell, x, y, z);
+            if (z%2 != 0) return [0, superCell.getLength()];
+            return [superCell.getLength(), 0];
         },
 
         _undo: function(){//remove all the mixins, this will help with debugging later
-- 
GitLab