Project

General

Profile

« Previous | Next » 

Revision ba6d9ee9

Added by Leszek Koltunski over 2 years ago

Cuboids

View differences:

src/main/java/org/distorted/objectlib/main/Movement.java
61 61
///////////////////////////////////////////////////////////////////////////////////////////////////
62 62

  
63 63
  Movement(Static3D[] rotAxis, Static3D[] faceAxis, float[][] cuts, boolean[][] rotatable,
64
           float distance3D, int size, int type, int[][][] enabled)
64
           float distance3D, float size, int type, int[][][] enabled)
65 65
    {
66 66
    mPoint = new float[3];
67 67
    mCamera= new float[3];
......
268 268

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

  
271
  private float[] computeBorder(float[] cuts, boolean[] rotatable, int size)
271
  private float[] computeBorder(float[] cuts, boolean[] rotatable, float size)
272 272
    {
273 273
    if( cuts==null ) return null;
274 274

  
......
306 306
    }
307 307

  
308 308
///////////////////////////////////////////////////////////////////////////////////////////////////
309
// size, not numLayers (see Master Skewb where size!=numLayers)
309
// size, not numLayers (see Master Skewb where size!=numLayers) - also cuboids.
310 310

  
311
  void computeBorders(float[][] cuts, boolean[][] rotatable, int size)
311
  void computeBorders(float[][] cuts, boolean[][] rotatable, float size)
312 312
    {
313 313
    int numCuts = cuts.length;
314 314
    mTouchBorders = new float[numCuts][];
315 315

  
316
    for(int i=0; i<numCuts; i++)
316
    for(int axis=0; axis<numCuts; axis++)
317 317
      {
318
      mTouchBorders[i] = computeBorder(cuts[i],rotatable[i],size);
318
      mTouchBorders[axis] = computeBorder(cuts[axis],rotatable[axis],size);
319 319
      }
320 320
    }
321 321

  
src/main/java/org/distorted/objectlib/main/Movement12.java
54 54

  
55 55
///////////////////////////////////////////////////////////////////////////////////////////////////
56 56

  
57
  public Movement12(Static3D[] rotAxis,float[][] cuts, boolean[][] rotatable, int size, int type, int[][][] enabled)
57
  public Movement12(Static3D[] rotAxis,float[][] cuts, boolean[][] rotatable, float size, int type, int[][][] enabled)
58 58
    {
59 59
    super(rotAxis, FACE_AXIS, cuts,rotatable,DIST3D, size, type, enabled);
60 60
    }
src/main/java/org/distorted/objectlib/main/Movement4.java
39 39

  
40 40
///////////////////////////////////////////////////////////////////////////////////////////////////
41 41

  
42
  public Movement4(Static3D[] rotAxis,float[][] cuts, boolean[][] rotatable, int size, int type, int[][][] enabled)
42
  public Movement4(Static3D[] rotAxis,float[][] cuts, boolean[][] rotatable, float size, int type, int[][][] enabled)
43 43
    {
44 44
    super(rotAxis, FACE_AXIS, cuts, rotatable, DIST3D, size, type, enabled);
45 45
    }
src/main/java/org/distorted/objectlib/main/Movement6.java
38 38

  
39 39
///////////////////////////////////////////////////////////////////////////////////////////////////
40 40

  
41
  public Movement6(Static3D[] rotAxis,float[][] cuts, boolean[][] rotatable, int size, int type, int[][][] enabled)
41
  public Movement6(Static3D[] rotAxis,float[][] cuts, boolean[][] rotatable, float size, int type, int[][][] enabled)
42 42
    {
43 43
    super(rotAxis, FACE_AXIS, cuts, rotatable, DIST3D, size, type, enabled);
44 44
    }
src/main/java/org/distorted/objectlib/main/Movement8.java
39 39

  
40 40
///////////////////////////////////////////////////////////////////////////////////////////////////
41 41

  
42
  public Movement8(Static3D[] rotAxis,float[][] cuts, boolean[][] rotatable, int size, int type, int[][][] enabled)
42
  public Movement8(Static3D[] rotAxis,float[][] cuts, boolean[][] rotatable, float size, int type, int[][][] enabled)
43 43
    {
44 44
    super(rotAxis, FACE_AXIS, cuts, rotatable, DIST3D, size, type, enabled);
45 45
    }
src/main/java/org/distorted/objectlib/main/ObjectType.java
184 184
      case  0:
185 185
      case  1:
186 186
      case  2:
187
      case  3: return new TwistyCuboid(numL, quat, move, texture, mesh, effects, res, surfaceW, surfaceH);
187
      case  3: return new TwistyCuboid        (numL, quat, move, texture, mesh, effects, res, surfaceW, surfaceH);
188 188
      case  4: return new TwistyJing          (numL, quat, move, texture, mesh, effects, res, surfaceW, surfaceH);
189 189
      case  5:
190 190
      case  6:
src/main/java/org/distorted/objectlib/objects/TwistyCuboid.java
545 545
      {
546 546
      mCuts = new float[3][];
547 547

  
548
      int lenX = numLayers[0];
549

  
550
      if( lenX>=2 )
548
      for(int axis=0; axis<3; axis++)
551 549
        {
552
        mCuts[0] = new float[lenX-1];
553
        for(int i=0; i<lenX-1; i++) mCuts[0][i] = (2-lenX)*0.5f + i;
554
        }
555
      else
556
        {
557
        mCuts[0] = null;
558
        }
550
        int len = numLayers[axis];
551
        float start = (2-len)*0.5f;
559 552

  
560
      int lenY = numLayers[1];
561

  
562
      if( lenY>=2 )
563
        {
564
        mCuts[1] = new float[lenY-1];
565
        for(int i=0; i<lenY-1; i++) mCuts[1][i] = (2-lenY)*0.5f + i;
566
        }
567
      else
568
        {
569
        mCuts[1] = null;
570
        }
571

  
572
      int lenZ = numLayers[2];
573

  
574
      if( lenZ>=2 )
575
        {
576
        mCuts[2] = new float[lenZ-1];
577
        for(int i=0; i<lenZ-1; i++) mCuts[2][i] = (2-lenZ)*0.5f + i;
578
        }
579
      else
580
        {
581
        mCuts[2] = null;
553
        if( len>=2 )
554
          {
555
          mCuts[axis] = new float[len-1];
556
          for(int i=0; i<len-1; i++) mCuts[axis][i] = start+i;
557
          }
582 558
        }
583 559
      }
584 560

  
......
641 617
      int[] numLayers = getNumLayers();
642 618
      if( mCuts==null ) getCuts(numLayers);
643 619
      getLayerRotatable(numLayers);
644
      mMovement = new Movement6(ROT_AXIS,mCuts,mLayerRotatable,numLayers[0],TYPE_NOT_SPLIT,ENABLED);
620
      float avg = (numLayers[0]+numLayers[1]+numLayers[2])/3.0f;
621
      mMovement = new Movement6(ROT_AXIS,mCuts,mLayerRotatable,avg,TYPE_NOT_SPLIT,ENABLED);
645 622
      }
646 623
    return mMovement;
647 624
    }
......
669 646
    {
670 647
    switch(numLayers[0])
671 648
      {
672
      case 2: return numLayers[1]==2 ? ObjectType.CUBE_2 : ObjectType.CU_223;
673
      case 3: return numLayers[1]==3 ? ObjectType.CUBE_3 : ObjectType.CU_334;
649
      case 2: return ObjectType.CUBE_2;
650
      case 3: return ObjectType.CUBE_3;
674 651
      case 4: return ObjectType.CUBE_4;
675 652
      case 5: return ObjectType.CUBE_5;
676 653
      }

Also available in: Unified diff