Add support for mapping to go in any of the cubes corners properly
authorMark Slee <mcslee@Mark-Slees-MacBook-Pro.local>
Sun, 18 Aug 2013 21:35:59 +0000 (14:35 -0700)
committerMark Slee <mcslee@Mark-Slees-MacBook-Pro.local>
Sun, 18 Aug 2013 21:35:59 +0000 (14:35 -0700)
_PandaDriver.pde
code/GLucose.jar

index e62cfff7b98ca5529282197698346d7e7275a6e7..ef86dbe71714473e20375ca7f42df31c26a55451 100644 (file)
@@ -62,6 +62,13 @@ public class PandaDriver {
   } 
 
   private void buildPointList(Model model, PandaMapping pm) {
+    final int[][] stripOrderings = new int[][] {
+      {  2,  1,  0,  3, 13, 12, 15, 14,  4,  7,  6,  5, 11, 10,  9,  8 }, // FRONT_LEFT
+      {  6,  5,  4,  7,  1,  0,  3,  2,  8, 11, 10,  9, 15, 14, 13, 12 }, // FRONT_RIGHT
+      { 14, 13, 12, 15,  9,  8, 11, 10,  0,  3,  2,  1,  7,  6,  5,  4 }, // REAR_LEFT
+      { 10,  9,  8, 11,  5,  4,  7,  6, 12, 15, 14, 13,  3,  2,  1,  0 }, // REAR_RIGHT
+    };
+
     int pi = 0;
     for (int[] channel : pm.channelList) {
       for (int cubeNumber : channel) {
@@ -74,10 +81,14 @@ public class PandaDriver {
           if (cube == null) {
             throw new RuntimeException("Non-zero, non-existing cube specified in channel mapping (" + cubeNumber + ")");
           }
-          final int[] stripOrder = new int[] {
-            2, 1, 0, 3, 13, 12, 15, 14, 4, 7, 6, 5, 11, 10, 9, 8
-          };
-          for (int stripIndex : stripOrder) {
+          int stripOrderIndex = 0;
+          switch (cube.wiring) {
+            case FRONT_LEFT: stripOrderIndex = 0; break;
+            case FRONT_RIGHT: stripOrderIndex = 1; break;
+            case REAR_LEFT: stripOrderIndex = 2; break;
+            case REAR_RIGHT: stripOrderIndex = 3; break;
+          }
+          for (int stripIndex : stripOrderings[stripOrderIndex]) {
             Strip s = cube.strips.get(stripIndex);
             for (int j = s.points.size() - 1; j >= 0; --j) {
               points[pi++] = s.points.get(j).index;
index 04bf1fafee00298f26817c0de7878434523e6d14..54b4b706c11da63d6ebdae3b92eab06d903c732e 100644 (file)
Binary files a/code/GLucose.jar and b/code/GLucose.jar differ