Project

General

Profile

« Previous | Next » 

Revision 74c9af0d

Added by Leszek Koltunski over 2 years ago

Next step on the way to completely do away with object Movement classes.

View differences:

src/main/java/org/distorted/objects/MovementIvy.java
23 23

  
24 24
class MovementIvy extends Movement6
25 25
{
26
  MovementIvy(float[][] cuts, boolean[][] rotatable, int size)
27
    {
28
    super(TwistyIvy.ROT_AXIS,cuts,rotatable,size);
29
    }
26
  private static final int[] NUM_ENABLED = {1,1,1,1,1,1};
27

  
28
  private static final int[][][] ENABLED = new int[][][]
29
      {
30
          {{0},{3},{3},{0}},
31
          {{2},{1},{1},{2}},
32
          {{2},{0},{0},{2}},
33
          {{1},{3},{3},{1}},
34
          {{0},{0},{1},{1}},
35
          {{2},{2},{3},{3}},
36
      };
30 37

  
31 38
///////////////////////////////////////////////////////////////////////////////////////////////////
32
// faces 0,1,2,3  --> /
33
// faces 4,5      --> \
34 39

  
35
  private boolean isTopHalf(int face, float[] touchPoint)
40
  MovementIvy(float[][] cuts, boolean[][] rotatable, int size)
36 41
    {
37
    if( face==4 || face==5 ) return touchPoint[1] >=-touchPoint[0];
38
    else                     return touchPoint[1] >= touchPoint[0];
42
    super(TwistyIvy.ROT_AXIS,cuts,rotatable,size);
39 43
    }
40 44

  
41 45
///////////////////////////////////////////////////////////////////////////////////////////////////
42
// 0 +++
43
// 1 ++-
44
// 2 +-+
45
// 3 +--
46 46

  
47 47
  void computeEnabledAxis(int face, float[] touchPoint, int[] enabled)
48 48
    {
49
    enabled[0] = 1;
49
    boolean p0 = touchPoint[1] >= touchPoint[0];
50
    boolean p1 = touchPoint[1] >=-touchPoint[0];
51
    int part = p0 ? (p1 ? 0:3) : (p1 ? 1:2);
50 52

  
51
    boolean isTop = isTopHalf(face,touchPoint);
52

  
53
    switch(face)
54
      {
55
      case 0: enabled[1] = isTop ? 0:3; break;
56
      case 1: enabled[1] = isTop ? 2:1; break;
57
      case 2: enabled[1] = isTop ? 2:0; break;
58
      case 3: enabled[1] = isTop ? 1:3; break;
59
      case 4: enabled[1] = isTop ? 0:1; break;
60
      case 5: enabled[1] = isTop ? 2:3; break;
61
      }
53
    int num = NUM_ENABLED[face];
54
    enabled[0] = num;
55
    System.arraycopy(ENABLED[face][part], 0, enabled, 1, num);
62 56
    }
63 57
}

Also available in: Unified diff