Revision ad73edd5
Added by Leszek Koltunski over 5 years ago
| src/main/java/org/distorted/objects/RubikObject.java | ||
|---|---|---|
| 161 | 161 |
setProjection(fov, 0.1f); |
| 162 | 162 |
} |
| 163 | 163 |
|
| 164 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 165 |
|
|
| 166 |
private void textureCubitMesh(MeshBase mesh, int cubit) |
|
| 167 |
{
|
|
| 168 |
boolean belongs; |
|
| 169 |
final Static4D[] maps = new Static4D[NUM_FACES]; |
|
| 170 |
final float ratio = 1.0f/(NUM_FACES+1); |
|
| 171 |
|
|
| 172 |
if( 2*ROTATION_AXIS.length == NUM_FACES ) // i.e. there are faces on both ends of the axis (cube) |
|
| 173 |
{
|
|
| 174 |
for(int i=0; i<NUM_FACES; i++) |
|
| 175 |
{
|
|
| 176 |
belongs = isOnFace(cubit, i/2, i%2==0 ? mSize-1:0 ); |
|
| 177 |
maps[i] = new Static4D( (belongs?i:NUM_FACES)*ratio, 0.0f, ratio, 1.0f); |
|
| 178 |
} |
|
| 179 |
} |
|
| 180 |
else if( ROTATION_AXIS.length == NUM_FACES ) // just a single face on the right end of an axis (pyraminx) |
|
| 181 |
{
|
|
| 182 |
for(int i=0; i<NUM_FACES; i++) |
|
| 183 |
{
|
|
| 184 |
belongs = isOnFace(cubit, i, 0 ); |
|
| 185 |
maps[i] = new Static4D( (belongs?i:NUM_FACES)*ratio, 0.0f, ratio, 1.0f); |
|
| 186 |
} |
|
| 187 |
} |
|
| 188 |
|
|
| 189 |
mesh.setTextureMap(maps,NUM_FACES*cubit); |
|
| 190 |
} |
|
| 191 |
|
|
| 192 | 164 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 193 | 165 |
// Cast centers of all Cubits on the first rotation Axis and compute the leftmost and rightmost |
| 194 | 166 |
// one. From there compute the 'start' (i.e. the leftmost) and 'step' (i.e. distance between two |
| ... | ... | |
| 439 | 411 |
|
| 440 | 412 |
public void resetAllTextureMaps() |
| 441 | 413 |
{
|
| 442 |
for(int i=0; i<NUM_CUBITS; i++) |
|
| 414 |
boolean belongs; |
|
| 415 |
final float ratio = 1.0f/(NUM_FACES+1); |
|
| 416 |
|
|
| 417 |
for(int cubit=0; cubit<NUM_CUBITS; cubit++) |
|
| 443 | 418 |
{
|
| 444 |
textureCubitMesh( mMesh , i ); |
|
| 419 |
final Static4D[] maps = new Static4D[NUM_FACES]; |
|
| 420 |
|
|
| 421 |
if( 2*ROTATION_AXIS.length == NUM_FACES ) // i.e. there are faces on both ends of the axis (cube) |
|
| 422 |
{
|
|
| 423 |
for(int i=0; i<NUM_FACES; i++) |
|
| 424 |
{
|
|
| 425 |
belongs = isOnFace(cubit, i/2, i%2==0 ? mSize-1:0 ); |
|
| 426 |
maps[i] = new Static4D( (belongs?i:NUM_FACES)*ratio, 0.0f, ratio, 1.0f); |
|
| 427 |
} |
|
| 428 |
} |
|
| 429 |
else if( ROTATION_AXIS.length == NUM_FACES ) // just a single face on the right end of an axis (pyraminx) |
|
| 430 |
{
|
|
| 431 |
for(int i=0; i<NUM_FACES; i++) |
|
| 432 |
{
|
|
| 433 |
belongs = isOnFace(cubit, i, 0 ); |
|
| 434 |
maps[i] = new Static4D( (belongs?i:NUM_FACES)*ratio, 0.0f, ratio, 1.0f); |
|
| 435 |
} |
|
| 436 |
} |
|
| 437 |
|
|
| 438 |
mMesh.setTextureMap(maps,NUM_FACES*cubit); |
|
| 445 | 439 |
} |
| 446 | 440 |
} |
| 447 | 441 |
|
Also available in: Unified diff
Minor speedup