Revision f0450fcc
Added by Leszek Koltunski over 3 years ago
src/main/java/org/distorted/objects/Cubit.java | ||
---|---|---|
159 | 159 |
|
160 | 160 |
for(int axis=0; axis<mNumAxis; axis++) |
161 | 161 |
{ |
162 |
result += (1<<(mRotationRow[axis]+accumulativeShift));
|
|
162 |
result += (mRotationRow[axis]<<accumulativeShift);
|
|
163 | 163 |
accumulativeShift += ObjectList.MAX_OBJECT_SIZE; |
164 | 164 |
} |
165 | 165 |
|
src/main/java/org/distorted/objects/TwistyBandagedAbstract.java | ||
---|---|---|
306 | 306 |
int dimIndex = mAxisMap[posIndex][quatIndex]; |
307 | 307 |
boolean reaches = multiplier*pos[posIndex] + dim[dimIndex]*0.5f > (numLayers-1)*0.5f; |
308 | 308 |
|
309 |
int ret= reaches ? stickerIndex*NUM_FACES + face : NUM_STICKERS*NUM_FACES; |
|
310 |
|
|
311 |
if( cubit==0 ) |
|
312 |
{ |
|
313 |
android.util.Log.e("DISTORTED", "cubit="+cubit+" cubitface="+cubitface+" ret="+ret+" stickerIndex="+stickerIndex+" face="+face); |
|
314 |
android.util.Log.e("DISTORTED", "reaches="+reaches+" border="+((numLayers-1)*0.5f)+" left="+(multiplier*pos[posIndex] + dim[dimIndex]*0.5f)); |
|
315 |
android.util.Log.e("DISTORTED", "posIndex="+posIndex+" dimIndex="+dimIndex); |
|
316 |
|
|
317 |
} |
|
318 |
return ret; |
|
309 |
return reaches ? stickerIndex*NUM_FACES + face : NUM_STICKERS*NUM_FACES; |
|
319 | 310 |
} |
320 | 311 |
|
321 | 312 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyCube.java | ||
---|---|---|
215 | 215 |
|
216 | 216 |
int getFaceColor(int cubit, int cubitface, int size) |
217 | 217 |
{ |
218 |
return CUBITS[cubit].mRotationRow[cubitface/2] == (cubitface%2==0 ? size-1:0) ? cubitface : NUM_FACES;
|
|
218 |
return CUBITS[cubit].mRotationRow[cubitface/2] == (cubitface%2==0 ? 1<<(size-1):1) ? cubitface : NUM_FACES;
|
|
219 | 219 |
} |
220 | 220 |
|
221 | 221 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyObject.java | ||
---|---|---|
290 | 290 |
|
291 | 291 |
for(int i=0; i<NUM_CUTS; i++) |
292 | 292 |
{ |
293 |
if( tmp<CUTS[i] ) return i;
|
|
293 |
if( tmp<CUTS[i] ) return (1<<i);
|
|
294 | 294 |
} |
295 | 295 |
|
296 |
return NUM_CUTS;
|
|
296 |
return (1<<NUM_CUTS);
|
|
297 | 297 |
} |
298 | 298 |
|
299 | 299 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
307 | 307 |
|
308 | 308 |
private boolean belongsToRotation( int cubit, int axis, int rowBitmap) |
309 | 309 |
{ |
310 |
return ((1<<CUBITS[cubit].mRotationRow[axis]) & rowBitmap) != 0;
|
|
310 |
return (CUBITS[cubit].mRotationRow[axis] & rowBitmap) != 0;
|
|
311 | 311 |
} |
312 | 312 |
|
313 | 313 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
411 | 411 |
if ( cubit.mQuatIndex == quatIndex ) return false; |
412 | 412 |
|
413 | 413 |
int belongsToHowManyFaces = 0; |
414 |
int lastLayer = getNumLayers()-1; |
|
415 |
int row; |
|
414 |
int bitmap = (1<<(getNumLayers()-1)) + 1; |
|
416 | 415 |
|
417 | 416 |
for(int i=0; i<NUM_AXIS; i++) |
418 | 417 |
{ |
419 |
row = cubit.mRotationRow[i]; |
|
420 |
if( row==0 || row==lastLayer ) belongsToHowManyFaces++; |
|
418 |
if( (cubit.mRotationRow[i] & bitmap) != 0 ) belongsToHowManyFaces++; |
|
421 | 419 |
} |
422 | 420 |
|
423 | 421 |
switch(belongsToHowManyFaces) |
... | ... | |
432 | 430 |
Static4D rotated1 = RubikSurfaceView.rotateVectorByQuat( cubitCenter, quat1 ); |
433 | 431 |
Static4D rotated2 = RubikSurfaceView.rotateVectorByQuat( cubitCenter, quat2 ); |
434 | 432 |
|
435 |
float row1, row2;
|
|
433 |
int row1, row2;
|
|
436 | 434 |
float x1 = rotated1.get0(); |
437 | 435 |
float y1 = rotated1.get1(); |
438 | 436 |
float z1 = rotated1.get2(); |
... | ... | |
445 | 443 |
row1 = computeRow(x1,y1,z1,i); |
446 | 444 |
row2 = computeRow(x2,y2,z2,i); |
447 | 445 |
|
448 |
if( (row1==0 && row2==0) || (row1==lastLayer && row2==lastLayer) ) return false;
|
|
446 |
if( ((row1 & row2) & bitmap) != 0 ) return false;
|
|
449 | 447 |
} |
450 | 448 |
return true; |
451 | 449 |
|
src/main/java/org/distorted/objects/TwistyPyraminx.java | ||
---|---|---|
192 | 192 |
|
193 | 193 |
private int faceColor(int cubit, int axis) |
194 | 194 |
{ |
195 |
return CUBITS[cubit].mRotationRow[axis] == 0 ? axis : NUM_FACES;
|
|
195 |
return CUBITS[cubit].mRotationRow[axis] == 1 ? axis : NUM_FACES;
|
|
196 | 196 |
} |
197 | 197 |
|
198 | 198 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
Also available in: Unified diff
Change Cubit.mRotationRow[] from an index pointing at a single rotating layer to a bitmap potentially pointing at several layers.
(in preparation for bandaged objects)