Project

General

Profile

« Previous | Next » 

Revision 7d41fc84

Added by Leszek Koltunski over 1 year ago

Beginnings of support for AI Cube.

View differences:

src/main/java/org/distorted/objectlib/objects/TwistyBandagedCuboid.java
48 48
         {2,2,2},
49 49
        };
50 50

  
51
  // Fused Cube
51 52
  public static final float[][] POS_1 = new float[][]
52 53
        {
53
          {-1.0f, -1.0f, +0.0f,
54
           -1.0f, -1.0f, +1.0f,
55
           -1.0f,  0.0f, +0.0f,
56
           -1.0f,  0.0f, +1.0f,
57
            0.0f, -1.0f, +0.0f,
58
            0.0f, -1.0f, +1.0f,
59
            0.0f,  0.0f, +0.0f,
60
            0.0f,  0.0f, +1.0f},
54
          {-1.0f, -1.0f, +0.0f, -1.0f, -1.0f, +1.0f, -1.0f,  0.0f, +0.0f, -1.0f,  0.0f, +1.0f,
55
            0.0f, -1.0f, +0.0f,  0.0f, -1.0f, +1.0f,  0.0f,  0.0f, +0.0f,  0.0f,  0.0f, +1.0f },
61 56
          {-1.0f, +1.0f, +1.0f},
62 57
          {-1.0f, +1.0f, +0.0f},
63 58
          {-1.0f, +1.0f, -1.0f},
......
79 74
          { 0.0f,  0.0f, -1.0f}
80 75
        };
81 76

  
77
  // 2-bar cube
82 78
  public static final float[][] POS_2 = new float[][]
83 79
        {
84 80
          { 0.0f, +1.0f,  1.0f, 0.0f, +1.0f,  0.0f, 0.0f, +1.0f, -1.0f},
......
105 101
          { 0.0f, -1.0f, -1.0f}
106 102
        };
107 103

  
104
  // 3-plate cube
108 105
  public static final float[][] POS_3 = new float[][]
109 106
        {
110 107
          {-1.0f,  1.0f,  1.0f, -1.0f,  0.0f,  1.0f,  0.0f,  1.0f,  1.0f,  0.0f,  0.0f,  1.0f},
......
126 123
          { 0.0f,  0.0f, -1.0f}
127 124
        };
128 125

  
126
  // BiCube
129 127
  public static final float[][] POS_4 = new float[][]
130 128
        {
131 129
          { 1.0f,  1.0f, -1.0f},
......
143 141
          { 1.0f, -1.0f, -1.0f,  1.0f,  0.0f, -1.0f}
144 142
        };
145 143

  
144
  // AI Cube
145
  public static final float[][] POS_5 = new float[][]
146
        {
147
          {-1.5f,-1.5f, 1.5f, -0.5f,-1.5f, 1.5f, -1.5f,-0.5f, 1.5f, -0.5f,-0.5f, 1.5f,
148
           -1.5f,-1.5f, 0.5f, -0.5f,-1.5f, 0.5f, -1.5f,-0.5f, 0.5f, -0.5f,-0.5f, 0.5f, },
149
          { 1.5f, 1.5f, 1.5f,  0.5f, 1.5f, 1.5f,  1.5f, 0.5f, 1.5f,  0.5f, 0.5f, 1.5f,
150
            1.5f, 1.5f, 0.5f,  0.5f, 1.5f, 0.5f,  1.5f, 0.5f, 0.5f,  0.5f, 0.5f, 0.5f, },
151
          {-1.5f, 1.5f,-1.5f, -0.5f, 1.5f,-1.5f, -1.5f, 0.5f,-1.5f, -0.5f, 0.5f,-1.5f,
152
           -1.5f, 1.5f,-0.5f, -0.5f, 1.5f,-0.5f, -1.5f, 0.5f,-0.5f, -0.5f, 0.5f,-0.5f, },
153
          { 1.5f,-1.5f,-1.5f,  0.5f,-1.5f,-1.5f,  1.5f,-0.5f,-1.5f,  0.5f,-0.5f,-1.5f,
154
            1.5f,-1.5f,-0.5f,  0.5f,-1.5f,-0.5f,  1.5f,-0.5f,-0.5f,  0.5f,-0.5f,-0.5f, },
155

  
156
          {-1.5f, 1.5f, 1.5f },
157
          {-1.5f, 1.5f, 0.5f },
158
          {-1.5f, 0.5f, 1.5f },
159
          {-1.5f, 0.5f, 0.5f },
160
          {-0.5f, 1.5f, 1.5f },
161
          {-0.5f, 1.5f, 0.5f },
162
          {-0.5f, 0.5f, 1.5f },
163

  
164
          { 1.5f,-1.5f, 1.5f },
165
          { 1.5f,-1.5f, 0.5f },
166
          { 1.5f,-0.5f, 1.5f },
167
          { 1.5f,-0.5f, 0.5f },
168
          { 0.5f,-1.5f, 1.5f },
169
          { 0.5f,-1.5f, 0.5f },
170
          { 0.5f,-0.5f, 1.5f },
171

  
172
          { 1.5f, 1.5f,-1.5f },
173
          { 1.5f, 1.5f,-0.5f },
174
          { 1.5f, 0.5f,-1.5f },
175
          { 1.5f, 0.5f,-0.5f },
176
          { 0.5f, 1.5f,-1.5f },
177
          { 0.5f, 1.5f,-0.5f },
178
          { 0.5f, 0.5f,-1.5f },
179

  
180
          {-1.5f,-1.5f,-1.5f },
181
          {-1.5f,-1.5f,-0.5f },
182
          {-1.5f,-0.5f,-1.5f },
183
          {-1.5f,-0.5f,-0.5f },
184
          {-0.5f,-1.5f,-1.5f },
185
          {-0.5f,-1.5f,-0.5f },
186
          {-0.5f,-0.5f,-1.5f },
187
        };
188

  
189
  private int[][] mEdges;
146 190
  private int[] mCubitVariantMap;
147 191
  private int[] mTypeVariantMap;
148 192
  private Static4D[] mInitQuats;
......
168 212
    super(data, meshState, iconMode, (data.getNumLayers()[0]+data.getNumLayers()[1]+data.getNumLayers()[2])/3.0f, quat, move, scale, stream);
169 213
    }
170 214

  
215
///////////////////////////////////////////////////////////////////////////////////////////////////
216
// Computing scramble states of many a bandaged cubes takes way too long time and too much space.
217
// Return null here and turn to construction of scramble tables just-in-time (scrambleType=2)
218
// Unless this is AI Cube :)
219

  
220
  public int[][] getScrambleEdges()
221
    {
222
    if( mPosition==null ) mPosition = getInitData().getPos();
223

  
224
    if( mPosition==POS_5 )
225
      {
226
      if( mEdges==null )
227
        {
228
        mEdges = new int[][] { {0,0,1,0} };
229
        }
230

  
231
      return mEdges;
232
      }
233

  
234
    return null;
235
    }
236

  
237
///////////////////////////////////////////////////////////////////////////////////////////////////
238
// AI Cube is scrambled using algorithms
239

  
240
  @Override
241
  public int[][] getScrambleAlgorithms()
242
    {
243
    if( mPosition==null ) mPosition = getInitData().getPos();
244

  
245
    if( mPosition==POS_5 )
246
      {
247
      return new int[][]
248
          {
249
              { 0,0,1,1,0,1 },
250
              { 2,0,2 }
251
          };
252
      }
253
    else
254
      {
255
      return super.getScrambleAlgorithms();
256
      }
257
    }
258

  
259
///////////////////////////////////////////////////////////////////////////////////////////////////
260
// AI Cube is scrambled using algorithms
261

  
262
  @Override
263
  public int getScrambleType()
264
    {
265
    if( mPosition==null ) mPosition = getInitData().getPos();
266

  
267
    return mPosition==POS_5 ? 0 : 2;
268
    }
269

  
171 270
///////////////////////////////////////////////////////////////////////////////////////////////////
172 271

  
173 272
  private int getType(float[] pos)

Also available in: Unified diff