Revision 00f4980d
Added by Leszek Koltunski over 2 years ago
src/main/java/org/distorted/objectlib/main/TwistyObject.java | ||
---|---|---|
1132 | 1132 |
for(int i=0; i<NUM_CUBITS; i++) CUBITS[i].savePreferences(editor); |
1133 | 1133 |
} |
1134 | 1134 |
|
1135 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
1136 |
|
|
1137 |
protected float computeRadiusCorrection(float[] sticker, int curr, int len) |
|
1138 |
{ |
|
1139 |
final float A = 0.8f; // 0<A<1 |
|
1140 |
|
|
1141 |
int prev = curr>0 ? curr-1 : len-1; |
|
1142 |
int next = curr<len-1 ? curr+1 : 0; |
|
1143 |
|
|
1144 |
float v1x = sticker[2*prev ]-sticker[2*curr ]; |
|
1145 |
float v1y = sticker[2*prev+1]-sticker[2*curr+1]; |
|
1146 |
float v2x = sticker[2*next ]-sticker[2*curr ]; |
|
1147 |
float v2y = sticker[2*next+1]-sticker[2*curr+1]; |
|
1148 |
|
|
1149 |
float len1= v1x*v1x+v1y*v1y; |
|
1150 |
float len2= v2x*v2x+v2y*v2y; |
|
1151 |
|
|
1152 |
float cos = (v1x*v2x+v1y*v2y) / ( (float)Math.sqrt(len1*len2) ); |
|
1153 |
|
|
1154 |
return 1-A*cos; |
|
1155 |
} |
|
1156 |
|
|
1135 | 1157 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
1136 | 1158 |
// some objects (currently only Kilominx) might want to change the stickers. |
1137 | 1159 |
|
src/main/java/org/distorted/objectlib/objects/TwistyBandagedAbstract.java | ||
---|---|---|
451 | 451 |
return ObjectControl.isInIconMode() ? 0.16f : 0.08f; |
452 | 452 |
} |
453 | 453 |
|
454 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
455 |
|
|
456 |
private float[][] getAngles() |
|
457 |
{ |
|
458 |
return null; |
|
459 |
} |
|
460 |
|
|
454 | 461 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
455 | 462 |
|
456 | 463 |
public ObjectSticker retSticker(int sticker) |
... | ... | |
459 | 466 |
{ |
460 | 467 |
float rad = getRadius(); |
461 | 468 |
float str = getStroke(); |
469 |
float[][] angles = getAngles(); |
|
462 | 470 |
int numStickers = mStickerCoords.length; |
463 | 471 |
mStickers = new ObjectSticker[numStickers]; |
464 | 472 |
|
... | ... | |
467 | 475 |
float scale = mStickerScales[s]; |
468 | 476 |
float radius = rad / scale; |
469 | 477 |
float stroke = str / scale; |
470 |
int len = mStickerCoords[s].length; |
|
478 |
int len = mStickerCoords[s].length/2;
|
|
471 | 479 |
float[] radii = new float[len]; |
472 |
for(int r=0; r<len; r++) radii[r] = radius; |
|
473 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
|
|
480 |
for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
|
|
481 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
|
|
474 | 482 |
} |
475 | 483 |
} |
476 | 484 |
|
src/main/java/org/distorted/objectlib/objects/TwistyCuboid.java | ||
---|---|---|
693 | 693 |
return stroke; |
694 | 694 |
} |
695 | 695 |
|
696 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
697 |
|
|
698 |
private float[][] getAngles() |
|
699 |
{ |
|
700 |
return null; |
|
701 |
} |
|
702 |
|
|
696 | 703 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
697 | 704 |
|
698 | 705 |
public ObjectSticker retSticker(int sticker) |
... | ... | |
701 | 708 |
{ |
702 | 709 |
float rad = getRadius(); |
703 | 710 |
float str = getStroke(); |
711 |
float[][] angles = getAngles(); |
|
704 | 712 |
int numStickers = mStickerCoords.length; |
705 | 713 |
mStickers = new ObjectSticker[numStickers]; |
706 | 714 |
|
... | ... | |
709 | 717 |
float scale = mStickerScales[s]; |
710 | 718 |
float radius = rad / scale; |
711 | 719 |
float stroke = str / scale; |
712 |
int len = mStickerCoords[s].length; |
|
720 |
int len = mStickerCoords[s].length/2;
|
|
713 | 721 |
float[] radii = new float[len]; |
714 |
for(int r=0; r<len; r++) radii[r] = radius; |
|
715 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
|
|
722 |
for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
|
|
723 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
|
|
716 | 724 |
} |
717 | 725 |
} |
718 | 726 |
|
src/main/java/org/distorted/objectlib/objects/TwistyDiamond.java | ||
---|---|---|
507 | 507 |
|
508 | 508 |
private float getRadius() |
509 | 509 |
{ |
510 |
return 0.06f;
|
|
510 |
return 0.08f;
|
|
511 | 511 |
} |
512 | 512 |
|
513 | 513 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
532 | 532 |
return stroke; |
533 | 533 |
} |
534 | 534 |
|
535 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
536 |
|
|
537 |
private float[][] getAngles() |
|
538 |
{ |
|
539 |
return null; |
|
540 |
} |
|
541 |
|
|
535 | 542 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
536 | 543 |
|
537 | 544 |
public ObjectSticker retSticker(int sticker) |
... | ... | |
540 | 547 |
{ |
541 | 548 |
float rad = getRadius(); |
542 | 549 |
float str = getStroke(); |
550 |
float[][] angles = getAngles(); |
|
543 | 551 |
int numStickers = mStickerCoords.length; |
544 | 552 |
mStickers = new ObjectSticker[numStickers]; |
545 | 553 |
|
... | ... | |
548 | 556 |
float scale = mStickerScales[s]; |
549 | 557 |
float radius = rad / scale; |
550 | 558 |
float stroke = str / scale; |
551 |
int len = mStickerCoords[s].length; |
|
559 |
int len = mStickerCoords[s].length/2;
|
|
552 | 560 |
float[] radii = new float[len]; |
553 |
for(int r=0; r<len; r++) radii[r] = radius; |
|
554 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
|
|
561 |
for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
|
|
562 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
|
|
555 | 563 |
} |
556 | 564 |
} |
557 | 565 |
|
src/main/java/org/distorted/objectlib/objects/TwistyDino.java | ||
---|---|---|
231 | 231 |
|
232 | 232 |
private float getRadius() |
233 | 233 |
{ |
234 |
return 0.07f;
|
|
234 |
return 0.09f;
|
|
235 | 235 |
} |
236 | 236 |
|
237 | 237 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
241 | 241 |
return ObjectControl.isInIconMode() ? 0.22f : 0.15f; |
242 | 242 |
} |
243 | 243 |
|
244 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
245 |
|
|
246 |
private float[][] getAngles() |
|
247 |
{ |
|
248 |
return null; |
|
249 |
} |
|
250 |
|
|
244 | 251 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
245 | 252 |
|
246 | 253 |
public ObjectSticker retSticker(int sticker) |
... | ... | |
249 | 256 |
{ |
250 | 257 |
float rad = getRadius(); |
251 | 258 |
float str = getStroke(); |
259 |
float[][] angles = getAngles(); |
|
252 | 260 |
int numStickers = mStickerCoords.length; |
253 | 261 |
mStickers = new ObjectSticker[numStickers]; |
254 | 262 |
|
... | ... | |
257 | 265 |
float scale = mStickerScales[s]; |
258 | 266 |
float radius = rad / scale; |
259 | 267 |
float stroke = str / scale; |
260 |
int len = mStickerCoords[s].length; |
|
268 |
int len = mStickerCoords[s].length/2;
|
|
261 | 269 |
float[] radii = new float[len]; |
262 |
for(int r=0; r<len; r++) radii[r] = radius; |
|
263 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
|
|
270 |
for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
|
|
271 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
|
|
264 | 272 |
} |
265 | 273 |
} |
266 | 274 |
|
src/main/java/org/distorted/objectlib/objects/TwistyHelicopter.java | ||
---|---|---|
423 | 423 |
|
424 | 424 |
private float getRadius() |
425 | 425 |
{ |
426 |
return 0.06f;
|
|
426 |
return 0.08f;
|
|
427 | 427 |
} |
428 | 428 |
|
429 | 429 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
433 | 433 |
return ObjectControl.isInIconMode() ? 0.20f : 0.10f; |
434 | 434 |
} |
435 | 435 |
|
436 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
437 |
|
|
438 |
private float[][] getAngles() |
|
439 |
{ |
|
440 |
return null; |
|
441 |
} |
|
442 |
|
|
436 | 443 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
437 | 444 |
|
438 | 445 |
public ObjectSticker retSticker(int sticker) |
... | ... | |
441 | 448 |
{ |
442 | 449 |
float rad = getRadius(); |
443 | 450 |
float str = getStroke(); |
451 |
float[][] angles = getAngles(); |
|
444 | 452 |
int numStickers = mStickerCoords.length; |
445 | 453 |
mStickers = new ObjectSticker[numStickers]; |
446 | 454 |
|
... | ... | |
449 | 457 |
float scale = mStickerScales[s]; |
450 | 458 |
float radius = rad / scale; |
451 | 459 |
float stroke = str / scale; |
452 |
int len = mStickerCoords[s].length; |
|
460 |
int len = mStickerCoords[s].length/2;
|
|
453 | 461 |
float[] radii = new float[len]; |
454 |
for(int r=0; r<len; r++) radii[r] = radius; |
|
455 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
|
|
462 |
for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
|
|
463 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
|
|
456 | 464 |
} |
457 | 465 |
} |
458 | 466 |
|
src/main/java/org/distorted/objectlib/objects/TwistyIvy.java | ||
---|---|---|
448 | 448 |
return face>=mStickerVariants[variant].length ? -1 : mStickerVariants[variant][face]; |
449 | 449 |
} |
450 | 450 |
|
451 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
452 |
|
|
453 |
public void adjustStickerCoords() |
|
454 |
{ |
|
455 |
mStickerCoords = new float[][] |
|
456 |
{ |
|
457 |
{ 0.29258922f, -0.5f, 0.29258922f, 0.29258922f, -0.5f, 0.29258922f }, |
|
458 |
{ -0.5f, 0.5f, 0.5f, -0.5f } |
|
459 |
}; |
|
460 |
} |
|
461 |
|
|
462 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
463 |
|
|
464 |
private float getRadius() |
|
465 |
{ |
|
466 |
return 0.19f; |
|
467 |
} |
|
468 |
|
|
469 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
470 |
|
|
471 |
private float getStroke() |
|
472 |
{ |
|
473 |
return ObjectControl.isInIconMode() ? 0.16f : 0.12f; |
|
474 |
} |
|
475 |
|
|
476 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
477 |
|
|
478 |
private float[][] getAngles() |
|
479 |
{ |
|
480 |
float D = (float)(Math.PI/4); |
|
481 |
return new float[][] { { 0,0,D },{ D,D } }; |
|
482 |
} |
|
483 |
|
|
451 | 484 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
452 | 485 |
|
486 |
public ObjectSticker retSticker(int sticker) |
|
487 |
{ |
|
488 |
if( mStickers==null ) |
|
489 |
{ |
|
490 |
float rad = getRadius(); |
|
491 |
float str = getStroke(); |
|
492 |
float[][] angles = getAngles(); |
|
493 |
int numStickers = mStickerCoords.length; |
|
494 |
mStickers = new ObjectSticker[numStickers]; |
|
495 |
|
|
496 |
for(int s=0; s<numStickers; s++) |
|
497 |
{ |
|
498 |
float scale = mStickerScales[s]; |
|
499 |
float radius = rad / scale; |
|
500 |
float stroke = str / scale; |
|
501 |
int len = mStickerCoords[s].length/2; |
|
502 |
float[] radii = new float[len]; |
|
503 |
for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len); |
|
504 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke); |
|
505 |
} |
|
506 |
} |
|
507 |
|
|
508 |
return mStickers[sticker]; |
|
509 |
} |
|
510 |
|
|
511 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
512 |
/* |
|
453 | 513 |
public ObjectSticker retSticker(int sticker) |
454 | 514 |
{ |
455 | 515 |
if( mStickers==null ) |
... | ... | |
473 | 533 |
|
474 | 534 |
return mStickers[sticker]; |
475 | 535 |
} |
476 |
|
|
536 |
*/ |
|
477 | 537 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
478 | 538 |
// PUBLIC API |
479 | 539 |
|
src/main/java/org/distorted/objectlib/objects/TwistyJing.java | ||
---|---|---|
392 | 392 |
return face>=mStickerVariants[variant].length ? -1 : mStickerVariants[variant][face]; |
393 | 393 |
} |
394 | 394 |
|
395 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
396 |
|
|
397 |
private float getRadius() |
|
398 |
{ |
|
399 |
return 0.04f; |
|
400 |
} |
|
401 |
|
|
402 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
403 |
|
|
404 |
private float getStroke() |
|
405 |
{ |
|
406 |
return ObjectControl.isInIconMode() ? 0.08f : 0.04f; |
|
407 |
} |
|
408 |
|
|
409 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
410 |
|
|
411 |
private float[][] getAngles() |
|
412 |
{ |
|
413 |
return null; |
|
414 |
} |
|
415 |
|
|
395 | 416 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
396 | 417 |
|
397 | 418 |
public ObjectSticker retSticker(int sticker) |
398 | 419 |
{ |
399 | 420 |
if( mStickers==null ) |
400 | 421 |
{ |
422 |
float rad = getRadius(); |
|
423 |
float str = getStroke(); |
|
424 |
float[][] angles = getAngles(); |
|
401 | 425 |
int numStickers = mStickerCoords.length; |
402 | 426 |
mStickers = new ObjectSticker[numStickers]; |
403 | 427 |
|
404 | 428 |
for(int s=0; s<numStickers; s++) |
405 | 429 |
{ |
406 | 430 |
float scale = mStickerScales[s]; |
407 |
float radius = 0.04f / scale;
|
|
408 |
float stroke = 0.04f / scale;
|
|
409 |
int len = mStickerCoords[s].length; |
|
431 |
float radius = rad / scale;
|
|
432 |
float stroke = str / scale;
|
|
433 |
int len = mStickerCoords[s].length/2;
|
|
410 | 434 |
float[] radii = new float[len]; |
411 |
for(int r=0; r<len; r++) radii[r] = radius; |
|
412 |
if( ObjectControl.isInIconMode() ) stroke*=2.0f; |
|
413 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke); |
|
435 |
for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len); |
|
436 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke); |
|
414 | 437 |
} |
415 | 438 |
} |
416 | 439 |
|
src/main/java/org/distorted/objectlib/objects/TwistyKilominx.java | ||
---|---|---|
675 | 675 |
return stroke; |
676 | 676 |
} |
677 | 677 |
|
678 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
679 |
|
|
680 |
private float[][] getAngles() |
|
681 |
{ |
|
682 |
return null; |
|
683 |
} |
|
684 |
|
|
678 | 685 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
679 | 686 |
|
680 | 687 |
public ObjectSticker retSticker(int sticker) |
... | ... | |
683 | 690 |
{ |
684 | 691 |
float rad = getRadius(); |
685 | 692 |
float str = getStroke(); |
693 |
float[][] angles = getAngles(); |
|
686 | 694 |
int numStickers = mStickerCoords.length; |
687 | 695 |
mStickers = new ObjectSticker[numStickers]; |
688 | 696 |
|
... | ... | |
691 | 699 |
float scale = mStickerScales[s]; |
692 | 700 |
float radius = rad / scale; |
693 | 701 |
float stroke = str / scale; |
694 |
int len = mStickerCoords[s].length; |
|
702 |
int len = mStickerCoords[s].length/2;
|
|
695 | 703 |
float[] radii = new float[len]; |
696 |
for(int r=0; r<len; r++) radii[r] = radius; |
|
697 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
|
|
704 |
for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
|
|
705 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
|
|
698 | 706 |
} |
699 | 707 |
} |
700 | 708 |
|
src/main/java/org/distorted/objectlib/objects/TwistyMegaminx.java | ||
---|---|---|
559 | 559 |
return stroke; |
560 | 560 |
} |
561 | 561 |
|
562 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
563 |
|
|
564 |
private float[][] getAngles() |
|
565 |
{ |
|
566 |
return null; |
|
567 |
} |
|
568 |
|
|
562 | 569 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
563 | 570 |
|
564 | 571 |
public ObjectSticker retSticker(int sticker) |
... | ... | |
567 | 574 |
{ |
568 | 575 |
float rad = getRadius(); |
569 | 576 |
float str = getStroke(); |
577 |
float[][] angles = getAngles(); |
|
570 | 578 |
int numStickers = mStickerCoords.length; |
571 | 579 |
mStickers = new ObjectSticker[numStickers]; |
572 | 580 |
|
... | ... | |
575 | 583 |
float scale = mStickerScales[s]; |
576 | 584 |
float radius = rad / scale; |
577 | 585 |
float stroke = str / scale; |
578 |
int len = mStickerCoords[s].length; |
|
586 |
int len = mStickerCoords[s].length/2;
|
|
579 | 587 |
float[] radii = new float[len]; |
580 |
for(int r=0; r<len; r++) radii[r] = radius; |
|
581 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
|
|
588 |
for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
|
|
589 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
|
|
582 | 590 |
} |
583 | 591 |
} |
584 | 592 |
|
src/main/java/org/distorted/objectlib/objects/TwistyMirror.java | ||
---|---|---|
464 | 464 |
return stroke; |
465 | 465 |
} |
466 | 466 |
|
467 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
468 |
|
|
469 |
private float[][] getAngles() |
|
470 |
{ |
|
471 |
return null; |
|
472 |
} |
|
473 |
|
|
467 | 474 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
468 | 475 |
|
469 | 476 |
public ObjectSticker retSticker(int sticker) |
... | ... | |
472 | 479 |
{ |
473 | 480 |
float rad = getRadius(); |
474 | 481 |
float str = getStroke(); |
482 |
float[][] angles = getAngles(); |
|
475 | 483 |
int numStickers = mStickerCoords.length; |
476 | 484 |
mStickers = new ObjectSticker[numStickers]; |
477 | 485 |
|
... | ... | |
480 | 488 |
float scale = mStickerScales[s]; |
481 | 489 |
float radius = rad / scale; |
482 | 490 |
float stroke = str / scale; |
483 |
int len = mStickerCoords[s].length; |
|
491 |
int len = mStickerCoords[s].length/2;
|
|
484 | 492 |
float[] radii = new float[len]; |
485 |
for(int r=0; r<len; r++) radii[r] = radius; |
|
486 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
|
|
493 |
for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
|
|
494 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
|
|
487 | 495 |
} |
488 | 496 |
} |
489 | 497 |
|
src/main/java/org/distorted/objectlib/objects/TwistyPyraminx.java | ||
---|---|---|
384 | 384 |
|
385 | 385 |
private float getRadius() |
386 | 386 |
{ |
387 |
return 0.06f;
|
|
387 |
return 0.08f;
|
|
388 | 388 |
} |
389 | 389 |
|
390 | 390 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
409 | 409 |
return stroke; |
410 | 410 |
} |
411 | 411 |
|
412 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
413 |
|
|
414 |
private float[][] getAngles() |
|
415 |
{ |
|
416 |
return null; |
|
417 |
} |
|
418 |
|
|
412 | 419 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
413 | 420 |
|
414 | 421 |
public ObjectSticker retSticker(int sticker) |
... | ... | |
417 | 424 |
{ |
418 | 425 |
float rad = getRadius(); |
419 | 426 |
float str = getStroke(); |
427 |
float[][] angles = getAngles(); |
|
420 | 428 |
int numStickers = mStickerCoords.length; |
421 | 429 |
mStickers = new ObjectSticker[numStickers]; |
422 | 430 |
|
... | ... | |
425 | 433 |
float scale = mStickerScales[s]; |
426 | 434 |
float radius = rad / scale; |
427 | 435 |
float stroke = str / scale; |
428 |
int len = mStickerCoords[s].length; |
|
436 |
int len = mStickerCoords[s].length/2;
|
|
429 | 437 |
float[] radii = new float[len]; |
430 |
for(int r=0; r<len; r++) radii[r] = radius; |
|
431 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
|
|
438 |
for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
|
|
439 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
|
|
432 | 440 |
} |
433 | 441 |
} |
434 | 442 |
|
src/main/java/org/distorted/objectlib/objects/TwistyRedi.java | ||
---|---|---|
416 | 416 |
return ObjectControl.isInIconMode() ? 0.20f : 0.09f; |
417 | 417 |
} |
418 | 418 |
|
419 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
420 |
|
|
421 |
private float[][] getAngles() |
|
422 |
{ |
|
423 |
return null; |
|
424 |
} |
|
425 |
|
|
419 | 426 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
420 | 427 |
|
421 | 428 |
public ObjectSticker retSticker(int sticker) |
... | ... | |
424 | 431 |
{ |
425 | 432 |
float rad = getRadius(); |
426 | 433 |
float str = getStroke(); |
434 |
float[][] angles = getAngles(); |
|
427 | 435 |
int numStickers = mStickerCoords.length; |
428 | 436 |
mStickers = new ObjectSticker[numStickers]; |
429 | 437 |
|
... | ... | |
432 | 440 |
float scale = mStickerScales[s]; |
433 | 441 |
float radius = rad / scale; |
434 | 442 |
float stroke = str / scale; |
435 |
int len = mStickerCoords[s].length; |
|
443 |
int len = mStickerCoords[s].length/2;
|
|
436 | 444 |
float[] radii = new float[len]; |
437 |
for(int r=0; r<len; r++) radii[r] = radius; |
|
438 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],null,radii,stroke);
|
|
445 |
for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len);
|
|
446 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke);
|
|
439 | 447 |
} |
440 | 448 |
} |
441 | 449 |
|
src/main/java/org/distorted/objectlib/objects/TwistyRex.java | ||
---|---|---|
369 | 369 |
return cubit<24 ? 0 : (cubit<30?1:2); |
370 | 370 |
} |
371 | 371 |
|
372 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
373 |
|
|
374 |
public int getVariantFaceColor(int variant, int face, int[] numLayers) |
|
375 |
{ |
|
376 |
return variant; |
|
377 |
} |
|
378 |
|
|
379 | 372 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
380 | 373 |
|
381 | 374 |
public int getCubitFaceColor(int cubit, int face, int[] numLayers) |
... | ... | |
436 | 429 |
|
437 | 430 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
438 | 431 |
|
439 |
public ObjectSticker retSticker(int sticker)
|
|
432 |
public int getVariantFaceColor(int variant, int face, int[] numLayers)
|
|
440 | 433 |
{ |
441 |
if( mStickers==null ) |
|
442 |
{ |
|
443 |
float[][] STICKERS = new float[][] |
|
434 |
return face>=mStickerVariants[variant].length ? -1 : mStickerVariants[variant][face]; |
|
435 |
} |
|
436 |
|
|
437 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
438 |
|
|
439 |
public void adjustStickerCoords() |
|
440 |
{ |
|
441 |
mStickerCoords = new float[][] |
|
444 | 442 |
{ |
445 | 443 |
{ -0.5f, 0.1428f, -0.1428f, 0.5f, 0.35f, -0.35f }, |
446 | 444 |
{ -0.5f, 0.0f, 0.0f, -0.5f, 0.5f, 0.0f, 0.0f, 0.5f }, |
447 |
{ -0.525f, 0.105f, 0.525f, 0.105f, 0.000f, -0.210f }
|
|
445 |
{ -0.525f, 0.105f, 0.525f, 0.105f, 0.000f, -0.200f }
|
|
448 | 446 |
}; |
447 |
} |
|
449 | 448 |
|
450 |
final float F = (float)(Math.PI/20); |
|
451 |
final float R1= 0.02f; |
|
452 |
final float R2= 0.09f; |
|
453 |
final float R3= 0.06f; |
|
454 |
final float[][] angles = { { -F/2,F,F },null,{ F/10,-F,-F } }; |
|
455 |
final float[][] radii = { {R1,R1,R1},{R2,R2,R2,R2},{0,0,R3} }; |
|
456 |
final float[] strokes = { 0.06f, 0.07f, 0.05f }; |
|
449 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
457 | 450 |
|
458 |
if( ObjectControl.isInIconMode() ) |
|
459 |
{ |
|
460 |
float mult = 1.5f; |
|
461 |
strokes[0]*=mult; |
|
462 |
strokes[1]*=mult; |
|
463 |
strokes[2]*=mult; |
|
464 |
} |
|
451 |
private float getRadius() |
|
452 |
{ |
|
453 |
return 0.09f; |
|
454 |
} |
|
455 |
|
|
456 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
457 |
|
|
458 |
private float getStroke() |
|
459 |
{ |
|
460 |
return ObjectControl.isInIconMode() ? 0.20f : 0.09f; |
|
461 |
} |
|
462 |
|
|
463 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
465 | 464 |
|
466 |
mStickers = new ObjectSticker[STICKERS.length]; |
|
465 |
private float[][] getAngles() |
|
466 |
{ |
|
467 |
final float F = (float)(Math.PI/20); |
|
468 |
return new float[][] { { -F/2,F,F },null,{ F/10,-F,-F } }; |
|
469 |
} |
|
470 |
|
|
471 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
472 |
|
|
473 |
public ObjectSticker retSticker(int sticker) |
|
474 |
{ |
|
475 |
if( mStickers==null ) |
|
476 |
{ |
|
477 |
float rad = getRadius(); |
|
478 |
float str = getStroke(); |
|
479 |
float[][] angles = getAngles(); |
|
480 |
int numStickers = mStickerCoords.length; |
|
481 |
mStickers = new ObjectSticker[numStickers]; |
|
467 | 482 |
|
468 |
for(int s=0; s<STICKERS.length; s++)
|
|
483 |
for(int s=0; s<numStickers; s++)
|
|
469 | 484 |
{ |
470 |
mStickers[s] = new ObjectSticker(STICKERS[s],angles[s],radii[s],strokes[s]); |
|
485 |
float scale = mStickerScales[s]; |
|
486 |
float radius = rad / scale; |
|
487 |
float stroke = str / scale; |
|
488 |
int len = mStickerCoords[s].length/2; |
|
489 |
float[] radii = new float[len]; |
|
490 |
for(int r=0; r<len; r++) radii[r] = radius*computeRadiusCorrection(mStickerCoords[s],r,len); |
|
491 |
mStickers[s] = new ObjectSticker(mStickerCoords[s],angles==null ? null : angles[s],radii,stroke); |
|
471 | 492 |
} |
472 | 493 |
} |
473 | 494 |
|
Also available in: Unified diff
Progress standarising stickering - adjust sticker radii based on cos of the angle at the sticker vertex.