16 |
16 |
import org.distorted.library.type.Static3D;
|
17 |
17 |
import org.distorted.library.type.Static4D;
|
18 |
18 |
import org.distorted.objectlib.helpers.FactoryCubit;
|
19 |
|
import org.distorted.objectlib.helpers.FactorySticker;
|
20 |
19 |
import org.distorted.objectlib.helpers.ObjectFaceShape;
|
21 |
20 |
import org.distorted.objectlib.helpers.ObjectShape;
|
22 |
21 |
import org.distorted.objectlib.helpers.ObjectSignature;
|
... | ... | |
59 |
58 |
public TwistyCoinHexahedron(int meshState, int iconMode, Static4D quat, Static3D move, float scale, InitData data, InitAssets asset)
|
60 |
59 |
{
|
61 |
60 |
super(meshState, iconMode, data.getNumLayers()[0], quat, move, scale, data, asset);
|
62 |
|
|
63 |
|
|
64 |
61 |
}
|
65 |
62 |
|
66 |
63 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
... | ... | |
145 |
142 |
if( mPosition==null )
|
146 |
143 |
{
|
147 |
144 |
final float A = 1.5f-C;
|
|
145 |
final float B = 1.52f;
|
148 |
146 |
final float E = 0.75f*D;
|
149 |
147 |
|
150 |
148 |
mPosition = new float[][]
|
... | ... | |
158 |
156 |
{-A,-A, A},
|
159 |
157 |
{-A,-A,-A},
|
160 |
158 |
|
161 |
|
{ 0.00f, 0.00f, 1.50f},
|
162 |
|
{ 0.00f, 0.00f,-1.50f},
|
163 |
|
{ 0.00f, 1.50f, 0.00f},
|
164 |
|
{ 0.00f,-1.50f, 0.00f},
|
165 |
|
{ 1.50f, 0.00f, 0.00f},
|
166 |
|
{-1.50f, 0.00f, 0.00f},
|
167 |
|
|
168 |
|
{ E, E, 1.50f},
|
169 |
|
{ E, -E, 1.50f},
|
170 |
|
{ -E, E, 1.50f},
|
171 |
|
{ -E, -E, 1.50f},
|
172 |
|
{ E, E,-1.50f},
|
173 |
|
{ E, -E,-1.50f},
|
174 |
|
{ -E, E,-1.50f},
|
175 |
|
{ -E, -E,-1.50f},
|
176 |
|
{ E, 1.50f, E},
|
177 |
|
{ E, 1.50f, -E},
|
178 |
|
{ -E, 1.50f, E},
|
179 |
|
{ -E, 1.50f, -E},
|
180 |
|
{ E,-1.50f, E},
|
181 |
|
{ E,-1.50f, -E},
|
182 |
|
{ -E,-1.50f, E},
|
183 |
|
{ -E,-1.50f, -E},
|
184 |
|
{ 1.50f, E, E},
|
185 |
|
{ 1.50f, E, -E},
|
186 |
|
{ 1.50f, -E, E},
|
187 |
|
{ 1.50f, -E, -E},
|
188 |
|
{-1.50f, E, E},
|
189 |
|
{-1.50f, E, -E},
|
190 |
|
{-1.50f, -E, E},
|
191 |
|
{-1.50f, -E, -E},
|
|
159 |
{ 0, 0, B },
|
|
160 |
{ 0, 0,-B },
|
|
161 |
{ 0, B, 0 },
|
|
162 |
{ 0,-B, 0 },
|
|
163 |
{ B, 0, 0 },
|
|
164 |
{-B, 0, 0 },
|
|
165 |
|
|
166 |
{ E, E, B},
|
|
167 |
{ E,-E, B},
|
|
168 |
{-E, E, B},
|
|
169 |
{-E,-E, B},
|
|
170 |
{ E, E,-B},
|
|
171 |
{ E,-E,-B},
|
|
172 |
{-E, E,-B},
|
|
173 |
{-E,-E,-B},
|
|
174 |
{ E, B, E},
|
|
175 |
{ E, B,-E},
|
|
176 |
{-E, B, E},
|
|
177 |
{-E, B,-E},
|
|
178 |
{ E,-B, E},
|
|
179 |
{ E,-B,-E},
|
|
180 |
{-E,-B, E},
|
|
181 |
{-E,-B,-E},
|
|
182 |
{ B, E, E},
|
|
183 |
{ B, E,-E},
|
|
184 |
{ B,-E, E},
|
|
185 |
{ B,-E,-E},
|
|
186 |
{-B, E, E},
|
|
187 |
{-B, E,-E},
|
|
188 |
{-B,-E, E},
|
|
189 |
{-B,-E,-E},
|
192 |
190 |
};
|
193 |
191 |
}
|
194 |
192 |
|
... | ... | |
233 |
231 |
final int N3 = N2 + N + 1;
|
234 |
232 |
float[][] vertices= new float[3*N+8][3];
|
235 |
233 |
|
236 |
|
vertices[3*(N+1)+4][0] = -A;
|
237 |
|
vertices[3*(N+1)+4][1] = -A;
|
238 |
|
vertices[3*(N+1)+4][2] = -A;
|
|
234 |
vertices[3*N+7][0] = -A;
|
|
235 |
vertices[3*N+7][1] = -A;
|
|
236 |
vertices[3*N+7][2] = -A;
|
239 |
237 |
|
240 |
238 |
vertices[0][0] = 0;
|
241 |
239 |
vertices[0][1] = 0;
|
... | ... | |
353 |
351 |
|
354 |
352 |
private int[][] produceCornerShape()
|
355 |
353 |
{
|
356 |
|
int[][] indices = new int[3*N+3][];
|
|
354 |
int[][] indices = new int[3*N+9][];
|
357 |
355 |
|
358 |
356 |
indices[0] = new int[N+4];
|
359 |
357 |
indices[1] = new int[N+4];
|
... | ... | |
382 |
380 |
|
383 |
381 |
for(int i=0; i<N; i++)
|
384 |
382 |
{
|
385 |
|
indices[3*i+3] = new int[] { N1+i+1, N1+i, 3*(N+1)+4 };
|
386 |
|
indices[3*i+4] = new int[] { N2+i+1, N2+i, 3*(N+1)+4 };
|
387 |
|
indices[3*i+5] = new int[] { N3+i+1, N3+i, 3*(N+1)+4 };
|
|
383 |
indices[3*i+3] = new int[] { N1+i+1, N1+i, 3*N+7 };
|
|
384 |
indices[3*i+4] = new int[] { N2+i+1, N2+i, 3*N+7 };
|
|
385 |
indices[3*i+5] = new int[] { N3+i+1, N3+i, 3*N+7 };
|
388 |
386 |
}
|
389 |
387 |
|
|
388 |
indices[3*N+3] = new int[] { 2 , 4+ N, 3*N+7 };
|
|
389 |
indices[3*N+4] = new int[] { 5 +N, 2 , 3*N+7 };
|
|
390 |
indices[3*N+5] = new int[] { 5+2*N, 3 , 3*N+7 };
|
|
391 |
indices[3*N+6] = new int[] { 3 , 6+2*N, 3*N+7 };
|
|
392 |
indices[3*N+7] = new int[] { 1 , 6+3*N, 3*N+7 };
|
|
393 |
indices[3*N+8] = new int[] { 4 , 1 , 3*N+7 };
|
|
394 |
|
390 |
395 |
return indices;
|
391 |
396 |
}
|
392 |
397 |
|
... | ... | |
483 |
488 |
float h1 = isInIconMode() ? 0.0001f : 0.03f;
|
484 |
489 |
float h2 = isInIconMode() ? 0.0001f : 0.01f;
|
485 |
490 |
float[][] bands = { {h1,35,0.2f,0.4f,5,2,1}, {h2,35,0.2f,0.4f,2,0,0} };
|
486 |
|
int num = 3*N+3;
|
|
491 |
int num = 3*N+9;
|
487 |
492 |
int[] indices = new int[num];
|
488 |
493 |
for(int i=3; i<num; i++) indices[i] = 1;
|
489 |
494 |
float S = 1-SQ2/2 - C;
|
... | ... | |
574 |
579 |
}
|
575 |
580 |
|
576 |
581 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
582 |
// ditto, manually provide the sticker coordinates.
|
577 |
583 |
|
578 |
584 |
@Override
|
579 |
585 |
public void adjustStickerCoords()
|
580 |
586 |
{
|
581 |
|
float L = 0.02f;
|
582 |
|
float Z = 0.06422593f - 0.25f*L;
|
583 |
|
float X = 0.5f - L;
|
584 |
|
|
585 |
|
float K = 1.45f;
|
586 |
|
float A = K*0.50f;
|
587 |
|
float B = K*0.25f;
|
588 |
|
float C = K*0.43301257f;
|
589 |
|
|
590 |
|
float D = 0.3580885f;
|
591 |
|
float E = 0.12022744f;
|
592 |
|
float F = 0.32227963f - 0.015f;
|
593 |
|
float G = 0.14090173f + 0.01f;
|
|
587 |
float A = 0.38f;
|
|
588 |
float B = 0.24f;
|
594 |
589 |
|
595 |
590 |
mStickerCoords = new float[][]
|
596 |
591 |
{
|
597 |
|
{ -D, E, 0.0f, -0.5f, D, E, F, G, -F, G },
|
598 |
|
{ -C, B, C, B, 0.0f, -A },
|
599 |
|
{ -X, Z, X, Z }
|
|
592 |
{ A,-0.5f, A, A, -0.5f, A, -0.5f, B, B, -0.5f },
|
|
593 |
{ 0.5f, 0.0f, 0.0f, 0.5f, -0.5f, 0.0f, 0.0f, -0.5f },
|
|
594 |
{ 0.5f, -0.5f, -0.5f, 0.5f }
|
600 |
595 |
};
|
601 |
596 |
}
|
602 |
597 |
|
... | ... | |
604 |
599 |
|
605 |
600 |
public float[][] getStickerAngles()
|
606 |
601 |
{
|
607 |
|
float D1 = (float)(Math.PI/3);
|
608 |
|
float D2 = (float)(Math.PI/6);
|
609 |
|
|
610 |
|
return new float[][] { { 0,0,0,-D1,0 },{-D2,-D2,-D2,-D2},{D2,D2} };
|
|
602 |
float D = (float)(Math.PI/4);
|
|
603 |
return new float[][] { { 0,0,0,-D,0 },{-D,-D,-D,-D},{D,D} };
|
611 |
604 |
}
|
612 |
605 |
|
613 |
606 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
Progress with Ancient Coin Cube.