Revision 053ffa02
Added by Leszek Koltunski over 2 years ago
src/main/java/org/distorted/objectlib/objects/TwistyPyraminx.java | ||
---|---|---|
287 | 287 |
return (numLayers-1)*numLayers*(numLayers+1)/6; |
288 | 288 |
} |
289 | 289 |
|
290 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
291 |
|
|
292 |
private int faceColor(int cubit, int face) |
|
293 |
{ |
|
294 |
return CUBITS[cubit].getRotRow(face) == 1 ? face : -1; |
|
295 |
} |
|
296 |
|
|
297 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
298 |
|
|
299 |
public int getVariantFaceColor(int variant, int face, int[] numLayers) |
|
300 |
{ |
|
301 |
return 0; |
|
302 |
} |
|
303 |
|
|
304 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
305 |
|
|
306 |
public int getCubitFaceColor(int cubit, int face, int[] numLayers) |
|
307 |
{ |
|
308 |
if( cubit < getNumOctahedrons(numLayers[0]) ) |
|
309 |
{ |
|
310 |
switch( face ) |
|
311 |
{ |
|
312 |
case 0: return faceColor(cubit,0); |
|
313 |
case 2: return faceColor(cubit,1); |
|
314 |
case 5: return faceColor(cubit,3); |
|
315 |
case 7: return faceColor(cubit,2); |
|
316 |
default:return -1; |
|
317 |
} |
|
318 |
} |
|
319 |
else |
|
320 |
{ |
|
321 |
return face<NUM_FACE_COLORS ? faceColor(cubit,face) : -1; |
|
322 |
} |
|
323 |
} |
|
324 |
|
|
325 | 290 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
326 | 291 |
|
327 | 292 |
public ObjectShape getObjectShape(int variant) |
... | ... | |
382 | 347 |
|
383 | 348 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
384 | 349 |
|
385 |
public ObjectSticker retSticker(int sticker)
|
|
350 |
private int faceColor(int cubit, int face)
|
|
386 | 351 |
{ |
387 |
if( mStickers==null ) |
|
388 |
{ |
|
389 |
float[][] STICKERS = new float[][] { { -0.4330127f, -0.25f, 0.4330127f, -0.25f, 0.0f, 0.5f } }; |
|
390 |
final float radius = 0.06f; |
|
391 |
final float[] radii= {radius,radius,radius}; |
|
392 |
mStickers = new ObjectSticker[STICKERS.length]; |
|
352 |
return CUBITS[cubit].getRotRow(face) == 1 ? face : -1; |
|
353 |
} |
|
393 | 354 |
|
394 |
float stroke = 0.08f;
|
|
355 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
395 | 356 |
|
396 |
if( ObjectControl.isInIconMode() ) |
|
357 |
public int getCubitFaceColor(int cubit, int face, int[] numLayers) |
|
358 |
{ |
|
359 |
if( cubit < getNumOctahedrons(numLayers[0]) ) |
|
360 |
{ |
|
361 |
switch( face ) |
|
397 | 362 |
{ |
398 |
int[] numLayers = getNumLayers(); |
|
363 |
case 0: return faceColor(cubit,0); |
|
364 |
case 2: return faceColor(cubit,1); |
|
365 |
case 5: return faceColor(cubit,3); |
|
366 |
case 7: return faceColor(cubit,2); |
|
367 |
default:return -1; |
|
368 |
} |
|
369 |
} |
|
370 |
else |
|
371 |
{ |
|
372 |
return face<NUM_FACE_COLORS ? faceColor(cubit,face) : -1; |
|
373 |
} |
|
374 |
} |
|
399 | 375 |
|
400 |
switch(numLayers[0]) |
|
401 |
{ |
|
402 |
case 2: stroke*=1.0f; break; |
|
403 |
case 3: stroke*=1.4f; break; |
|
404 |
case 4: stroke*=1.7f; break; |
|
405 |
default:stroke*=1.9f; break; |
|
406 |
} |
|
376 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
377 |
|
|
378 |
public int getVariantFaceColor(int variant, int face, int[] numLayers) |
|
379 |
{ |
|
380 |
return face>=mStickerVariants[variant].length ? -1 : mStickerVariants[variant][face]; |
|
381 |
} |
|
382 |
|
|
383 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
384 |
|
|
385 |
private float getRadius() |
|
386 |
{ |
|
387 |
return 0.06f; |
|
388 |
} |
|
389 |
|
|
390 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
391 |
|
|
392 |
private float getStroke() |
|
393 |
{ |
|
394 |
float stroke = 0.08f; |
|
395 |
|
|
396 |
if( ObjectControl.isInIconMode() ) |
|
397 |
{ |
|
398 |
int[] numLayers = getNumLayers(); |
|
399 |
|
|
400 |
switch(numLayers[0]) |
|
401 |
{ |
|
402 |
case 2: stroke*=1.0f; break; |
|
403 |
case 3: stroke*=1.4f; break; |
|
404 |
case 4: stroke*=1.7f; break; |
|
405 |
default:stroke*=1.9f; break; |
|
407 | 406 |
} |
407 |
} |
|
408 | 408 |
|
409 |
mStickers[0] = new ObjectSticker(STICKERS[0],null,radii,stroke); |
|
409 |
return stroke; |
|
410 |
} |
|
411 |
|
|
412 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
413 |
|
|
414 |
public ObjectSticker retSticker(int sticker) |
|
415 |
{ |
|
416 |
if( mStickers==null ) |
|
417 |
{ |
|
418 |
float rad = getRadius(); |
|
419 |
float str = getStroke(); |
|
420 |
int numStickers = mStickerCoords.length; |
|
421 |
mStickers = new ObjectSticker[numStickers]; |
|
422 |
|
|
423 |
for(int s=0; s<numStickers; s++) |
|
424 |
{ |
|
425 |
float scale = mStickerScales[s]; |
|
426 |
float radius = rad / scale; |
|
427 |
float stroke = str / scale; |
|
428 |
int len = mStickerCoords[s].length; |
|
429 |
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); |
|
432 |
} |
|
410 | 433 |
} |
411 | 434 |
|
412 | 435 |
return mStickers[sticker]; |
src/main/java/org/distorted/objectlib/objects/TwistyRedi.java | ||
---|---|---|
360 | 360 |
return cubit<8 ? 0:1; |
361 | 361 |
} |
362 | 362 |
|
363 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
364 |
|
|
365 |
public int getVariantFaceColor(int variant, int face, int[] numLayers) |
|
366 |
{ |
|
367 |
return variant; |
|
368 |
} |
|
369 |
|
|
370 | 363 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
371 | 364 |
|
372 | 365 |
public int getCubitFaceColor(int cubit, int face, int[] numLayers) |
... | ... | |
404 | 397 |
|
405 | 398 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
406 | 399 |
|
407 |
public ObjectSticker retSticker(int sticker)
|
|
400 |
public int getVariantFaceColor(int variant, int face, int[] numLayers)
|
|
408 | 401 |
{ |
409 |
if( mStickers==null ) |
|
410 |
{ |
|
411 |
float[][] STICKERS = new float[][] |
|
412 |
{ |
|
413 |
{ -0.5f, -0.5f, 0.5f, -0.5f, 0.5f, 0.5f, -0.5f, 0.5f }, |
|
414 |
{ -0.3125f, 0.4375f, -0.3125f, -0.1875f, 0.0f, -0.5f, 0.3125f, -0.1875f, 0.3125f, 0.4375f } |
|
415 |
}; |
|
402 |
return face>=mStickerVariants[variant].length ? -1 : mStickerVariants[variant][face]; |
|
403 |
} |
|
416 | 404 |
|
417 |
final float R0 = 0.09f; |
|
418 |
final float R1 = 0.06f; |
|
419 |
final float[][] radii = { {R0,R0,R0,R0},{R1,R1,R1,R1,R1} }; |
|
420 |
float[] strokes = { 0.09f,0.06f }; |
|
405 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
421 | 406 |
|
422 |
if( ObjectControl.isInIconMode() ) |
|
423 |
{ |
|
424 |
float mult = 2.2f; |
|
425 |
strokes[0]*=mult; |
|
426 |
strokes[1]*=mult; |
|
427 |
} |
|
407 |
private float getRadius() |
|
408 |
{ |
|
409 |
return 0.09f; |
|
410 |
} |
|
411 |
|
|
412 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
413 |
|
|
414 |
private float getStroke() |
|
415 |
{ |
|
416 |
return ObjectControl.isInIconMode() ? 0.20f : 0.09f; |
|
417 |
} |
|
418 |
|
|
419 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
428 | 420 |
|
429 |
mStickers = new ObjectSticker[STICKERS.length]; |
|
421 |
public ObjectSticker retSticker(int sticker) |
|
422 |
{ |
|
423 |
if( mStickers==null ) |
|
424 |
{ |
|
425 |
float rad = getRadius(); |
|
426 |
float str = getStroke(); |
|
427 |
int numStickers = mStickerCoords.length; |
|
428 |
mStickers = new ObjectSticker[numStickers]; |
|
430 | 429 |
|
431 |
for(int s=0; s<STICKERS.length; s++)
|
|
430 |
for(int s=0; s<numStickers; s++)
|
|
432 | 431 |
{ |
433 |
mStickers[s] = new ObjectSticker(STICKERS[s],null,radii[s],strokes[s]); |
|
432 |
float scale = mStickerScales[s]; |
|
433 |
float radius = rad / scale; |
|
434 |
float stroke = str / scale; |
|
435 |
int len = mStickerCoords[s].length; |
|
436 |
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); |
|
434 | 439 |
} |
435 | 440 |
} |
436 | 441 |
|
Also available in: Unified diff
Progress standarising stickering.