Project

General

Profile

« Previous | Next » 

Revision 59c20632

Added by Leszek Koltunski over 2 years ago

Reorg for writing the JSON

View differences:

src/main/java/org/distorted/objectlib/main/Movement.java
34 34
  // each face is split into several parts by lines coming from its center to the vertices
35 35
  public static final int TYPE_SPLIT_CORNER = 2;
36 36

  
37
  public static final int MOVEMENT_HEXAHEDRON   = 0;
38
  public static final int MOVEMENT_TETRAHEDRON  = 1;
39
  public static final int MOVEMENT_OCTAHEDRON   = 2;
40
  public static final int MOVEMENT_DODECAHEDRON = 3;
41
  public static final int MOVEMENT_SHAPECHANGE  = 4;
42

  
37 43
  static final float SQ3 = (float)Math.sqrt(3);
38 44
  static final float SQ6 = (float)Math.sqrt(6);
39 45

  
src/main/java/org/distorted/objectlib/main/ObjectType.java
122 122
    return -1;
123 123
    }
124 124

  
125
///////////////////////////////////////////////////////////////////////////////////////////////////
126

  
127
  public static int getNumScramble(int ordinal)
128
    {
129
    return ordinal>=0 && ordinal<NUM_OBJECTS ? objects[ordinal].mNumScrambles : 0;
130
    }
131

  
132 125
///////////////////////////////////////////////////////////////////////////////////////////////////
133 126

  
134 127
  ObjectType(int[] numLayers, int scrambles, int sIcon, int mIcon, int bIcon, int hIcon)
......
141 134
    mHugeIcon    = hIcon;
142 135
    }
143 136

  
137
///////////////////////////////////////////////////////////////////////////////////////////////////
138

  
139
  public int getNumScramble()
140
    {
141
    return mNumScrambles;
142
    }
143

  
144 144
///////////////////////////////////////////////////////////////////////////////////////////////////
145 145

  
146 146
  public int getIconID(int size)
src/main/java/org/distorted/objectlib/main/TwistyObject.java
60 60
import java.io.InputStream;
61 61
import java.util.Random;
62 62

  
63
import static org.distorted.objectlib.main.Movement.MOVEMENT_TETRAHEDRON;
64
import static org.distorted.objectlib.main.Movement.MOVEMENT_HEXAHEDRON;
65
import static org.distorted.objectlib.main.Movement.MOVEMENT_OCTAHEDRON;
66
import static org.distorted.objectlib.main.Movement.MOVEMENT_DODECAHEDRON;
67
import static org.distorted.objectlib.main.Movement.MOVEMENT_SHAPECHANGE;
68

  
63 69
///////////////////////////////////////////////////////////////////////////////////////////////////
64 70

  
65 71
public abstract class TwistyObject extends DistortedNode
......
107 113
  private final Static3D mNodeScale;
108 114
  private final Static4D mQuat;
109 115
  private final int[] mNumLayers;
110
  private final float mRealSize;
116
  private final float mSize;
111 117
  private final DistortedEffects mEffects;
112 118
  private final VertexEffectRotate mRotateEffect;
113 119
  private final Dynamic1D mRotationAngle;
......
126 132
  private int[] mTmpQuats;
127 133
  private int mNumTexRows, mNumTexCols;
128 134
  private int mRotRowBitmap;
129
  private int mRotAxis;
135
  private int mCurrentRotAxis;
130 136
  private MeshBase mMesh;
131 137
  private final TwistyObjectScrambler mScrambler;
138
  private Movement mMovement;
139
  private boolean[][] mLayerRotatable;
140
  private int[][][] mEnabled;
132 141

  
133 142
  //////////////////// SOLVED1 ////////////////////////
134 143

  
......
138 147

  
139 148
///////////////////////////////////////////////////////////////////////////////////////////////////
140 149

  
141
  TwistyObject(int[] numLayers, float realSize, Static4D quat, Static3D move, DistortedTexture nodeTexture,
150
  TwistyObject(int[] numLayers, float size, Static4D quat, Static3D move, DistortedTexture nodeTexture,
142 151
               MeshSquare nodeMesh, DistortedEffects nodeEffects, Resources res, int surfaceW, int surfaceH)
143 152
    {
144 153
    super(nodeTexture,nodeEffects,nodeMesh);
......
149 158
    resizeFBO(mNodeW,mNodeH);
150 159

  
151 160
    mNumLayers = numLayers;
152
    mRealSize = realSize;
161
    mSize = size;
153 162
    mOrigPos = getCubitPositions(mNumLayers);
154 163
    mAxis = getRotationAxis();
155 164
    mInitScreenRatio = getScreenRatio();
......
907 916
    double nearestAngleInRadians = angle*Math.PI/180;
908 917
    float sinA =-(float)Math.sin(nearestAngleInRadians*0.5);
909 918
    float cosA = (float)Math.cos(nearestAngleInRadians*0.5);
910
    float axisX = mAxis[mRotAxis].get0();
911
    float axisY = mAxis[mRotAxis].get1();
912
    float axisZ = mAxis[mRotAxis].get2();
919
    float axisX = mAxis[mCurrentRotAxis].get0();
920
    float axisY = mAxis[mCurrentRotAxis].get1();
921
    float axisZ = mAxis[mCurrentRotAxis].get2();
913 922
    Static4D quat = new Static4D( axisX*sinA, axisY*sinA, axisZ*sinA, cosA);
914 923

  
915 924
    mRotationAngle.removeAll();
916 925
    mRotationAngleStatic.set0(0);
917 926

  
918 927
    for(int i=0; i<NUM_CUBITS; i++)
919
      if( belongsToRotation(i,mRotAxis,mRotRowBitmap) )
928
      if( belongsToRotation(i, mCurrentRotAxis,mRotRowBitmap) )
920 929
        {
921 930
        int index = CUBITS[i].removeRotationNow(quat);
922 931
        mMesh.setEffectAssociation(i, CUBITS[i].computeAssociation(),index);
......
954 963
    {
955 964
    if( wasRotateApplied() )
956 965
      {
957
      mRotAxis     = axis;
966
      mCurrentRotAxis = axis;
958 967
      mRotRowBitmap= computeBitmapFromRow( rowBitmap,axis );
959 968

  
960 969
      mRotationAngleStatic.set0(0.0f);
......
994 1003
      return;
995 1004
      }
996 1005

  
997
    mRotAxis     = axis;
1006
    mCurrentRotAxis = axis;
998 1007
    mRotRowBitmap= computeBitmapFromRow( (1<<row),axis );
999 1008
    mRotationAngleStatic.set0(0.0f);
1000 1009
    mRotationAxis.set( mAxis[axis] );
......
1144 1153
    {
1145 1154
    mObjectScreenRatio = sc;
1146 1155
    int nodeMinSize = Math.min(mNodeW,mNodeH);
1147
    float scale = mObjectScreenRatio*mInitScreenRatio*nodeMinSize/mRealSize;
1156
    float scale = mObjectScreenRatio*mInitScreenRatio*nodeMinSize/mSize;
1148 1157
    mObjectScale.set(scale,scale,scale);
1149 1158
    }
1150 1159

  
......
1255 1264
///////////////////////////////////////////////////////////////////////////////////////////////////
1256 1265

  
1257 1266
  public Static4D getRotationQuat()
1258
      {
1259
      return mQuat;
1260
      }
1267
    {
1268
    return mQuat;
1269
    }
1270

  
1271
///////////////////////////////////////////////////////////////////////////////////////////////////
1272

  
1273
  public float getSize()
1274
    {
1275
    return mSize;
1276
    }
1261 1277

  
1262 1278
///////////////////////////////////////////////////////////////////////////////////////////////////
1263 1279

  
......
1326 1342
    return intGetObjectType(mNumLayers);
1327 1343
    }
1328 1344

  
1345
///////////////////////////////////////////////////////////////////////////////////////////////////
1346

  
1347
  public Movement getMovement()
1348
    {
1349
    if( mMovement==null )
1350
      {
1351
      int[] numLayers = getNumLayers();
1352
      if( mCuts==null ) getCuts(numLayers);
1353
      if( mLayerRotatable==null ) mLayerRotatable = getLayerRotatable(numLayers);
1354
      if( mEnabled==null ) mEnabled = getEnabled();
1355

  
1356
      int movementType = getMovementType();
1357
      int movementSplit= getMovementSplit();
1358

  
1359
      switch(movementType)
1360
        {
1361
        case MOVEMENT_TETRAHEDRON : mMovement = new Movement4(mAxis,mCuts,mLayerRotatable,mSize,movementSplit,mEnabled);
1362
                                    break;
1363
        case MOVEMENT_HEXAHEDRON  : mMovement = new Movement6(mAxis,mCuts,mLayerRotatable,mSize,movementSplit,mEnabled);
1364
                                    break;
1365
        case MOVEMENT_OCTAHEDRON  : mMovement = new Movement8(mAxis,mCuts,mLayerRotatable,mSize,movementSplit,mEnabled);
1366
                                    break;
1367
        case MOVEMENT_DODECAHEDRON: mMovement = new Movement12(mAxis,mCuts,mLayerRotatable,mSize,movementSplit,mEnabled);
1368
                                    break;
1369
        case MOVEMENT_SHAPECHANGE : float[] dist3D = getDist3D(numLayers);
1370
                                    mMovement = new MovementC(mAxis,mCuts,mLayerRotatable,mSize,movementSplit,mEnabled,dist3D);
1371
                                    break;
1372
        }
1373
      }
1374
    return mMovement;
1375
    }
1376

  
1329 1377
///////////////////////////////////////////////////////////////////////////////////////////////////
1330 1378

  
1331 1379
  protected abstract int getFOV();
......
1341 1389
  protected abstract Static4D getQuat(int cubit, int[] numLayers);
1342 1390
  protected abstract ObjectShape getObjectShape(int cubit, int[] numLayers);
1343 1391
  protected abstract int[] getSolvedQuats(int cubit, int[] numLayers);
1344
  protected abstract int getSolvedFunctionIndex();
1345 1392
  protected abstract ScrambleState[] getScrambleStates();
1346 1393
  protected abstract int getNumStickerTypes(int[] numLayers);
1347 1394
  protected abstract ObjectSticker retSticker(int face);
1348 1395
  protected abstract int getFaceColor(int cubit, int cubitface, int[] numLayers);
1349 1396
  protected abstract int getResource(int[] numLayers);
1350 1397
  protected abstract ObjectType intGetObjectType(int[] numLayers);
1351
  protected abstract Movement getMovement();
1398

  
1399
  // for JSON only
1400
  public abstract int getSolvedFunctionIndex();
1401
  public abstract int getMovementType();
1402
  public abstract int getMovementSplit();
1403
  public abstract boolean[][] getLayerRotatable(int[] numLayers);
1404
  public abstract int[][][] getEnabled();
1405
  public abstract float[] getDist3D(int[] numLayers);
1352 1406

  
1353 1407
  public abstract Static3D[] getRotationAxis();
1354 1408
  public abstract int[] getBasicAngle();
1355 1409
  public abstract int getNumFaces();
1356 1410
  public abstract int getObjectName(int[] numLayers);
1357 1411
  public abstract int getInventor(int[] numLayers);
1412
  public abstract int getYearOfInvention(int[] numLayers);
1358 1413
  public abstract int getComplexity(int[] numLayers);
1359 1414
  }
src/main/java/org/distorted/objectlib/objects/TwistyBandaged2Bar.java
135 135
    return R.string.bandaged_2bar_inventor;
136 136
    }
137 137

  
138
///////////////////////////////////////////////////////////////////////////////////////////////////
139

  
140
  public int getYearOfInvention(int[] numLayers)
141
    {
142
    return 2000;
143
    }
144

  
138 145
///////////////////////////////////////////////////////////////////////////////////////////////////
139 146

  
140 147
  public int getComplexity(int[] numLayers)
src/main/java/org/distorted/objectlib/objects/TwistyBandaged3Plate.java
142 142
    return R.string.bandaged_3plate_inventor;
143 143
    }
144 144

  
145
///////////////////////////////////////////////////////////////////////////////////////////////////
146

  
147
  public int getYearOfInvention(int[] numLayers)
148
    {
149
    return 2000;
150
    }
151

  
145 152
///////////////////////////////////////////////////////////////////////////////////////////////////
146 153

  
147 154
  public int getComplexity(int[] numLayers)
src/main/java/org/distorted/objectlib/objects/TwistyBandagedAbstract.java
19 19

  
20 20
package org.distorted.objectlib.objects;
21 21

  
22
import static org.distorted.objectlib.main.Movement.MOVEMENT_HEXAHEDRON;
22 23
import static org.distorted.objectlib.main.Movement.TYPE_NOT_SPLIT;
23 24

  
24 25
import android.content.res.Resources;
......
29 30
import org.distorted.library.type.Static3D;
30 31
import org.distorted.library.type.Static4D;
31 32

  
32
import org.distorted.objectlib.main.Movement;
33 33
import org.distorted.objectlib.main.Movement6;
34 34
import org.distorted.objectlib.helpers.ObjectShape;
35 35
import org.distorted.objectlib.helpers.ObjectSticker;
......
58 58
         {2,2,2}
59 59
        };
60 60

  
61
  private static final int[][][] ENABLED = new int[][][]
62
      {
63
          {{1,2}},{{1,2}},{{0,2}},{{0,2}},{{0,1}},{{0,1}},
64
      };
65

  
66 61
  private static final int NUM_STICKERS = 4;
67 62

  
68 63
  private int[] mBasicAngle;
......
72 67
  private int[][] mAxisMap;
73 68
  private int[][] mFaceMap;
74 69
  private float[][] mCuts;
75
  private boolean[][] mLayerRotatable;
76
  private Movement mMovement;
77 70
  ScrambleState[] mStates;
78 71
  float[][] POSITIONS;
79 72
  int[] QUAT_INDICES;
......
355 348

  
356 349
///////////////////////////////////////////////////////////////////////////////////////////////////
357 350

  
358
  private void getLayerRotatable(int[] numLayers)
351
  public boolean[][] getLayerRotatable(int[] numLayers)
359 352
    {
360
    if( mLayerRotatable==null )
361
      {
362
      int numAxis = ROT_AXIS.length;
363
      mLayerRotatable = new boolean[numAxis][];
353
    int numAxis = ROT_AXIS.length;
354
    boolean[][] layerRotatable = new boolean[numAxis][];
364 355

  
365
      for(int i=0; i<numAxis; i++)
366
        {
367
        mLayerRotatable[i] = new boolean[numLayers[i]];
368
        for(int j=0; j<numLayers[i]; j++) mLayerRotatable[i][j] = true;
369
        }
356
    for(int i=0; i<numAxis; i++)
357
      {
358
      layerRotatable[i] = new boolean[numLayers[i]];
359
      for(int j=0; j<numLayers[i]; j++) layerRotatable[i][j] = true;
370 360
      }
361

  
362
    return layerRotatable;
363
    }
364

  
365
///////////////////////////////////////////////////////////////////////////////////////////////////
366

  
367
  public int getMovementType()
368
    {
369
    return MOVEMENT_HEXAHEDRON;
370
    }
371

  
372
///////////////////////////////////////////////////////////////////////////////////////////////////
373

  
374
  public int getMovementSplit()
375
    {
376
    return TYPE_NOT_SPLIT;
371 377
    }
372 378

  
373 379
///////////////////////////////////////////////////////////////////////////////////////////////////
374 380

  
375
  protected int getSolvedFunctionIndex()
381
  public int[][][] getEnabled()
382
    {
383
    return new int[][][]
384
      {
385
          {{1,2}},{{1,2}},{{0,2}},{{0,2}},{{0,1}},{{0,1}},
386
      };
387
    }
388

  
389
///////////////////////////////////////////////////////////////////////////////////////////////////
390

  
391
  public float[] getDist3D(int[] numLayers)
392
    {
393
    return null;
394
    }
395

  
396
///////////////////////////////////////////////////////////////////////////////////////////////////
397

  
398
  public int getSolvedFunctionIndex()
376 399
    {
377 400
    return 0;
378 401
    }
......
471 494
    return ROT_AXIS;
472 495
    }
473 496

  
474
///////////////////////////////////////////////////////////////////////////////////////////////////
475

  
476
  public Movement getMovement()
477
    {
478
    if( mMovement==null )
479
      {
480
      int[] numLayers = getNumLayers();
481
      if( mCuts==null ) getCuts(numLayers);
482
      getLayerRotatable(numLayers);
483
      mMovement = new Movement6(ROT_AXIS,mCuts,mLayerRotatable,numLayers[0],TYPE_NOT_SPLIT,ENABLED);
484
      }
485
    return mMovement;
486
    }
487

  
488 497
///////////////////////////////////////////////////////////////////////////////////////////////////
489 498

  
490 499
  public int[] getBasicAngle()
src/main/java/org/distorted/objectlib/objects/TwistyBandagedEvil.java
266 266
    return R.string.bandaged_evil_inventor;
267 267
    }
268 268

  
269
///////////////////////////////////////////////////////////////////////////////////////////////////
270

  
271
  public int getYearOfInvention(int[] numLayers)
272
    {
273
    return 2000;
274
    }
275

  
269 276
///////////////////////////////////////////////////////////////////////////////////////////////////
270 277

  
271 278
  public int getComplexity(int[] numLayers)
src/main/java/org/distorted/objectlib/objects/TwistyBandagedFused.java
135 135
    return R.string.bandaged_fused_inventor;
136 136
    }
137 137

  
138
///////////////////////////////////////////////////////////////////////////////////////////////////
139

  
140
  public int getYearOfInvention(int[] numLayers)
141
    {
142
    return 2000;
143
    }
144

  
138 145
///////////////////////////////////////////////////////////////////////////////////////////////////
139 146

  
140 147
  public int getComplexity(int[] numLayers)
src/main/java/org/distorted/objectlib/objects/TwistyCuboid.java
19 19

  
20 20
package org.distorted.objectlib.objects;
21 21

  
22
import static org.distorted.objectlib.main.Movement.MOVEMENT_SHAPECHANGE;
22 23
import static org.distorted.objectlib.main.Movement.TYPE_NOT_SPLIT;
23 24

  
24 25
import android.content.res.Resources;
......
30 31
import org.distorted.library.type.Static4D;
31 32

  
32 33
import org.distorted.objectlib.R;
33
import org.distorted.objectlib.main.Movement;
34 34
import org.distorted.objectlib.main.MovementC;
35 35
import org.distorted.objectlib.main.ObjectControl;
36 36
import org.distorted.objectlib.main.ObjectType;
......
50 50
           new Static3D(0,0,1)
51 51
         };
52 52

  
53
  private static final int[][][] ENABLED = new int[][][]
54
      {
55
          {{1,2}},{{1,2}},{{0,2}},{{0,2}},{{0,1}},{{0,1}},
56
      };
57

  
58 53
  private ScrambleState[] mStates;
59 54
  private Static4D[] mQuats;
60 55
  private float[][] mCuts;
61
  private boolean[][] mLayerRotatable;
62 56
  private int[] mBasicAngle;
63 57
  private ObjectSticker[] mStickers;
64
  private Movement mMovement;
65 58

  
66 59
///////////////////////////////////////////////////////////////////////////////////////////////////
67 60

  
......
564 557

  
565 558
///////////////////////////////////////////////////////////////////////////////////////////////////
566 559

  
567
  private void getLayerRotatable(int[] numLayers)
560
  public boolean[][] getLayerRotatable(int[] numLayers)
568 561
    {
569
    if( mLayerRotatable==null )
570
      {
571
      int numAxis = ROT_AXIS.length;
572
      mLayerRotatable = new boolean[numAxis][];
562
    int numAxis = ROT_AXIS.length;
563
    boolean[][] layerRotatable = new boolean[numAxis][];
573 564

  
574
      for(int i=0; i<numAxis; i++)
575
        {
576
        mLayerRotatable[i] = new boolean[numLayers[i]];
577
        for(int j=0; j<numLayers[i]; j++) mLayerRotatable[i][j] = true;
578
        }
565
    for(int i=0; i<numAxis; i++)
566
      {
567
      layerRotatable[i] = new boolean[numLayers[i]];
568
      for(int j=0; j<numLayers[i]; j++) layerRotatable[i][j] = true;
579 569
      }
580
    }
581

  
582
///////////////////////////////////////////////////////////////////////////////////////////////////
583 570

  
584
  protected int getSolvedFunctionIndex()
585
    {
586
    return 0;
571
    return layerRotatable;
587 572
    }
588 573

  
589 574
///////////////////////////////////////////////////////////////////////////////////////////////////
590 575

  
591
  protected int getNumStickerTypes(int[] numLayers)
576
  public int getMovementType()
592 577
    {
593
    return 1;
578
    return MOVEMENT_SHAPECHANGE;
594 579
    }
595 580

  
596 581
///////////////////////////////////////////////////////////////////////////////////////////////////
597 582

  
598
  protected int getNumCubitFaces()
583
  public int getMovementSplit()
599 584
    {
600
    return 6;
585
    return TYPE_NOT_SPLIT;
601 586
    }
602 587

  
603 588
///////////////////////////////////////////////////////////////////////////////////////////////////
604
// PUBLIC API
605 589

  
606
  public Static3D[] getRotationAxis()
590
  public int[][][] getEnabled()
607 591
    {
608
    return ROT_AXIS;
592
    return new int[][][]
593
      {
594
          {{1,2}},{{1,2}},{{0,2}},{{0,2}},{{0,1}},{{0,1}},
595
      };
609 596
    }
610 597

  
611 598
///////////////////////////////////////////////////////////////////////////////////////////////////
612 599

  
613
  public Movement getMovement()
600
  public float[] getDist3D(int[] numLayers)
614 601
    {
615
    if( mMovement==null )
616
      {
617
      int[] numLayers = getNumLayers();
618
      if( mCuts==null ) getCuts(numLayers);
619
      getLayerRotatable(numLayers);
620
      float avg = (numLayers[0]+numLayers[1]+numLayers[2])/3.0f;
602
    float avg = (numLayers[0]+numLayers[1]+numLayers[2])/3.0f;
621 603

  
622
      float[] dist3D =
604
    return new float[]
623 605
        {
624 606
        0.5f*numLayers[0]/avg,
625 607
        0.5f*numLayers[0]/avg,
......
628 610
        0.5f*numLayers[2]/avg,
629 611
        0.5f*numLayers[2]/avg,
630 612
        };
613
    }
631 614

  
632
      mMovement = new MovementC(ROT_AXIS,mCuts,mLayerRotatable,avg,TYPE_NOT_SPLIT,ENABLED,dist3D);
633
      }
634
    return mMovement;
615
///////////////////////////////////////////////////////////////////////////////////////////////////
616

  
617
  public int getSolvedFunctionIndex()
618
    {
619
    return 0;
620
    }
621

  
622
///////////////////////////////////////////////////////////////////////////////////////////////////
623

  
624
  protected int getNumStickerTypes(int[] numLayers)
625
    {
626
    return 1;
627
    }
628

  
629
///////////////////////////////////////////////////////////////////////////////////////////////////
630

  
631
  protected int getNumCubitFaces()
632
    {
633
    return 6;
634
    }
635

  
636
///////////////////////////////////////////////////////////////////////////////////////////////////
637
// PUBLIC API
638

  
639
  public Static3D[] getRotationAxis()
640
    {
641
    return ROT_AXIS;
635 642
    }
636 643

  
637 644
///////////////////////////////////////////////////////////////////////////////////////////////////
......
705 712
    return R.string.cube3_inventor;
706 713
    }
707 714

  
715
///////////////////////////////////////////////////////////////////////////////////////////////////
716

  
717
  public int getYearOfInvention(int[] numLayers)
718
    {
719
    switch(numLayers[0])
720
      {
721
      case 2: return 1970;
722
      case 3: return 1974;
723
      case 4: return 1981;
724
      case 5: return 1981;
725
      }
726
    return 1974;
727
    }
728

  
708 729
///////////////////////////////////////////////////////////////////////////////////////////////////
709 730

  
710 731
  public int getComplexity(int[] numLayers)
src/main/java/org/distorted/objectlib/objects/TwistyDiamond.java
19 19

  
20 20
package org.distorted.objectlib.objects;
21 21

  
22
import static org.distorted.objectlib.main.Movement.MOVEMENT_OCTAHEDRON;
22 23
import static org.distorted.objectlib.main.Movement.TYPE_NOT_SPLIT;
23 24

  
24 25
import android.content.res.Resources;
......
30 31
import org.distorted.library.type.Static4D;
31 32

  
32 33
import org.distorted.objectlib.R;
33
import org.distorted.objectlib.main.Movement;
34 34
import org.distorted.objectlib.main.Movement8;
35 35
import org.distorted.objectlib.main.ObjectControl;
36 36
import org.distorted.objectlib.main.ObjectType;
......
52 52
           new Static3D(     0,-SQ3/3,+SQ6/3)
53 53
         };
54 54

  
55
  private static final int[][][] ENABLED = new int[][][]
56
      {
57
          {{1,2,3}},{{1,2,3}},{{0,2,3}},{{0,2,3}},{{0,1,3}},{{0,1,3}},{{0,1,2}},{{0,1,2}}
58
      };
59

  
60 55
  private ScrambleState[] mStates;
61 56
  private int[] mBasicAngle;
62 57
  private int[] mFaceMap;
63 58
  private float[][] mCuts;
64
  private boolean[][] mLayerRotatable;
65 59
  private Static4D[] mQuats;
66 60
  private int[] mTetraToFaceMap;
67 61
  private ObjectSticker[] mStickers;
68
  private Movement mMovement;
69 62

  
70 63
///////////////////////////////////////////////////////////////////////////////////////////////////
71 64

  
......
157 150

  
158 151
///////////////////////////////////////////////////////////////////////////////////////////////////
159 152

  
160
  protected int getSolvedFunctionIndex()
153
  public int getSolvedFunctionIndex()
161 154
    {
162 155
    return 0;
163 156
    }
......
196 189

  
197 190
///////////////////////////////////////////////////////////////////////////////////////////////////
198 191

  
199
  private void getLayerRotatable(int[] numLayers)
192
  public boolean[][] getLayerRotatable(int[] numLayers)
200 193
    {
201
    if( mLayerRotatable==null )
202
      {
203
      int numAxis = ROT_AXIS.length;
204
      mLayerRotatable = new boolean[numAxis][];
194
    int numAxis = ROT_AXIS.length;
195
    boolean[][] layerRotatable = new boolean[numAxis][];
205 196

  
206
      for(int i=0; i<numAxis; i++)
207
        {
208
        mLayerRotatable[i] = new boolean[numLayers[i]];
209
        for(int j=0; j<numLayers[i]; j++) mLayerRotatable[i][j] = true;
210
        }
197
    for(int i=0; i<numAxis; i++)
198
      {
199
      layerRotatable[i] = new boolean[numLayers[i]];
200
      for(int j=0; j<numLayers[i]; j++) layerRotatable[i][j] = true;
211 201
      }
202

  
203
    return layerRotatable;
204
    }
205

  
206
///////////////////////////////////////////////////////////////////////////////////////////////////
207

  
208
  public int getMovementType()
209
    {
210
    return MOVEMENT_OCTAHEDRON;
211
    }
212

  
213
///////////////////////////////////////////////////////////////////////////////////////////////////
214

  
215
  public int getMovementSplit()
216
    {
217
    return TYPE_NOT_SPLIT;
218
    }
219

  
220
///////////////////////////////////////////////////////////////////////////////////////////////////
221

  
222
  public int[][][] getEnabled()
223
    {
224
    return new int[][][]
225
      {
226
          {{1,2,3}},{{1,2,3}},{{0,2,3}},{{0,2,3}},{{0,1,3}},{{0,1,3}},{{0,1,2}},{{0,1,2}}
227
      };
228
    }
229

  
230
///////////////////////////////////////////////////////////////////////////////////////////////////
231

  
232
  public float[] getDist3D(int[] numLayers)
233
    {
234
    return null;
212 235
    }
213 236

  
214 237
///////////////////////////////////////////////////////////////////////////////////////////////////
......
539 562
    return ROT_AXIS;
540 563
    }
541 564

  
542
///////////////////////////////////////////////////////////////////////////////////////////////////
543

  
544
  public Movement getMovement()
545
    {
546
    if( mMovement==null )
547
      {
548
      int[] numLayers = getNumLayers();
549
      if( mCuts==null ) getCuts(numLayers);
550
      getLayerRotatable(numLayers);
551
      mMovement = new Movement8(ROT_AXIS,mCuts,mLayerRotatable,numLayers[0],TYPE_NOT_SPLIT,ENABLED);
552
      }
553
    return mMovement;
554
    }
555

  
556 565
///////////////////////////////////////////////////////////////////////////////////////////////////
557 566

  
558 567
  public int[] getBasicAngle()
......
603 612
    return 0;
604 613
    }
605 614

  
615
///////////////////////////////////////////////////////////////////////////////////////////////////
616

  
617
  public int getYearOfInvention(int[] numLayers)
618
    {
619
    switch(numLayers[0])
620
      {
621
      case 2: return 1984;
622
      case 3: return 2003;
623
      case 4: return 2011;
624
      }
625
    return 1984;
626
    }
627

  
606 628
///////////////////////////////////////////////////////////////////////////////////////////////////
607 629

  
608 630
  public int getComplexity(int[] numLayers)
src/main/java/org/distorted/objectlib/objects/TwistyDino.java
19 19

  
20 20
package org.distorted.objectlib.objects;
21 21

  
22
import static org.distorted.objectlib.main.Movement.MOVEMENT_HEXAHEDRON;
22 23
import static org.distorted.objectlib.main.Movement.TYPE_SPLIT_CORNER;
23 24

  
24 25
import android.content.res.Resources;
......
30 31
import org.distorted.library.type.Static4D;
31 32

  
32 33
import org.distorted.objectlib.R;
33
import org.distorted.objectlib.main.Movement;
34
import org.distorted.objectlib.main.Movement6;
35 34
import org.distorted.objectlib.helpers.ObjectShape;
36 35
import org.distorted.objectlib.helpers.ObjectSticker;
37 36
import org.distorted.objectlib.helpers.ScrambleState;
......
51 50
           new Static3D(+SQ3/3,-SQ3/3,-SQ3/3)
52 51
         };
53 52

  
54
  private static final int[][][] ENABLED = new int[][][]
55
      {
56
          {{0,1},{3,1},{2,3},{0,2}},
57
          {{2,3},{3,1},{0,1},{0,2}},
58
          {{1,2},{0,1},{0,3},{2,3}},
59
          {{1,2},{2,3},{0,3},{0,1}},
60
          {{0,3},{0,2},{1,2},{1,3}},
61
          {{1,2},{0,2},{0,3},{1,3}},
62
      };
63

  
64 53
  private int[] mBasicAngle;
65 54
  private Static4D[] mQuats;
66 55
  private float[][] mCuts;
67
  private boolean[][] mLayerRotatable;
68 56
  private ObjectSticker[] mStickers;
69 57
  private float[][] mCenters;
70
  private Movement mMovement;
71 58
  ScrambleState[] mStates;
72 59

  
73 60
///////////////////////////////////////////////////////////////////////////////////////////////////
......
129 116

  
130 117
///////////////////////////////////////////////////////////////////////////////////////////////////
131 118

  
132
  private void getLayerRotatable(int[] numLayers)
119
  public boolean[][] getLayerRotatable(int[] numLayers)
133 120
    {
134
    if( mLayerRotatable==null )
121
    int numAxis = ROT_AXIS.length;
122
    boolean[] tmp = new boolean[] {true,false,true};
123
    boolean[][] layerRotatable = new boolean[numAxis][];
124
    for(int i=0; i<numAxis; i++) layerRotatable[i] = tmp;
125

  
126
    return layerRotatable;
127
    }
128

  
129
///////////////////////////////////////////////////////////////////////////////////////////////////
130

  
131
  public int getMovementType()
132
    {
133
    return MOVEMENT_HEXAHEDRON;
134
    }
135

  
136
///////////////////////////////////////////////////////////////////////////////////////////////////
137

  
138
  public int getMovementSplit()
139
    {
140
    return TYPE_SPLIT_CORNER;
141
    }
142

  
143
///////////////////////////////////////////////////////////////////////////////////////////////////
144

  
145
  public int[][][] getEnabled()
146
    {
147
    return new int[][][]
135 148
      {
136
      int numAxis = ROT_AXIS.length;
137
      boolean[] tmp = new boolean[] {true,false,true};
138
      mLayerRotatable = new boolean[numAxis][];
139
      for(int i=0; i<numAxis; i++) mLayerRotatable[i] = tmp;
140
      }
149
          {{0,1},{3,1},{2,3},{0,2}},
150
          {{2,3},{3,1},{0,1},{0,2}},
151
          {{1,2},{0,1},{0,3},{2,3}},
152
          {{1,2},{2,3},{0,3},{0,1}},
153
          {{0,3},{0,2},{1,2},{1,3}},
154
          {{1,2},{0,2},{0,3},{1,3}},
155
      };
156
    }
157

  
158
///////////////////////////////////////////////////////////////////////////////////////////////////
159

  
160
  public float[] getDist3D(int[] numLayers)
161
    {
162
    return null;
141 163
    }
142 164

  
143 165
///////////////////////////////////////////////////////////////////////////////////////////////////
......
248 270
    return ROT_AXIS;
249 271
    }
250 272

  
251
///////////////////////////////////////////////////////////////////////////////////////////////////
252

  
253
  public Movement getMovement()
254
    {
255
    if( mMovement==null )
256
      {
257
      int[] numLayers = getNumLayers();
258
      if( mCuts==null ) getCuts(numLayers);
259
      getLayerRotatable(numLayers);
260
      mMovement = new Movement6(ROT_AXIS,mCuts,mLayerRotatable,numLayers[0],TYPE_SPLIT_CORNER,ENABLED);
261
      }
262
    return mMovement;
263
    }
264

  
265 273
///////////////////////////////////////////////////////////////////////////////////////////////////
266 274

  
267 275
  public int[] getBasicAngle()
src/main/java/org/distorted/objectlib/objects/TwistyDino4.java
85 85

  
86 86
///////////////////////////////////////////////////////////////////////////////////////////////////
87 87

  
88
  protected int getSolvedFunctionIndex()
88
  public int getSolvedFunctionIndex()
89 89
    {
90 90
    return 1;
91 91
    }
......
117 117
    {
118 118
    return R.string.din43_inventor;
119 119
    }
120

  
121
///////////////////////////////////////////////////////////////////////////////////////////////////
122

  
123
  public int getYearOfInvention(int[] numLayers)
124
    {
125
    return 1985;
126
    }
120 127
}
src/main/java/org/distorted/objectlib/objects/TwistyDino6.java
94 94

  
95 95
///////////////////////////////////////////////////////////////////////////////////////////////////
96 96

  
97
  protected int getSolvedFunctionIndex()
97
  public int getSolvedFunctionIndex()
98 98
    {
99 99
    return 2;
100 100
    }
......
119 119
    {
120 120
    return R.string.dino3_inventor;
121 121
    }
122

  
123
///////////////////////////////////////////////////////////////////////////////////////////////////
124

  
125
  public int getYearOfInvention(int[] numLayers)
126
    {
127
    return 1985;
128
    }
122 129
}
src/main/java/org/distorted/objectlib/objects/TwistyHelicopter.java
19 19

  
20 20
package org.distorted.objectlib.objects;
21 21

  
22
import static org.distorted.objectlib.main.Movement.MOVEMENT_HEXAHEDRON;
22 23
import static org.distorted.objectlib.main.Movement.TYPE_SPLIT_EDGE;
23 24

  
24 25
import android.content.res.Resources;
......
30 31
import org.distorted.library.type.Static4D;
31 32

  
32 33
import org.distorted.objectlib.R;
33
import org.distorted.objectlib.main.Movement;
34 34
import org.distorted.objectlib.main.Movement6;
35 35
import org.distorted.objectlib.main.ObjectControl;
36 36
import org.distorted.objectlib.main.ObjectType;
......
54 54
           new Static3D(-SQ2/2, -SQ2/2,      0)
55 55
         };
56 56

  
57
  private static final int[][][] ENABLED = new int[][][]
58
      {
59
          {{2,5},{2,4},{3,4},{3,5}},
60
          {{2,4},{2,5},{3,5},{3,4}},
61
          {{0,5},{1,5},{1,4},{0,4}},
62
          {{0,4},{1,4},{1,5},{0,5}},
63
          {{1,3},{0,3},{0,2},{1,2}},
64
          {{0,3},{1,3},{1,2},{0,2}},
65
      };
66

  
67 57
  private ScrambleState[] mStates;
68 58
  private int[] mBasicAngle;
69 59
  private Static4D[] mQuats;
70 60
  private float[][] mCuts;
71
  private boolean[][] mLayerRotatable;
72 61
  private float[][] mCenters;
73 62
  private int[] mQuatIndices;
74 63
  private int[][] mFaceMap;
75 64
  private ObjectSticker[] mStickers;
76
  private Movement mMovement;
77 65

  
78 66
///////////////////////////////////////////////////////////////////////////////////////////////////
79 67

  
......
171 159

  
172 160
///////////////////////////////////////////////////////////////////////////////////////////////////
173 161

  
174
  protected int getSolvedFunctionIndex()
162
  public int getSolvedFunctionIndex()
175 163
    {
176 164
    return 0;
177 165
    }
......
198 186

  
199 187
///////////////////////////////////////////////////////////////////////////////////////////////////
200 188

  
201
  private void getLayerRotatable(int[] numLayers)
189
  public boolean[][] getLayerRotatable(int[] numLayers)
190
    {
191
    int numAxis = ROT_AXIS.length;
192
    boolean[] tmp = new boolean[] {true,false,true};
193
    boolean[][] layerRotatable = new boolean[numAxis][];
194
    for(int i=0; i<numAxis; i++) layerRotatable[i] = tmp;
195

  
196
    return layerRotatable;
197
    }
198

  
199
///////////////////////////////////////////////////////////////////////////////////////////////////
200

  
201
  public int getMovementType()
202
    {
203
    return MOVEMENT_HEXAHEDRON;
204
    }
205

  
206
///////////////////////////////////////////////////////////////////////////////////////////////////
207

  
208
  public int getMovementSplit()
209
    {
210
    return TYPE_SPLIT_EDGE;
211
    }
212

  
213
///////////////////////////////////////////////////////////////////////////////////////////////////
214

  
215
  public int[][][] getEnabled()
202 216
    {
203
    if( mLayerRotatable==null )
217
    return new int[][][]
204 218
      {
205
      int numAxis = ROT_AXIS.length;
206
      boolean[] tmp = new boolean[] {true,false,true};
207
      mLayerRotatable = new boolean[numAxis][];
208
      for(int i=0; i<numAxis; i++) mLayerRotatable[i] = tmp;
209
      }
219
          {{2,5},{2,4},{3,4},{3,5}},
220
          {{2,4},{2,5},{3,5},{3,4}},
221
          {{0,5},{1,5},{1,4},{0,4}},
222
          {{0,4},{1,4},{1,5},{0,5}},
223
          {{1,3},{0,3},{0,2},{1,2}},
224
          {{0,3},{1,3},{1,2},{0,2}},
225
      };
226
    }
227

  
228
///////////////////////////////////////////////////////////////////////////////////////////////////
229

  
230
  public float[] getDist3D(int[] numLayers)
231
    {
232
    return null;
210 233
    }
211 234

  
212 235
///////////////////////////////////////////////////////////////////////////////////////////////////
......
441 464
    return ROT_AXIS;
442 465
    }
443 466

  
444
///////////////////////////////////////////////////////////////////////////////////////////////////
445

  
446
  public Movement getMovement()
447
    {
448
    if( mMovement==null )
449
      {
450
      int[] numLayers = getNumLayers();
451
      if( mCuts==null ) getCuts(numLayers);
452
      getLayerRotatable(numLayers);
453
      mMovement = new Movement6(ROT_AXIS,mCuts,mLayerRotatable,numLayers[0],TYPE_SPLIT_EDGE,ENABLED);
454
      }
455
    return mMovement;
456
    }
457

  
458 467
///////////////////////////////////////////////////////////////////////////////////////////////////
459 468

  
460 469
  public int[] getBasicAngle()
......
484 493
    return R.string.heli3_inventor;
485 494
    }
486 495

  
496
///////////////////////////////////////////////////////////////////////////////////////////////////
497

  
498
  public int getYearOfInvention(int[] numLayers)
499
    {
500
    return 2006;
501
    }
502

  
487 503
///////////////////////////////////////////////////////////////////////////////////////////////////
488 504

  
489 505
  public int getComplexity(int[] numLayers)
src/main/java/org/distorted/objectlib/objects/TwistyIvy.java
20 20
package org.distorted.objectlib.objects;
21 21

  
22 22
import static org.distorted.objectlib.main.Movement.TYPE_SPLIT_CORNER;
23
import static org.distorted.objectlib.main.Movement.MOVEMENT_HEXAHEDRON;
23 24

  
24 25
import android.content.res.Resources;
25 26

  
......
30 31
import org.distorted.library.type.Static4D;
31 32

  
32 33
import org.distorted.objectlib.R;
33
import org.distorted.objectlib.main.Movement;
34 34
import org.distorted.objectlib.main.Movement6;
35 35
import org.distorted.objectlib.main.ObjectControl;
36 36
import org.distorted.objectlib.main.ObjectType;
......
51 51
           new Static3D(+SQ3/3,-SQ3/3,-SQ3/3)
52 52
         };
53 53

  
54
  private static final int[][][] ENABLED = new int[][][]
55
      {
56
          {{0},{3},{3},{0}},
57
          {{2},{1},{1},{2}},
58
          {{2},{0},{0},{2}},
59
          {{1},{3},{3},{1}},
60
          {{0},{0},{1},{1}},
61
          {{2},{2},{3},{3}},
62
      };
63

  
64 54
  private static final int NUM_STICKERS = 2;
65 55
  public static final float IVY_D = 0.006f;
66 56
  private static final int  IVY_N = 8;
......
69 59
  private int[] mBasicAngle;
70 60
  private Static4D[] mQuats;
71 61
  private float[][] mCuts;
72
  private boolean[][] mLayerRotatable;
73 62
  private int[][] mFaceMap;
74 63
  private ObjectSticker[] mStickers;
75
  private Movement mMovement;
76 64

  
77 65
///////////////////////////////////////////////////////////////////////////////////////////////////
78 66

  
......
147 135

  
148 136
///////////////////////////////////////////////////////////////////////////////////////////////////
149 137

  
150
  protected int getSolvedFunctionIndex()
138
  public int getSolvedFunctionIndex()
151 139
    {
152 140
    return 0;
153 141
    }
......
174 162

  
175 163
///////////////////////////////////////////////////////////////////////////////////////////////////
176 164

  
177
  private void getLayerRotatable(int[] numLayers)
165
  public boolean[][] getLayerRotatable(int[] numLayers)
178 166
    {
179
    if( mLayerRotatable==null )
180
      {
181
      int numAxis = ROT_AXIS.length;
182
      mLayerRotatable = new boolean[numAxis][];
167
    int numAxis = ROT_AXIS.length;
168
    boolean[][] layerRotatable = new boolean[numAxis][];
183 169

  
184
      for(int i=0; i<numAxis; i++)
185
        {
186
        mLayerRotatable[i] = new boolean[numLayers[i]];
187
        for(int j=0; j<numLayers[i]; j++) mLayerRotatable[i][j] = true;
188
        }
170
    for(int i=0; i<numAxis; i++)
171
      {
172
      layerRotatable[i] = new boolean[numLayers[i]];
173
      for(int j=0; j<numLayers[i]; j++) layerRotatable[i][j] = true;
189 174
      }
175

  
176
    return layerRotatable;
177
    }
178

  
179
///////////////////////////////////////////////////////////////////////////////////////////////////
180

  
181
  public int getMovementType()
182
    {
183
    return MOVEMENT_HEXAHEDRON;
184
    }
185

  
186
///////////////////////////////////////////////////////////////////////////////////////////////////
187

  
188
  public int getMovementSplit()
189
    {
190
    return TYPE_SPLIT_CORNER;
191
    }
192

  
193
///////////////////////////////////////////////////////////////////////////////////////////////////
194

  
195
  public int[][][] getEnabled()
196
    {
197
    return new int[][][]
198
      {
199
          {{0},{3},{3},{0}},
200
          {{2},{1},{1},{2}},
201
          {{2},{0},{0},{2}},
202
          {{1},{3},{3},{1}},
203
          {{0},{0},{1},{1}},
204
          {{2},{2},{3},{3}},
205
      };
206
    }
207

  
208
///////////////////////////////////////////////////////////////////////////////////////////////////
209

  
210
  public float[] getDist3D(int[] numLayers)
211
    {
212
    return null;
190 213
    }
191 214

  
192 215
///////////////////////////////////////////////////////////////////////////////////////////////////
......
473 496
    return ROT_AXIS;
474 497
    }
475 498

  
476
///////////////////////////////////////////////////////////////////////////////////////////////////
477

  
478
  public Movement getMovement()
479
    {
480
    if( mMovement==null )
481
      {
482
      int[] numLayers = getNumLayers();
483
      if( mCuts==null ) getCuts(numLayers);
484
      getLayerRotatable(numLayers);
485
      mMovement = new Movement6(ROT_AXIS,mCuts,mLayerRotatable,numLayers[0],TYPE_SPLIT_CORNER,ENABLED);
486
      }
487
    return mMovement;
488
    }
489

  
490 499
///////////////////////////////////////////////////////////////////////////////////////////////////
491 500

  
492 501
  public int[] getBasicAngle()
......
516 525
    return R.string.ivy2_inventor;
517 526
    }
518 527

  
528
///////////////////////////////////////////////////////////////////////////////////////////////////
529

  
530
  public int getYearOfInvention(int[] numLayers)
531
    {
532
    return 2009;
533
    }
534

  
519 535
///////////////////////////////////////////////////////////////////////////////////////////////////
520 536

  
521 537
  public int getComplexity(int[] numLayers)
src/main/java/org/distorted/objectlib/objects/TwistyJing.java
19 19

  
20 20
package org.distorted.objectlib.objects;
21 21

  
22
import static org.distorted.objectlib.main.Movement.MOVEMENT_TETRAHEDRON;
22 23
import static org.distorted.objectlib.main.Movement.TYPE_NOT_SPLIT;
23 24

  
24 25
import android.content.res.Resources;
......
30 31
import org.distorted.library.type.Static4D;
31 32

  
32 33
import org.distorted.objectlib.R;
33
import org.distorted.objectlib.main.Movement;
34 34
import org.distorted.objectlib.main.Movement4;
35 35
import org.distorted.objectlib.main.ObjectControl;
36 36
import org.distorted.objectlib.main.ObjectType;
......
51 51
           new Static3D(-SQ6/3,+SQ3/3,     0),
52 52
         };
53 53

  
54
  private static final int[][][] ENABLED = new int[][][]
55
      {
56
          {{1,2,3}},{{0,2,3}},{{0,1,3}},{{0,1,2}}
57
      };
58

  
59 54
  static final float F = 0.48f;  // length of the edge of the corner cubit. Keep<0.5
60 55
                                 // Assuming the length of the edge of the whole
61 56
                                 // tetrahedron is 2.0 (ie standard, equal to numLayers
......
65 60
  private int[] mRotQuat;
66 61
  private Static4D[] mQuats;
67 62
  private float[][] mCuts;
68
  private boolean[][] mLayerRotatable;
69 63
  private float[][] mCenters;
70 64
  private int[][] mFaceMap;
71 65
  private ObjectSticker[] mStickers;
72
  private Movement mMovement;
73 66

  
74 67
///////////////////////////////////////////////////////////////////////////////////////////////////
75 68

  
......
173 166

  
174 167
///////////////////////////////////////////////////////////////////////////////////////////////////
175 168

  
176
  protected int getSolvedFunctionIndex()
169
  public int getSolvedFunctionIndex()
177 170
    {
178 171
    return 0;
179 172
    }
......
200 193

  
201 194
///////////////////////////////////////////////////////////////////////////////////////////////////
202 195

  
203
  private void getLayerRotatable(int[] numLayers)
196
  public boolean[][] getLayerRotatable(int[] numLayers)
204 197
    {
205
    if( mLayerRotatable==null )
206
      {
207
      int numAxis = ROT_AXIS.length;
208
      mLayerRotatable = new boolean[numAxis][];
198
    int numAxis = ROT_AXIS.length;
199
    boolean[][] layerRotatable = new boolean[numAxis][];
209 200

  
210
      for(int i=0; i<numAxis; i++)
211
        {
212
        mLayerRotatable[i] = new boolean[numLayers[i]];
213
        for(int j=0; j<numLayers[i]; j++) mLayerRotatable[i][j] = true;
214
        }
201
    for(int i=0; i<numAxis; i++)
202
      {
203
      layerRotatable[i] = new boolean[numLayers[i]];
204
      for(int j=0; j<numLayers[i]; j++) layerRotatable[i][j] = true;
215 205
      }
206

  
207
    return layerRotatable;
208
    }
209

  
210
///////////////////////////////////////////////////////////////////////////////////////////////////
211

  
212
  public int getMovementType()
213
    {
214
    return MOVEMENT_TETRAHEDRON;
215
    }
216

  
217
///////////////////////////////////////////////////////////////////////////////////////////////////
218

  
219
  public int getMovementSplit()
220
    {
221
    return TYPE_NOT_SPLIT;
222
    }
223

  
224
///////////////////////////////////////////////////////////////////////////////////////////////////
225

  
226
  public int[][][] getEnabled()
227
    {
228
    return new int[][][]
229
      {
230
          {{1,2,3}},{{0,2,3}},{{0,1,3}},{{0,1,2}}
231
      };
232
    }
233

  
234
///////////////////////////////////////////////////////////////////////////////////////////////////
235

  
236
  public float[] getDist3D(int[] numLayers)
237
    {
238
    return null;
216 239
    }
217 240

  
218 241
///////////////////////////////////////////////////////////////////////////////////////////////////
......
431 454
    return ROT_AXIS;
432 455
    }
433 456

  
434
///////////////////////////////////////////////////////////////////////////////////////////////////
435

  
436
  public Movement getMovement()
437
    {
438
    if( mMovement==null )
439
      {
440
      int[] numLayers = getNumLayers();
441
      if( mCuts==null ) getCuts(numLayers);
442
      getLayerRotatable(numLayers);
443
      mMovement = new Movement4(ROT_AXIS,mCuts,mLayerRotatable,numLayers[0],TYPE_NOT_SPLIT,ENABLED);
444
      }
445
    return mMovement;
446
    }
447

  
448 457
///////////////////////////////////////////////////////////////////////////////////////////////////
449 458

  
450 459
  public int[] getBasicAngle()
......
474 483
    return R.string.jing_inventor;
475 484
    }
476 485

  
486
///////////////////////////////////////////////////////////////////////////////////////////////////
487

  
488
  public int getYearOfInvention(int[] numLayers)
489
    {
490
    return 1991;
491
    }
492

  
477 493
///////////////////////////////////////////////////////////////////////////////////////////////////
478 494

  
479 495
  public int getComplexity(int[] numLayers)
src/main/java/org/distorted/objectlib/objects/TwistyKilominx.java
752 752
    return 0;
753 753
    }
754 754

  
755
///////////////////////////////////////////////////////////////////////////////////////////////////
756

  
757
  public int getYearOfInvention(int[] numLayers)
758
    {
759
    switch(numLayers[0])
760
      {
761
      case 3: return 2008;
762
      case 5: return 2010;
763
      }
764
    return 2008;
765
    }
766

  
755 767
///////////////////////////////////////////////////////////////////////////////////////////////////
756 768

  
757 769
  public int getComplexity(int[] numLayers)
src/main/java/org/distorted/objectlib/objects/TwistyMegaminx.java
654 654
    return 0;
655 655
    }
656 656

  
657
///////////////////////////////////////////////////////////////////////////////////////////////////
658

  
659
  public int getYearOfInvention(int[] numLayers)
660
    {
661
    switch(numLayers[0])
662
      {
663
      case 3: return 1982;
664
      case 5: return 2006;
665
      }
666
    return 1982;
667
    }
668

  
657 669
///////////////////////////////////////////////////////////////////////////////////////////////////
658 670

  
659 671
  public int getComplexity(int[] numLayers)
src/main/java/org/distorted/objectlib/objects/TwistyMinx.java
19 19

  
20 20
package org.distorted.objectlib.objects;
21 21

  
22
import static org.distorted.objectlib.main.Movement.MOVEMENT_DODECAHEDRON;
22 23
import static org.distorted.objectlib.main.Movement.TYPE_SPLIT_EDGE;
23 24
import static org.distorted.objectlib.main.Movement12.C2;
24 25
import static org.distorted.objectlib.main.Movement12.LEN;
......
31 32
import org.distorted.library.mesh.MeshSquare;
32 33
import org.distorted.library.type.Static3D;
33 34
import org.distorted.library.type.Static4D;
34
import org.distorted.objectlib.main.Movement;
35 35
import org.distorted.objectlib.main.Movement12;
36 36
import org.distorted.objectlib.helpers.ObjectSticker;
37 37
import org.distorted.objectlib.helpers.ScrambleState;
......
61 61
           new Static3D( SIN54/LEN,    0     ,   -C2/LEN )
62 62
         };
63 63

  
64
  private static final int[][][] ENABLED = new int[][][]
65
      {
66
          {{2,3},{3,5},{1,5},{1,4},{2,4}},
67
          {{0,5},{2,5},{2,3},{3,4},{0,4}},
68
          {{2,3},{2,5},{0,5},{0,4},{3,4}},
69
          {{1,5},{3,5},{2,3},{2,4},{1,4}},
70
          {{0,3},{0,4},{4,5},{1,5},{1,3}},
71
          {{1,2},{1,4},{4,5},{0,5},{0,2}},
72
          {{4,5},{1,4},{1,2},{0,2},{0,5}},
73
          {{4,5},{0,4},{0,3},{1,3},{1,5}},
74
          {{0,2},{0,1},{1,3},{3,5},{2,5}},
75
          {{3,4},{2,4},{1,2},{0,1},{0,3}},
76
          {{2,4},{3,4},{0,3},{0,1},{1,2}},
77
          {{1,3},{0,1},{0,2},{2,5},{3,5}},
78
      };
79

  
80 64
  private ScrambleState[] mStates;
81 65
  private int[] mBasicAngle;
82 66
  private int[] mFaceMap;
83 67
  private float[][] mCuts;
84
  private boolean[][] mLayerRotatable;
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff