Revision 9b1fe915
Added by Leszek Koltunski over 2 years ago
src/main/java/org/distorted/objectlib/objects/TwistyMegaminx.java | ||
---|---|---|
450 | 450 |
return getNumCubitVariants(numLayers)-1; |
451 | 451 |
} |
452 | 452 |
|
453 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
454 |
|
|
455 |
int getCornerColor(int cubit, int cubitface, int numLayers, int numCubitsPerCorner) |
|
456 |
{ |
|
457 |
if( mCornerFaceMap==null ) initializeCornerFaceMap(); |
|
458 |
if( cubitface<0 || cubitface>2 ) return -1; |
|
459 |
|
|
460 |
int part = cubit % numCubitsPerCorner; |
|
461 |
int corner= cubit / numCubitsPerCorner; |
|
462 |
|
|
463 |
if( part==0 ) |
|
464 |
{ |
|
465 |
return mCornerFaceMap[corner][cubitface]; |
|
466 |
} |
|
467 |
else |
|
468 |
{ |
|
469 |
int N = (numCubitsPerCorner-1)/3; |
|
470 |
int block = (part-1) % N; |
|
471 |
int index = (part-1) / N; |
|
472 |
|
|
473 |
if( block< (numLayers-3)/2 ) |
|
474 |
{ |
|
475 |
switch(index) |
|
476 |
{ |
|
477 |
case 0: return cubitface==1 ? -1 : mCornerFaceMap[corner][cubitface]; |
|
478 |
case 1: return cubitface==0 ? -1 : mCornerFaceMap[corner][cubitface]; |
|
479 |
case 2: return cubitface==2 ? -1 : mCornerFaceMap[corner][cubitface]; |
|
480 |
} |
|
481 |
} |
|
482 |
else |
|
483 |
{ |
|
484 |
switch(index) |
|
485 |
{ |
|
486 |
case 0: return cubitface==0 ? mCornerFaceMap[corner][cubitface] : -1; |
|
487 |
case 1: return cubitface==2 ? mCornerFaceMap[corner][cubitface] : -1; |
|
488 |
case 2: return cubitface==1 ? mCornerFaceMap[corner][cubitface] : -1; |
|
489 |
} |
|
490 |
} |
|
491 |
} |
|
492 |
|
|
493 |
return NUM_TEXTURES; |
|
494 |
} |
|
495 |
|
|
496 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
497 |
|
|
498 |
int getEdgeColor(int edge, int cubitface, int numCubitsPerEdge) |
|
499 |
{ |
|
500 |
if( cubitface<0 || cubitface>1 ) return -1; |
|
501 |
|
|
502 |
int part = edge % numCubitsPerEdge; |
|
503 |
int variant = edge / numCubitsPerEdge; |
|
504 |
if( mEdgeMap==null ) initializeEdgeMap(); |
|
505 |
|
|
506 |
return (part==0 || cubitface==((part+1)%2)) ? mEdgeMap[variant][cubitface+2] : -1; |
|
507 |
} |
|
508 |
|
|
509 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
510 |
|
|
511 |
int getCenterColor(int center, int cubitface) |
|
512 |
{ |
|
513 |
return cubitface>0 ? -1 : center; |
|
514 |
} |
|
515 |
|
|
516 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
517 |
|
|
518 |
public int getCubitFaceColor(int cubit, int face, int[] numLayers) |
|
519 |
{ |
|
520 |
int numL = numLayers[0]; |
|
521 |
int numCubitsPerCorner = numCubitsPerCorner(numL); |
|
522 |
int numCubitsPerEdge = numCubitsPerEdge(numL); |
|
523 |
|
|
524 |
if( cubit < NUM_CORNERS*numCubitsPerCorner ) |
|
525 |
{ |
|
526 |
return getCornerColor(cubit,face,numL,numCubitsPerCorner); |
|
527 |
} |
|
528 |
else if( cubit<NUM_CORNERS*numCubitsPerCorner + NUM_EDGES*numCubitsPerEdge ) |
|
529 |
{ |
|
530 |
int edge = cubit - NUM_CORNERS*numCubitsPerCorner; |
|
531 |
return getEdgeColor(edge,face,numCubitsPerEdge); |
|
532 |
} |
|
533 |
else |
|
534 |
{ |
|
535 |
int center = cubit-NUM_CORNERS*numCubitsPerCorner-NUM_EDGES*numCubitsPerEdge; |
|
536 |
return getCenterColor( center, face ); |
|
537 |
} |
|
538 |
} |
|
539 |
|
|
540 | 453 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
541 | 454 |
|
542 | 455 |
public float getStickerRadius() |
Also available in: Unified diff
Finally remove the 'getCubitFaceColor()' API