Revision 9c06394a
Added by Leszek Koltunski over 3 years ago
src/main/java/org/distorted/helpers/FactorySticker.java | ||
---|---|---|
249 | 249 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
250 | 250 |
// PUBLIC |
251 | 251 |
|
252 |
public void drawRoundedPolygon(Canvas canvas, Paint paint, int left, int top, float[] vertices, float[] angles, float stroke, int color, float[] radii)
|
|
252 |
public void drawRoundedPolygon(Canvas canvas, Paint paint, int left, int top, int color, ObjectSticker sticker)
|
|
253 | 253 |
{ |
254 |
float stroke = sticker.getStroke(); |
|
255 |
float[] vertices = sticker.getCoords(); |
|
256 |
float[] angles = sticker.getCurvature(); |
|
257 |
float[] radii = sticker.getRadii(); |
|
258 |
|
|
254 | 259 |
stroke *= TEXTURE_HEIGHT; |
255 | 260 |
|
256 | 261 |
paint.setAntiAlias(true); |
src/main/java/org/distorted/helpers/ObjectSticker.java | ||
---|---|---|
1 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
2 |
// Copyright 2021 Leszek Koltunski // |
|
3 |
// // |
|
4 |
// This file is part of Magic Cube. // |
|
5 |
// // |
|
6 |
// Magic Cube is free software: you can redistribute it and/or modify // |
|
7 |
// it under the terms of the GNU General Public License as published by // |
|
8 |
// the Free Software Foundation, either version 2 of the License, or // |
|
9 |
// (at your option) any later version. // |
|
10 |
// // |
|
11 |
// Magic Cube is distributed in the hope that it will be useful, // |
|
12 |
// but WITHOUT ANY WARRANTY; without even the implied warranty of // |
|
13 |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // |
|
14 |
// GNU General Public License for more details. // |
|
15 |
// // |
|
16 |
// You should have received a copy of the GNU General Public License // |
|
17 |
// along with Magic Cube. If not, see <http://www.gnu.org/licenses/>. // |
|
18 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
19 |
|
|
20 |
package org.distorted.helpers; |
|
21 |
|
|
22 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
23 |
|
|
24 |
public class ObjectSticker |
|
25 |
{ |
|
26 |
private final float[] mCoords; |
|
27 |
private final float[] mCurvature; |
|
28 |
private final float[] mRadii; |
|
29 |
private final float mStroke; |
|
30 |
|
|
31 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
32 |
|
|
33 |
public ObjectSticker(float[] coords, float[] curvature, float[] radii, float stroke) |
|
34 |
{ |
|
35 |
mCoords = coords; |
|
36 |
mCurvature = curvature; |
|
37 |
mRadii = radii; |
|
38 |
mStroke = stroke; |
|
39 |
} |
|
40 |
|
|
41 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
42 |
|
|
43 |
public float[] getCoords() |
|
44 |
{ |
|
45 |
return mCoords; |
|
46 |
} |
|
47 |
|
|
48 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
49 |
|
|
50 |
public float[] getCurvature() |
|
51 |
{ |
|
52 |
return mCurvature; |
|
53 |
} |
|
54 |
|
|
55 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
56 |
|
|
57 |
public float[] getRadii() |
|
58 |
{ |
|
59 |
return mRadii; |
|
60 |
} |
|
61 |
|
|
62 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
63 |
|
|
64 |
public float getStroke() |
|
65 |
{ |
|
66 |
return mStroke; |
|
67 |
} |
|
68 |
} |
src/main/java/org/distorted/objects/TwistyBandagedAbstract.java | ||
---|---|---|
20 | 20 |
package org.distorted.objects; |
21 | 21 |
|
22 | 22 |
import android.content.res.Resources; |
23 |
import android.graphics.Canvas; |
|
24 |
import android.graphics.Paint; |
|
25 | 23 |
|
26 | 24 |
import org.distorted.helpers.FactoryCubit; |
27 |
import org.distorted.helpers.FactorySticker;
|
|
25 |
import org.distorted.helpers.ObjectSticker;
|
|
28 | 26 |
import org.distorted.library.effect.MatrixEffectQuaternion; |
29 | 27 |
import org.distorted.library.effect.VertexEffect; |
30 | 28 |
import org.distorted.library.effect.VertexEffectMove; |
... | ... | |
137 | 135 |
|
138 | 136 |
private static final int NUM_STICKERS = mStickerDimensions.length; |
139 | 137 |
|
138 |
private static final ObjectSticker[] mStickers; |
|
139 |
|
|
140 | 140 |
private static MeshBase[] mMeshes; |
141 | 141 |
|
142 |
static |
|
143 |
{ |
|
144 |
mStickers = new ObjectSticker[NUM_STICKERS]; |
|
145 |
|
|
146 |
for(int s=0; s<NUM_STICKERS; s++) |
|
147 |
{ |
|
148 |
float X = mStickerDimensions[s][0]; |
|
149 |
float Y = mStickerDimensions[s][1]; |
|
150 |
float MAX = Math.max(X,Y); |
|
151 |
X /= (2*MAX); |
|
152 |
Y /= (2*MAX); |
|
153 |
|
|
154 |
float R = 0.10f / MAX; |
|
155 |
float S = 0.08f / MAX; |
|
156 |
float[] coords = { -X,-Y, +X,-Y, +X,+Y, -X,+Y}; |
|
157 |
float[] radii = new float[] {R,R,R,R}; |
|
158 |
mStickers[s] = new ObjectSticker(coords,null,radii,S); |
|
159 |
} |
|
160 |
} |
|
161 |
|
|
142 | 162 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
143 | 163 |
|
144 | 164 |
TwistyBandagedAbstract(int size, Static4D quat, DistortedTexture texture, MeshSquare mesh, |
... | ... | |
368 | 388 |
|
369 | 389 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
370 | 390 |
|
371 |
void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top) |
|
391 |
int getColor(int face) |
|
392 |
{ |
|
393 |
return FACE_COLORS[face]; |
|
394 |
} |
|
395 |
|
|
396 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
397 |
|
|
398 |
ObjectSticker retSticker(int face) |
|
372 | 399 |
{ |
373 |
int numFaces = FACE_COLORS.length; |
|
374 |
int stickerType = face/numFaces; |
|
375 |
int color = face%numFaces; |
|
376 |
float X = mStickerDimensions[stickerType][0]; |
|
377 |
float Y = mStickerDimensions[stickerType][1]; |
|
378 |
float MAX = Math.max(X,Y); |
|
379 |
float R = 0.10f / MAX; |
|
380 |
float S = 0.08f / MAX; |
|
381 |
float[] RS = new float[] {R,R,R,R}; |
|
382 |
X /= (2*MAX); |
|
383 |
Y /= (2*MAX); |
|
384 |
|
|
385 |
float[] vertices = { -X,-Y, +X,-Y, +X,+Y, -X,+Y}; |
|
386 |
|
|
387 |
FactorySticker factory = FactorySticker.getInstance(); |
|
388 |
factory.drawRoundedPolygon(canvas, paint, left, top, vertices, null, S, FACE_COLORS[color], RS); |
|
400 |
return mStickers[face/NUM_FACES]; |
|
389 | 401 |
} |
390 | 402 |
|
391 | 403 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyCube.java | ||
---|---|---|
20 | 20 |
package org.distorted.objects; |
21 | 21 |
|
22 | 22 |
import android.content.res.Resources; |
23 |
import android.graphics.Canvas; |
|
24 |
import android.graphics.Paint; |
|
25 | 23 |
|
26 | 24 |
import org.distorted.helpers.FactoryCubit; |
27 |
import org.distorted.helpers.FactorySticker;
|
|
25 |
import org.distorted.helpers.ObjectSticker;
|
|
28 | 26 |
import org.distorted.library.main.DistortedEffects; |
29 | 27 |
import org.distorted.library.main.DistortedTexture; |
30 | 28 |
import org.distorted.library.mesh.MeshBase; |
... | ... | |
120 | 118 |
{ -0.5f, -0.5f, 0.5f, -0.5f, 0.5f, 0.5f, -0.5f, 0.5f } |
121 | 119 |
}; |
122 | 120 |
|
121 |
private static final ObjectSticker[] mStickers; |
|
122 |
|
|
123 | 123 |
private static MeshBase[] mMeshes; |
124 | 124 |
|
125 |
static |
|
126 |
{ |
|
127 |
final float radius = 0.10f; |
|
128 |
final float stroke = 0.08f; |
|
129 |
final float[] radii = {radius,radius,radius,radius}; |
|
130 |
mStickers = new ObjectSticker[STICKERS.length]; |
|
131 |
mStickers[0] = new ObjectSticker(STICKERS[0],null,radii,stroke ); |
|
132 |
} |
|
133 |
|
|
125 | 134 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
126 | 135 |
|
127 | 136 |
TwistyCube(int size, Static4D quat, DistortedTexture texture, |
... | ... | |
179 | 188 |
|
180 | 189 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
181 | 190 |
|
182 |
void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top)
|
|
191 |
int getColor(int face)
|
|
183 | 192 |
{ |
184 |
float R = 0.10f; |
|
185 |
float S = 0.08f; |
|
186 |
float[] RS = new float[] {R,R,R,R}; |
|
193 |
return FACE_COLORS[face]; |
|
194 |
} |
|
195 |
|
|
196 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
187 | 197 |
|
188 |
FactorySticker factory = FactorySticker.getInstance(); |
|
189 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[0], null, S, FACE_COLORS[face], RS); |
|
198 |
ObjectSticker retSticker(int face) |
|
199 |
{ |
|
200 |
return mStickers[face/NUM_FACES]; |
|
190 | 201 |
} |
191 | 202 |
|
192 | 203 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyDiamond.java | ||
---|---|---|
20 | 20 |
package org.distorted.objects; |
21 | 21 |
|
22 | 22 |
import android.content.res.Resources; |
23 |
import android.graphics.Canvas; |
|
24 |
import android.graphics.Paint; |
|
25 | 23 |
|
26 | 24 |
import org.distorted.helpers.FactoryCubit; |
27 |
import org.distorted.helpers.FactorySticker;
|
|
25 |
import org.distorted.helpers.ObjectSticker;
|
|
28 | 26 |
import org.distorted.library.effect.MatrixEffectQuaternion; |
29 | 27 |
import org.distorted.library.main.DistortedEffects; |
30 | 28 |
import org.distorted.library.main.DistortedTexture; |
... | ... | |
138 | 136 |
{ -0.4330127f, -0.25f, 0.4330127f, -0.25f, 0.0f, 0.5f } |
139 | 137 |
}; |
140 | 138 |
|
139 |
private static final ObjectSticker[] mStickers; |
|
140 |
|
|
141 | 141 |
private static MeshBase[] mMeshes; |
142 | 142 |
|
143 |
static |
|
144 |
{ |
|
145 |
float radius = 0.06f; |
|
146 |
float stroke = 0.07f; |
|
147 |
float[] radii = new float[] {radius,radius,radius}; |
|
148 |
mStickers = new ObjectSticker[STICKERS.length]; |
|
149 |
mStickers[0] = new ObjectSticker(STICKERS[0],null,radii,stroke); |
|
150 |
} |
|
151 |
|
|
143 | 152 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
144 | 153 |
|
145 | 154 |
TwistyDiamond(int size, Static4D quat, DistortedTexture texture, |
... | ... | |
491 | 500 |
|
492 | 501 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
493 | 502 |
|
494 |
void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top)
|
|
503 |
int getColor(int face)
|
|
495 | 504 |
{ |
496 |
float R = 0.06f; |
|
497 |
float S = 0.07f; |
|
498 |
float[] RS = new float[] {R,R,R}; |
|
505 |
return FACE_COLORS[face]; |
|
506 |
} |
|
507 |
|
|
508 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
499 | 509 |
|
500 |
FactorySticker factory = FactorySticker.getInstance(); |
|
501 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[0], null, S, FACE_COLORS[face], RS); |
|
510 |
ObjectSticker retSticker(int face) |
|
511 |
{ |
|
512 |
return mStickers[face/NUM_FACES]; |
|
502 | 513 |
} |
503 | 514 |
|
504 | 515 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyDino.java | ||
---|---|---|
20 | 20 |
package org.distorted.objects; |
21 | 21 |
|
22 | 22 |
import android.content.res.Resources; |
23 |
import android.graphics.Canvas; |
|
24 |
import android.graphics.Paint; |
|
25 | 23 |
|
26 | 24 |
import org.distorted.helpers.FactoryCubit; |
27 |
import org.distorted.helpers.FactorySticker;
|
|
25 |
import org.distorted.helpers.ObjectSticker;
|
|
28 | 26 |
import org.distorted.library.effect.MatrixEffectQuaternion; |
29 | 27 |
import org.distorted.library.main.DistortedEffects; |
30 | 28 |
import org.distorted.library.main.DistortedTexture; |
... | ... | |
105 | 103 |
{3,2,0}, |
106 | 104 |
}; |
107 | 105 |
|
106 |
private static MeshBase[] mMeshes; |
|
107 |
|
|
108 | 108 |
private static final float[][] STICKERS = new float[][] |
109 | 109 |
{ |
110 | 110 |
{ 0.0f, -1.0f/3, 0.5f, 1.0f/6, -0.5f, 1.0f/6 } |
111 | 111 |
}; |
112 | 112 |
|
113 |
private static MeshBase[] mMeshes; |
|
113 |
private static final ObjectSticker[] mStickers; |
|
114 |
|
|
115 |
static |
|
116 |
{ |
|
117 |
float radius = 0.025f; |
|
118 |
float stroke = 0.050f; |
|
119 |
float[] radii = new float[] {radius,radius,radius}; |
|
120 |
mStickers = new ObjectSticker[STICKERS.length]; |
|
121 |
mStickers[0] = new ObjectSticker(STICKERS[0],null,radii,stroke); |
|
122 |
} |
|
114 | 123 |
|
115 | 124 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
116 | 125 |
|
... | ... | |
213 | 222 |
|
214 | 223 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
215 | 224 |
|
216 |
void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top)
|
|
225 |
int getColor(int face)
|
|
217 | 226 |
{ |
218 |
float R = 0.025f; |
|
219 |
float S = 0.05f; |
|
220 |
float[] RS = new float[] {R,R,R}; |
|
227 |
return FACE_COLORS[face]; |
|
228 |
} |
|
221 | 229 |
|
222 |
FactorySticker factory = FactorySticker.getInstance(); |
|
223 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[0], null, S, FACE_COLORS[face], RS); |
|
230 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
231 |
|
|
232 |
ObjectSticker retSticker(int face) |
|
233 |
{ |
|
234 |
return mStickers[face/NUM_FACES]; |
|
224 | 235 |
} |
225 | 236 |
|
226 | 237 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyHelicopter.java | ||
---|---|---|
20 | 20 |
package org.distorted.objects; |
21 | 21 |
|
22 | 22 |
import android.content.res.Resources; |
23 |
import android.graphics.Canvas; |
|
24 |
import android.graphics.Paint; |
|
25 | 23 |
|
26 | 24 |
import org.distorted.helpers.FactoryCubit; |
27 |
import org.distorted.helpers.FactorySticker;
|
|
25 |
import org.distorted.helpers.ObjectSticker;
|
|
28 | 26 |
import org.distorted.library.effect.MatrixEffectQuaternion; |
29 | 27 |
import org.distorted.library.main.DistortedEffects; |
30 | 28 |
import org.distorted.library.main.DistortedTexture; |
... | ... | |
223 | 221 |
{ 2,0,3 } |
224 | 222 |
}; |
225 | 223 |
|
224 |
private static MeshBase[] mMeshes; |
|
225 |
|
|
226 | 226 |
private static final float[][] STICKERS = new float[][] |
227 | 227 |
{ |
228 | 228 |
{ -0.5f, 0.25f, 0.25f, -0.5f, 0.25f, 0.25f } |
229 | 229 |
}; |
230 | 230 |
|
231 |
private static MeshBase[] mMeshes; |
|
231 |
private static final ObjectSticker[] mStickers; |
|
232 |
|
|
233 |
static |
|
234 |
{ |
|
235 |
float radius = 0.03f; |
|
236 |
float stroke = 0.05f; |
|
237 |
float[] radii = new float[] {radius,radius,radius}; |
|
238 |
mStickers = new ObjectSticker[STICKERS.length]; |
|
239 |
mStickers[0] = new ObjectSticker(STICKERS[0],null,radii,stroke); |
|
240 |
} |
|
232 | 241 |
|
233 | 242 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
234 | 243 |
|
... | ... | |
375 | 384 |
|
376 | 385 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
377 | 386 |
|
378 |
void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top)
|
|
387 |
int getColor(int face)
|
|
379 | 388 |
{ |
380 |
float R = 0.03f; |
|
381 |
float S = 0.05f; |
|
382 |
float[] RS = new float[] {R,R,R}; |
|
389 |
return FACE_COLORS[face]; |
|
390 |
} |
|
383 | 391 |
|
384 |
FactorySticker factory = FactorySticker.getInstance(); |
|
385 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[0], null, S, FACE_COLORS[face], RS); |
|
392 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
393 |
|
|
394 |
ObjectSticker retSticker(int face) |
|
395 |
{ |
|
396 |
return mStickers[face/NUM_FACES]; |
|
386 | 397 |
} |
387 | 398 |
|
388 | 399 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyIvy.java | ||
---|---|---|
20 | 20 |
package org.distorted.objects; |
21 | 21 |
|
22 | 22 |
import android.content.res.Resources; |
23 |
import android.graphics.Canvas; |
|
24 |
import android.graphics.Paint; |
|
25 | 23 |
|
26 | 24 |
import org.distorted.helpers.FactoryCubit; |
27 |
import org.distorted.helpers.FactorySticker;
|
|
25 |
import org.distorted.helpers.ObjectSticker;
|
|
28 | 26 |
import org.distorted.library.effect.MatrixEffectQuaternion; |
29 | 27 |
import org.distorted.library.effect.VertexEffect; |
30 | 28 |
import org.distorted.library.effect.VertexEffectMove; |
... | ... | |
107 | 105 |
|
108 | 106 |
private static MeshBase mCornerMesh, mFaceMesh; |
109 | 107 |
|
108 |
private static final int NUM_STICKERS = 2; |
|
109 |
private static final ObjectSticker[] mStickers; |
|
110 |
|
|
111 |
static |
|
112 |
{ |
|
113 |
mStickers = new ObjectSticker[NUM_STICKERS]; |
|
114 |
|
|
115 |
float A = (+0.5f-IVY_M)*IVY_C; |
|
116 |
float B = (-0.5f-IVY_M)*IVY_C; |
|
117 |
float C = 0.50f-IVY_D; |
|
118 |
float D = (float)(Math.PI/4); |
|
119 |
|
|
120 |
final float[][] coords = { {A,B,A,A,B,A},{-C,C,C,-C} }; |
|
121 |
final float[][] angles = { { 0,0,D },{ D,D } }; |
|
122 |
final float[][] radii = { { 0,0.02f,0 },{ 0.06f,0.06f } }; |
|
123 |
final float[] strokes = { 0.03f, 0.08f }; |
|
124 |
|
|
125 |
for(int s=0; s<NUM_STICKERS; s++) |
|
126 |
{ |
|
127 |
mStickers[s] = new ObjectSticker(coords[s],angles[s],radii[s],strokes[s]); |
|
128 |
} |
|
129 |
} |
|
130 |
|
|
110 | 131 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
111 | 132 |
|
112 | 133 |
TwistyIvy(int size, Static4D quat, DistortedTexture texture, |
... | ... | |
147 | 168 |
|
148 | 169 |
int getNumStickerTypes(int numLayers) |
149 | 170 |
{ |
150 |
return 2;
|
|
171 |
return NUM_STICKERS;
|
|
151 | 172 |
} |
152 | 173 |
|
153 | 174 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
392 | 413 |
|
393 | 414 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
394 | 415 |
|
395 |
void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top)
|
|
416 |
int getColor(int face)
|
|
396 | 417 |
{ |
397 |
int COLORS = FACE_COLORS.length; |
|
398 |
FactorySticker factory = FactorySticker.getInstance(); |
|
399 |
|
|
400 |
if( face<COLORS ) |
|
401 |
{ |
|
402 |
float S = 0.03f; |
|
403 |
float R = 0.02f; |
|
404 |
float[] RS = new float[] {0,R,0}; |
|
405 |
|
|
406 |
float ANGLE = (float)(Math.PI/4); |
|
407 |
|
|
408 |
float A = (+0.5f-IVY_M)*IVY_C; |
|
409 |
float B = (-0.5f-IVY_M)*IVY_C; |
|
410 |
|
|
411 |
float[] vertices = new float[] { A, B, A, A, B, A }; |
|
412 |
float[] angles = new float[] { 0, 0, ANGLE }; |
|
413 |
|
|
414 |
factory.drawRoundedPolygon(canvas, paint, left, top, vertices, angles, S, FACE_COLORS[face%COLORS], RS); |
|
415 |
} |
|
416 |
else |
|
417 |
{ |
|
418 |
float S = 0.08f; |
|
419 |
float R = 0.06f; |
|
420 |
float[] RS = new float[] {R,R}; |
|
421 |
|
|
422 |
float ANGLE = (float)(Math.PI/4); |
|
423 |
float A = 0.50f-IVY_D; |
|
418 |
return FACE_COLORS[face]; |
|
419 |
} |
|
424 | 420 |
|
425 |
float[] vertices = new float[] { -A, A, A, -A }; |
|
426 |
float[] angles = new float[] { ANGLE, ANGLE }; |
|
421 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
427 | 422 |
|
428 |
factory.drawRoundedPolygon(canvas, paint, left, top, vertices, angles, S, FACE_COLORS[face%COLORS], RS); |
|
429 |
} |
|
423 |
ObjectSticker retSticker(int face) |
|
424 |
{ |
|
425 |
return mStickers[face/NUM_FACES]; |
|
430 | 426 |
} |
431 | 427 |
|
432 | 428 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyJing.java | ||
---|---|---|
20 | 20 |
package org.distorted.objects; |
21 | 21 |
|
22 | 22 |
import android.content.res.Resources; |
23 |
import android.graphics.Canvas; |
|
24 |
import android.graphics.Paint; |
|
25 | 23 |
|
26 | 24 |
import org.distorted.helpers.FactoryCubit; |
27 |
import org.distorted.helpers.FactorySticker;
|
|
25 |
import org.distorted.helpers.ObjectSticker;
|
|
28 | 26 |
import org.distorted.library.effect.MatrixEffectQuaternion; |
29 | 27 |
import org.distorted.library.main.DistortedEffects; |
30 | 28 |
import org.distorted.library.main.DistortedTexture; |
... | ... | |
204 | 202 |
|
205 | 203 |
private static MeshBase[] mMeshes; |
206 | 204 |
|
205 |
private static final ObjectSticker[] mStickers; |
|
206 |
|
|
207 |
static |
|
208 |
{ |
|
209 |
mStickers = new ObjectSticker[STICKERS.length]; |
|
210 |
final float R1 = 0.05f; |
|
211 |
final float R2 = 0.10f; |
|
212 |
final float R3 = 0.03f; |
|
213 |
final float[][] radii = { { R1,R1,R1,R1 },{ R3,R3,R2,R2 },{ R1,R1,R1 } }; |
|
214 |
final float[] strokes = { 0.06f, 0.03f, 0.05f }; |
|
215 |
|
|
216 |
for(int s=0; s<STICKERS.length; s++) |
|
217 |
{ |
|
218 |
mStickers[s] = new ObjectSticker(STICKERS[s],null,radii[s],strokes[s]); |
|
219 |
} |
|
220 |
} |
|
221 |
|
|
207 | 222 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
208 | 223 |
|
209 | 224 |
TwistyJing(int size, Static4D quat, DistortedTexture texture, MeshSquare mesh, |
... | ... | |
370 | 385 |
|
371 | 386 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
372 | 387 |
|
373 |
void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top)
|
|
388 |
int getColor(int face)
|
|
374 | 389 |
{ |
375 |
int COLORS = FACE_COLORS.length; |
|
376 |
int stickerType = face/COLORS; |
|
377 |
float R,S; |
|
378 |
float[] RS; |
|
390 |
return FACE_COLORS[face]; |
|
391 |
} |
|
379 | 392 |
|
380 |
switch(stickerType) |
|
381 |
{ |
|
382 |
case 0: R = 0.05f; S = 0.06f; RS = new float[] {R,R,R,R}; break; |
|
383 |
case 1: R = 0.03f; S = 0.03f; RS = new float[] {R,R,R,R}; break; |
|
384 |
default: R = 0.05f; S = 0.05f; RS = new float[] {R,R,R }; break; |
|
385 |
} |
|
393 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
386 | 394 |
|
387 |
FactorySticker factory = FactorySticker.getInstance(); |
|
388 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[stickerType], null, S, FACE_COLORS[face%COLORS], RS); |
|
395 |
ObjectSticker retSticker(int face) |
|
396 |
{ |
|
397 |
return mStickers[face/NUM_FACES]; |
|
389 | 398 |
} |
390 | 399 |
|
391 | 400 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyKilominx.java | ||
---|---|---|
20 | 20 |
package org.distorted.objects; |
21 | 21 |
|
22 | 22 |
import android.content.res.Resources; |
23 |
import android.graphics.Canvas; |
|
24 |
import android.graphics.Paint; |
|
25 | 23 |
|
26 | 24 |
import org.distorted.helpers.FactoryCubit; |
27 |
import org.distorted.helpers.FactorySticker;
|
|
25 |
import org.distorted.helpers.ObjectSticker;
|
|
28 | 26 |
import org.distorted.helpers.QuatHelper; |
29 | 27 |
import org.distorted.library.effect.MatrixEffectQuaternion; |
30 | 28 |
import org.distorted.library.main.DistortedEffects; |
... | ... | |
60 | 58 |
|
61 | 59 |
private static final float CENTER_CORR = 0.87f; |
62 | 60 |
|
63 |
private static final float C = 1.14f; // make the 'center' sticker artificially larger, so that we paint |
|
64 |
// over the area in the center of the face. |
|
65 |
|
|
66 | 61 |
private static final float[][] STICKERS = new float[][] |
67 | 62 |
{ |
68 |
{ C*-0.36616942f, C*-0.36327124f, C*0.5f, C*-0.36327124f, C*0.23233888f, C*0.4605048f, C*-0.36616942f, C*0.26603764f },
|
|
63 |
{ -0.36616942f, -0.36327124f, 0.5f, -0.36327124f, 0.23233888f, 0.4605048f, -0.36616942f, 0.26603764f },
|
|
69 | 64 |
{ -0.36327127f, -0.5f, 0.36327127f, -0.26393202f, 0.36327127f, 0.5f, -0.36327127f, 0.26393202f }, |
70 | 65 |
{ -0.3249197f, -0.39442718f, 0.3249197f, -0.39442718f, 0.3249197f, 0.5f, -0.3249197f, 0.2888544f } |
71 | 66 |
}; |
... | ... | |
74 | 69 |
|
75 | 70 |
static |
76 | 71 |
{ |
72 |
final float C = 1.14f; // make the 'center' sticker artificially larger, so that we paint |
|
73 |
// over the area in the center of the face. |
|
74 |
|
|
77 | 75 |
int[] sizes = ObjectList.KILO.getSizes(); |
78 | 76 |
int variants = sizes.length; |
79 | 77 |
mNumCornerEdgeVariants = sizes[0]==3 ? variants-1 : variants; |
80 | 78 |
|
79 |
STICKERS[0][0] *= C; |
|
80 |
STICKERS[0][1] *= C; |
|
81 |
STICKERS[0][2] *= C; |
|
82 |
STICKERS[0][3] *= C; |
|
83 |
STICKERS[0][4] *= C; |
|
84 |
STICKERS[0][5] *= C; |
|
85 |
STICKERS[0][6] *= C; |
|
86 |
STICKERS[0][7] *= C; |
|
87 |
|
|
81 | 88 |
STICKERS[0][2] *= CENTER_CORR; |
82 | 89 |
STICKERS[0][3] *= CENTER_CORR; |
83 | 90 |
} |
84 | 91 |
|
92 |
private static final ObjectSticker[] mStickers; |
|
93 |
static |
|
94 |
{ |
|
95 |
mStickers = new ObjectSticker[STICKERS.length]; |
|
96 |
|
|
97 |
float R = 0.10f; |
|
98 |
final float[][] radii = { {R,R,R,R},{R,R,R,R},{R,R,R,R} }; |
|
99 |
final float[] strokes = { 0.20f, 0.11f, 0.10f }; |
|
100 |
|
|
101 |
for(int s=0; s<STICKERS.length; s++) |
|
102 |
{ |
|
103 |
mStickers[s] = new ObjectSticker(STICKERS[s],null,radii[s],strokes[s]); |
|
104 |
} |
|
105 |
} |
|
106 |
|
|
85 | 107 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
86 | 108 |
|
87 | 109 |
TwistyKilominx(int size, Static4D quat, DistortedTexture texture, MeshSquare mesh, |
... | ... | |
635 | 657 |
|
636 | 658 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
637 | 659 |
|
638 |
void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top)
|
|
660 |
int getColor(int face)
|
|
639 | 661 |
{ |
640 |
int COLORS = FACE_COLORS.length; |
|
641 |
int variant = face/COLORS; |
|
662 |
return FACE_COLORS[face]; |
|
663 |
} |
|
664 |
|
|
665 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
666 |
|
|
667 |
ObjectSticker retSticker(int face) |
|
668 |
{ |
|
669 |
return mStickers[getStickerIndex(face)]; |
|
670 |
} |
|
671 |
|
|
672 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
673 |
|
|
674 |
private int getStickerIndex(int face) |
|
675 |
{ |
|
676 |
int variant = face/NUM_FACES; |
|
642 | 677 |
int numLayers = getNumLayers(); |
643 | 678 |
|
644 |
if( variant == (numLayers-1)/2 || numLayers==3 ) // center |
|
645 |
{ |
|
646 |
float R = 0.10f; |
|
647 |
float S = 0.20f; |
|
648 |
float[] RS = new float[] {R,R,R,R}; |
|
679 |
if( variant == (numLayers-1)/2 || numLayers==3 ) return 0; |
|
680 |
if( variant==0 ) return 1; |
|
649 | 681 |
|
650 |
FactorySticker factory = FactorySticker.getInstance(); |
|
651 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[0], null, S, FACE_COLORS[face%NUM_FACES], RS); |
|
652 |
} |
|
653 |
else if( variant==0 ) // corner |
|
654 |
{ |
|
655 |
float R = 0.10f; |
|
656 |
float S = 0.11f; |
|
657 |
float[] RS = new float[] {R,R,R,R}; |
|
658 |
FactorySticker factory = FactorySticker.getInstance(); |
|
659 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[1], null, S, FACE_COLORS[face%COLORS], RS); |
|
660 |
} |
|
661 |
else // edge |
|
662 |
{ |
|
663 |
float R = 0.10f; |
|
664 |
float S = 0.10f; |
|
665 |
float[] RS = new float[] {R,R,R,R}; |
|
666 |
FactorySticker factory = FactorySticker.getInstance(); |
|
667 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[2], null, S, FACE_COLORS[face%COLORS], RS); |
|
668 |
} |
|
682 |
return 2; |
|
669 | 683 |
} |
670 | 684 |
|
671 | 685 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyMegaminx.java | ||
---|---|---|
20 | 20 |
package org.distorted.objects; |
21 | 21 |
|
22 | 22 |
import android.content.res.Resources; |
23 |
import android.graphics.Canvas; |
|
24 |
import android.graphics.Paint; |
|
25 | 23 |
|
26 | 24 |
import org.distorted.helpers.FactoryCubit; |
27 |
import org.distorted.helpers.FactorySticker;
|
|
25 |
import org.distorted.helpers.ObjectSticker;
|
|
28 | 26 |
import org.distorted.helpers.QuatHelper; |
29 | 27 |
import org.distorted.library.effect.MatrixEffectQuaternion; |
30 | 28 |
import org.distorted.library.main.DistortedEffects; |
... | ... | |
58 | 56 |
{ -0.29389262f, 0.4045085f, -0.47552824f, -0.1545085f, 0.0f, -0.5f, 0.47552824f, -0.1545085f, 0.29389262f, 0.4045085f } |
59 | 57 |
}; |
60 | 58 |
|
59 |
private static final ObjectSticker[] mStickers; |
|
60 |
static |
|
61 |
{ |
|
62 |
mStickers = new ObjectSticker[STICKERS.length]; |
|
63 |
|
|
64 |
final float R0 = 0.08f; |
|
65 |
final float R1 = 0.12f; |
|
66 |
final float R2 = 0.12f; |
|
67 |
final float R3 = 0.08f; |
|
68 |
final float R4 = 0.10f; |
|
69 |
final float[][] radii = { {R0,R0,R0,R0},{R1,R1,R1,R1},{R2,R2,R2,R2},{R3,R3,R3,R3},{R4,R4,R4,R4,R4} }; |
|
70 |
final float[] strokes = { 0.10f,0.12f,0.12f,0.08f,0.07f }; |
|
71 |
|
|
72 |
for(int s=0; s<STICKERS.length; s++) |
|
73 |
{ |
|
74 |
mStickers[s] = new ObjectSticker(STICKERS[s],null,radii[s],strokes[s]); |
|
75 |
} |
|
76 |
} |
|
77 |
|
|
61 | 78 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
62 | 79 |
|
63 | 80 |
TwistyMegaminx(int size, Static4D quat, DistortedTexture texture, MeshSquare mesh, |
... | ... | |
531 | 548 |
|
532 | 549 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
533 | 550 |
|
534 |
void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top)
|
|
551 |
int getColor(int face)
|
|
535 | 552 |
{ |
536 |
int COLORS = FACE_COLORS.length; |
|
537 |
float R,S; |
|
538 |
float[] RS; |
|
539 |
int index,variant = face/COLORS; |
|
553 |
return FACE_COLORS[face]; |
|
554 |
} |
|
540 | 555 |
|
541 |
if( variant==0 ) { R = 0.08f; S = 0.10f; index = 0; RS = new float[] {R,R,R,R}; } |
|
542 |
else |
|
543 |
{ |
|
544 |
int numLayers = getNumLayers(); |
|
556 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
557 |
|
|
558 |
ObjectSticker retSticker(int face) |
|
559 |
{ |
|
560 |
return mStickers[getStickerIndex(face)]; |
|
561 |
} |
|
562 |
|
|
563 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
564 |
|
|
565 |
private int getStickerIndex(int face) |
|
566 |
{ |
|
567 |
int variant = face/NUM_FACES; |
|
545 | 568 |
|
546 |
if( variant < (numLayers+1)/2 ) |
|
569 |
if( variant==0 ) return 0; |
|
570 |
|
|
571 |
int numLayers = getNumLayers(); |
|
572 |
|
|
573 |
if( variant < (numLayers+1)/2 ) |
|
574 |
{ |
|
575 |
if( numLayers==3 ) return 1; |
|
576 |
else |
|
547 | 577 |
{ |
548 |
if( numLayers==3 ) { R = 0.12f; S = 0.12f; index = 1; RS = new float[] {R,R,R,R}; } |
|
549 |
else |
|
550 |
{ |
|
551 |
if( variant==1 ) { R = 0.12f; S = 0.12f; index = 2; RS = new float[] {R,R,R,R}; } |
|
552 |
else { R = 0.08f; S = 0.08f; index = 3; RS = new float[] {R,R,R,R}; } |
|
553 |
} |
|
578 |
if( variant==1 ) return 2; |
|
579 |
else return 3; |
|
554 | 580 |
} |
555 |
else { R = 0.10f; S = 0.07f; index = 4; RS = new float[] {R,R,R,R,R}; } |
|
556 | 581 |
} |
557 | 582 |
|
558 |
FactorySticker factory = FactorySticker.getInstance(); |
|
559 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[index], null, S, FACE_COLORS[face%COLORS], RS); |
|
583 |
return 4; |
|
560 | 584 |
} |
561 | 585 |
|
562 | 586 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyObject.java | ||
---|---|---|
28 | 28 |
import com.google.firebase.crashlytics.FirebaseCrashlytics; |
29 | 29 |
|
30 | 30 |
import org.distorted.helpers.FactoryCubit; |
31 |
import org.distorted.helpers.FactorySticker; |
|
32 |
import org.distorted.helpers.ObjectSticker; |
|
31 | 33 |
import org.distorted.helpers.QuatHelper; |
32 | 34 |
import org.distorted.library.effect.Effect; |
33 | 35 |
import org.distorted.library.effect.MatrixEffectMove; |
... | ... | |
588 | 590 |
paint.setColor(COLOR_BLACK); |
589 | 591 |
canvas.drawRect(0, 0, mNumTexCols*TEXTURE_HEIGHT, mNumTexRows*TEXTURE_HEIGHT, paint); |
590 | 592 |
|
591 |
int tex = 0; |
|
593 |
int face = 0; |
|
594 |
FactorySticker factory = FactorySticker.getInstance(); |
|
592 | 595 |
|
593 | 596 |
for(int row=0; row<mNumTexRows; row++) |
594 | 597 |
for(int col=0; col<mNumTexCols; col++) |
595 | 598 |
{ |
596 |
if( tex>=NUM_TEXTURES ) break; |
|
597 |
createFaceTexture(canvas, paint, tex, col*TEXTURE_HEIGHT, row*TEXTURE_HEIGHT); |
|
598 |
tex++; |
|
599 |
if( face>=NUM_TEXTURES ) break; |
|
600 |
ObjectSticker sticker = retSticker(face); |
|
601 |
factory.drawRoundedPolygon(canvas, paint, col*TEXTURE_HEIGHT, row*TEXTURE_HEIGHT, getColor(face%NUM_FACES), sticker); |
|
602 |
face++; |
|
599 | 603 |
} |
600 | 604 |
|
601 | 605 |
if( !mTexture.setTexture(bitmap) ) |
... | ... | |
970 | 974 |
abstract int getNumStickerTypes(int numLayers); |
971 | 975 |
abstract int getNumCubitFaces(); |
972 | 976 |
abstract MeshBase createCubitMesh(int cubit, int numLayers); |
973 |
abstract void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top); |
|
977 |
abstract ObjectSticker retSticker(int face); |
|
978 |
abstract int getColor(int face); |
|
974 | 979 |
abstract int getFaceColor(int cubit, int cubitface, int numLayers); |
975 | 980 |
abstract float returnMultiplier(); |
976 | 981 |
abstract float[][] getCuts(int numLayers); |
src/main/java/org/distorted/objects/TwistyPyraminx.java | ||
---|---|---|
20 | 20 |
package org.distorted.objects; |
21 | 21 |
|
22 | 22 |
import android.content.res.Resources; |
23 |
import android.graphics.Canvas; |
|
24 |
import android.graphics.Paint; |
|
25 | 23 |
|
26 | 24 |
import org.distorted.helpers.FactoryCubit; |
27 |
import org.distorted.helpers.FactorySticker;
|
|
25 |
import org.distorted.helpers.ObjectSticker;
|
|
28 | 26 |
import org.distorted.library.main.DistortedEffects; |
29 | 27 |
import org.distorted.library.main.DistortedTexture; |
30 | 28 |
import org.distorted.library.mesh.MeshBase; |
... | ... | |
120 | 118 |
private static MeshBase[] mMeshes; |
121 | 119 |
private static float[] mRowChances; |
122 | 120 |
|
121 |
private static final ObjectSticker[] mStickers; |
|
122 |
|
|
123 |
static |
|
124 |
{ |
|
125 |
mStickers = new ObjectSticker[STICKERS.length]; |
|
126 |
final float stroke = 0.08f; |
|
127 |
final float radius = 0.06f; |
|
128 |
final float[] radii= {radius,radius,radius}; |
|
129 |
mStickers[0] = new ObjectSticker(STICKERS[0],null,radii,stroke); |
|
130 |
} |
|
131 |
|
|
123 | 132 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
124 | 133 |
|
125 | 134 |
TwistyPyraminx(int size, Static4D quat, DistortedTexture texture, MeshSquare mesh, |
... | ... | |
358 | 367 |
|
359 | 368 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
360 | 369 |
|
361 |
void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top)
|
|
370 |
int getColor(int face)
|
|
362 | 371 |
{ |
363 |
float R = 0.06f; |
|
364 |
float S = 0.08f; |
|
365 |
float[] RS = new float[] {R,R,R}; |
|
372 |
return FACE_COLORS[face]; |
|
373 |
} |
|
374 |
|
|
375 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
366 | 376 |
|
367 |
FactorySticker factory = FactorySticker.getInstance(); |
|
368 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[0], null, S, FACE_COLORS[face], RS); |
|
377 |
ObjectSticker retSticker(int face) |
|
378 |
{ |
|
379 |
return mStickers[face/NUM_FACES]; |
|
369 | 380 |
} |
370 | 381 |
|
371 | 382 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyRedi.java | ||
---|---|---|
20 | 20 |
package org.distorted.objects; |
21 | 21 |
|
22 | 22 |
import android.content.res.Resources; |
23 |
import android.graphics.Canvas; |
|
24 |
import android.graphics.Paint; |
|
25 | 23 |
|
26 | 24 |
import org.distorted.helpers.FactoryCubit; |
27 |
import org.distorted.helpers.FactorySticker;
|
|
25 |
import org.distorted.helpers.ObjectSticker;
|
|
28 | 26 |
import org.distorted.library.effect.MatrixEffectQuaternion; |
29 | 27 |
import org.distorted.library.main.DistortedEffects; |
30 | 28 |
import org.distorted.library.main.DistortedTexture; |
... | ... | |
195 | 193 |
private static int[] mPossibleAxis, mPossibleLayers; |
196 | 194 |
private static int[] mNumOccurences; |
197 | 195 |
|
196 |
private static final ObjectSticker[] mStickers; |
|
197 |
|
|
198 |
static |
|
199 |
{ |
|
200 |
mStickers = new ObjectSticker[STICKERS.length]; |
|
201 |
final float R0 = 0.09f; |
|
202 |
final float R1 = 0.06f; |
|
203 |
final float[][] radii = { {R0,R0,R0,R0},{R1,R1,R1,R1,R1} }; |
|
204 |
final float[] strokes = { 0.09f,0.06f }; |
|
205 |
|
|
206 |
for(int s=0; s<STICKERS.length; s++) |
|
207 |
{ |
|
208 |
mStickers[s] = new ObjectSticker(STICKERS[s],null,radii[s],strokes[s]); |
|
209 |
} |
|
210 |
} |
|
211 |
|
|
198 | 212 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
199 | 213 |
|
200 | 214 |
TwistyRedi(int size, Static4D quat, DistortedTexture texture, MeshSquare mesh, |
... | ... | |
372 | 386 |
|
373 | 387 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
374 | 388 |
|
375 |
void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top)
|
|
389 |
int getColor(int face)
|
|
376 | 390 |
{ |
377 |
int COLORS = FACE_COLORS.length; |
|
378 |
int stickerType = face/COLORS; |
|
379 |
float R,S; |
|
391 |
return FACE_COLORS[face]; |
|
392 |
} |
|
380 | 393 |
|
381 |
switch(stickerType) |
|
382 |
{ |
|
383 |
case 0: R = 0.09f; S = 0.09f; break; |
|
384 |
case 1: R = 0.06f; S = 0.06f; break; |
|
385 |
default: R = 0.00f; S = 0.00f; break; |
|
386 |
} |
|
387 |
float[] RS = new float[] {R,R,R,R}; |
|
388 |
FactorySticker factory = FactorySticker.getInstance(); |
|
389 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[stickerType], null, S, FACE_COLORS[face%COLORS], RS); |
|
394 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
395 |
|
|
396 |
ObjectSticker retSticker(int face) |
|
397 |
{ |
|
398 |
return mStickers[face/NUM_FACES]; |
|
390 | 399 |
} |
391 | 400 |
|
392 | 401 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyRex.java | ||
---|---|---|
20 | 20 |
package org.distorted.objects; |
21 | 21 |
|
22 | 22 |
import android.content.res.Resources; |
23 |
import android.graphics.Canvas; |
|
24 |
import android.graphics.Paint; |
|
25 | 23 |
|
26 | 24 |
import org.distorted.helpers.FactoryCubit; |
27 |
import org.distorted.helpers.FactorySticker;
|
|
25 |
import org.distorted.helpers.ObjectSticker;
|
|
28 | 26 |
import org.distorted.library.effect.MatrixEffectQuaternion; |
29 | 27 |
import org.distorted.library.effect.VertexEffect; |
30 | 28 |
import org.distorted.library.effect.VertexEffectMove; |
... | ... | |
137 | 135 |
|
138 | 136 |
private static MeshBase mCornerMesh, mFaceMesh, mEdgeMesh; |
139 | 137 |
|
138 |
private static final int NUM_STICKERS = 3; |
|
139 |
private static final ObjectSticker[] mStickers; |
|
140 |
|
|
141 |
static |
|
142 |
{ |
|
143 |
mStickers = new ObjectSticker[NUM_STICKERS]; |
|
144 |
|
|
145 |
final float A = REX_D*SQ2; |
|
146 |
final float B = (1-REX_D)*SQ2/2; |
|
147 |
final float C = 1.0f; |
|
148 |
final float D = 0.5f-REX_D; |
|
149 |
final float E = (float)(Math.PI/15); |
|
150 |
final float F = (float)(Math.PI/20); |
|
151 |
final float R1= 0.02f; |
|
152 |
final float R2= 0.04f; |
|
153 |
final float R3= 0.06f; |
|
154 |
final float[][] coords = { {A/2,-B/3,-A/2,-B/3,0,2*B/3},{-REX_D,0,0,-REX_D,+REX_D,0,0,+REX_D},{-C/2,D/3,C/2,D/3,0,-2*D/3} }; |
|
155 |
final float[][] angles = { { -E/2,E,E },null,{ F/10,-F,-F } }; |
|
156 |
final float[][] radii = { {R1,R1,R1},{R2,R2,R2,R2},{0,0,R3} }; |
|
157 |
final float[] strokes = { 0.05f, 0.035f, 0.045f }; |
|
158 |
|
|
159 |
for(int s=0; s<NUM_STICKERS; s++) |
|
160 |
{ |
|
161 |
mStickers[s] = new ObjectSticker(coords[s],angles[s],radii[s],strokes[s]); |
|
162 |
} |
|
163 |
} |
|
164 |
|
|
140 | 165 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
141 | 166 |
|
142 | 167 |
TwistyRex(int size, Static4D quat, DistortedTexture texture, MeshSquare mesh, |
... | ... | |
177 | 202 |
|
178 | 203 |
int getNumStickerTypes(int numLayers) |
179 | 204 |
{ |
180 |
return 3;
|
|
205 |
return NUM_STICKERS;
|
|
181 | 206 |
} |
182 | 207 |
|
183 | 208 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
549 | 574 |
|
550 | 575 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
551 | 576 |
|
552 |
void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top)
|
|
577 |
int getColor(int face)
|
|
553 | 578 |
{ |
554 |
int COLORS = FACE_COLORS.length; |
|
555 |
FactorySticker factory = FactorySticker.getInstance(); |
|
556 |
|
|
557 |
if( face<COLORS ) |
|
558 |
{ |
|
559 |
float S = 0.05f; |
|
560 |
float R = 0.02f; |
|
561 |
float[] RS = new float[] {R,R,R}; |
|
562 |
float ANGLE = (float)(Math.PI/15); |
|
563 |
float F = REX_D*SQ2; |
|
564 |
float G = (1-REX_D)*SQ2/2; |
|
565 |
float[] vertices = new float[] { F/2, -G/3, -F/2, -G/3, 0, 2*G/3 }; |
|
566 |
float[] angles = new float[] { -ANGLE/2, ANGLE, ANGLE }; |
|
567 |
|
|
568 |
factory.drawRoundedPolygon(canvas, paint, left, top, vertices, angles, S, FACE_COLORS[face%COLORS], RS); |
|
569 |
} |
|
570 |
else if( face<2*COLORS ) |
|
571 |
{ |
|
572 |
float S = 0.035f; |
|
573 |
float R = 0.040f; |
|
574 |
float[] RS = new float[] {R,R,R,R}; |
|
575 |
float[] vertices = { -REX_D,0.0f, 0.0f, -REX_D, +REX_D, 0.0f, 0.0f, +REX_D}; |
|
576 |
factory.drawRoundedPolygon(canvas, paint, left, top, vertices, null, S, FACE_COLORS[face%COLORS], RS); |
|
577 |
} |
|
578 |
else |
|
579 |
{ |
|
580 |
float S = 0.045f; |
|
581 |
float R = 0.060f; |
|
582 |
float[] RS = new float[] {0,0,R}; |
|
579 |
return FACE_COLORS[face]; |
|
580 |
} |
|
583 | 581 |
|
584 |
float ANGLE = (float)(Math.PI/20); |
|
585 |
float F = 1.0f; |
|
586 |
float G = 0.5f-REX_D; |
|
587 |
float[] vertices = new float[] { -F/2, G/3, F/2, G/3, 0, -2*G/3 }; |
|
588 |
float[] angles = new float[] { ANGLE/10, -ANGLE, -ANGLE }; |
|
582 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
589 | 583 |
|
590 |
factory.drawRoundedPolygon(canvas, paint, left, top, vertices, angles, S, FACE_COLORS[face%COLORS], RS); |
|
591 |
} |
|
584 |
ObjectSticker retSticker(int face) |
|
585 |
{ |
|
586 |
return mStickers[face/NUM_FACES]; |
|
592 | 587 |
} |
593 | 588 |
|
594 | 589 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistySkewb.java | ||
---|---|---|
20 | 20 |
package org.distorted.objects; |
21 | 21 |
|
22 | 22 |
import android.content.res.Resources; |
23 |
import android.graphics.Canvas; |
|
24 |
import android.graphics.Paint; |
|
25 | 23 |
|
26 | 24 |
import org.distorted.helpers.FactoryCubit; |
27 |
import org.distorted.helpers.FactorySticker;
|
|
25 |
import org.distorted.helpers.ObjectSticker;
|
|
28 | 26 |
import org.distorted.library.effect.MatrixEffectQuaternion; |
29 | 27 |
import org.distorted.library.main.DistortedEffects; |
30 | 28 |
import org.distorted.library.main.DistortedTexture; |
... | ... | |
177 | 175 |
|
178 | 176 |
private static MeshBase[] mMeshes; |
179 | 177 |
|
178 |
private static final ObjectSticker[] mStickers; |
|
179 |
|
|
180 |
static |
|
181 |
{ |
|
182 |
mStickers = new ObjectSticker[STICKERS.length+1]; |
|
183 |
final float R1 = 0.025f; |
|
184 |
final float R2 = 0.025f; |
|
185 |
final float R3 = 0.055f; |
|
186 |
final float[][] radii = { { R1,R1,R1 },{ R2,R2,R2 },{ R3,R3,R3,R3 } }; |
|
187 |
final float[] strokes = { 0.045f, 0.035f, 0.035f }; |
|
188 |
|
|
189 |
for(int s=0; s<STICKERS.length+1; s++) |
|
190 |
{ |
|
191 |
int index = s<2 ? 0:1; |
|
192 |
mStickers[s] = new ObjectSticker(STICKERS[index],null,radii[s],strokes[s]); |
|
193 |
} |
|
194 |
} |
|
195 |
|
|
180 | 196 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
181 | 197 |
|
182 | 198 |
TwistySkewb(int size, Static4D quat, DistortedTexture texture, |
... | ... | |
572 | 588 |
|
573 | 589 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
574 | 590 |
|
575 |
void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top)
|
|
591 |
int getColor(int face)
|
|
576 | 592 |
{ |
577 |
int COLORS = FACE_COLORS.length; |
|
578 |
float R,S; |
|
579 |
float[] RS; |
|
580 |
int index, cubitType = face/COLORS; |
|
593 |
return FACE_COLORS[face]; |
|
594 |
} |
|
581 | 595 |
|
582 |
switch(cubitType) |
|
583 |
{ |
|
584 |
case 0 : R = 0.025f; S = 0.045f; index= 0; RS = new float[] {R,R,R }; break; |
|
585 |
case 1 : R = 0.025f; S = 0.035f; index= 0; RS = new float[] {R,R,R }; break; |
|
586 |
default: R = 0.055f; S = 0.035f; index= 1; RS = new float[] {R,R,R,R}; break; |
|
587 |
} |
|
596 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
588 | 597 |
|
589 |
FactorySticker factory = FactorySticker.getInstance(); |
|
590 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[index], null, S, FACE_COLORS[face%COLORS], RS); |
|
598 |
ObjectSticker retSticker(int face) |
|
599 |
{ |
|
600 |
return mStickers[face/NUM_FACES]; |
|
591 | 601 |
} |
592 | 602 |
|
593 | 603 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistySquare.java | ||
---|---|---|
274 | 274 |
return new float[][] { {-0.5f,+0.5f}, {0.0f} }; |
275 | 275 |
} |
276 | 276 |
|
277 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
278 |
|
|
279 |
int getColor(int face) |
|
280 |
{ |
|
281 |
return FACE_COLORS[face]; |
|
282 |
} |
|
283 |
|
|
277 | 284 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
278 | 285 |
// PUBLIC API |
279 | 286 |
|
src/main/java/org/distorted/objects/TwistySquare1.java | ||
---|---|---|
20 | 20 |
package org.distorted.objects; |
21 | 21 |
|
22 | 22 |
import android.content.res.Resources; |
23 |
import android.graphics.Canvas; |
|
24 |
import android.graphics.Paint; |
|
25 | 23 |
|
26 | 24 |
import org.distorted.helpers.FactoryCubit; |
27 |
import org.distorted.helpers.FactorySticker;
|
|
25 |
import org.distorted.helpers.ObjectSticker;
|
|
28 | 26 |
import org.distorted.library.effect.MatrixEffectQuaternion; |
29 | 27 |
import org.distorted.library.main.DistortedEffects; |
30 | 28 |
import org.distorted.library.main.DistortedTexture; |
... | ... | |
104 | 102 |
{ -0.2637079f, -0.38185397f, 0.38185397f, -0.38185397f, 0.38185397f, 0.2637079f, -0.5f, 0.5f } // corner top |
105 | 103 |
}; |
106 | 104 |
|
107 |
private static final int NUM_ST = STICKERS.length; |
|
105 |
private static final int NUM_STICKERS = STICKERS.length;
|
|
108 | 106 |
|
109 | 107 |
private static final int[][] mStickerType = new int[][] |
110 | 108 |
{ |
111 |
{ NUM_ST,NUM_ST,0, 1, 2,NUM_ST },
|
|
112 |
{ 3,NUM_ST,4,NUM_ST,NUM_ST,NUM_ST },
|
|
113 |
{ 5,NUM_ST,2, 2,NUM_ST,NUM_ST }
|
|
109 |
{ NUM_STICKERS,NUM_STICKERS,0, 1, 2,NUM_STICKERS },
|
|
110 |
{ 3,NUM_STICKERS,4,NUM_STICKERS,NUM_STICKERS,NUM_STICKERS },
|
|
111 |
{ 5,NUM_STICKERS,2, 2,NUM_STICKERS,NUM_STICKERS }
|
|
114 | 112 |
}; |
115 | 113 |
|
116 | 114 |
// YELLOW 0 WHITE 1 BLUE 2 GREEN 3 RED 4 ORANGE 5 |
... | ... | |
149 | 147 |
private final int[] mCornerQuat; |
150 | 148 |
private int mPermittedUp, mPermittedDo; |
151 | 149 |
|
150 |
private static final ObjectSticker[] mStickers; |
|
151 |
|
|
152 |
static |
|
153 |
{ |
|
154 |
mStickers = new ObjectSticker[NUM_STICKERS]; |
|
155 |
final float R1 = 0.06f; |
|
156 |
final float R2 = 0.04f; |
|
157 |
final float R3 = 0.11f; |
|
158 |
final float R4 = 0.03f; |
|
159 |
final float R5 = 0.11f; |
|
160 |
final float R6 = 0.08f; |
|
161 |
final float[][] radii = { {R1,R1,R1,R1},{R2,R2,R2,R2},{R3,R3,R3,R3},{R4,R4,R4},{R5,R5,R5,R5},{R6,R6,R6,R6} }; |
|
162 |
final float[] strokes = { 0.05f,0.04f,0.09f,0.05f,0.08f,0.08f }; |
|
163 |
|
|
164 |
for(int s=0; s<NUM_STICKERS; s++) |
|
165 |
{ |
|
166 |
mStickers[s] = new ObjectSticker(STICKERS[s],null,radii[s],strokes[s]); |
|
167 |
} |
|
168 |
} |
|
169 |
|
|
152 | 170 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
153 | 171 |
|
154 | 172 |
TwistySquare1(int size, Static4D quat, DistortedTexture texture, MeshSquare mesh, |
... | ... | |
221 | 239 |
|
222 | 240 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
223 | 241 |
|
224 |
void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top)
|
|
242 |
ObjectSticker retSticker(int face)
|
|
225 | 243 |
{ |
226 |
int COLORS = FACE_COLORS.length; |
|
227 |
int stickerType = face/COLORS; |
|
228 |
float R,S; |
|
229 |
float[] RS; |
|
230 |
|
|
231 |
switch(stickerType) |
|
232 |
{ |
|
233 |
case 0: R = 0.06f; S = 0.05f; RS= new float[] {R,R,R,R}; break; |
|
234 |
case 1: R = 0.04f; S = 0.04f; RS= new float[] {R,R,R,R}; break; |
|
235 |
case 2: R = 0.11f; S = 0.09f; RS= new float[] {R,R,R,R}; break; |
|
236 |
case 3: R = 0.03f; S = 0.05f; RS= new float[] {R,R,R }; break; |
|
237 |
case 4: R = 0.11f; S = 0.08f; RS= new float[] {R,R,R,R}; break; |
|
238 |
case 5: R = 0.08f; S = 0.08f; RS= new float[] {R,R,R,R}; break; |
|
239 |
default: R = 0.00f; S = 0.00f; RS= new float[] {R,R,R,R}; break; |
|
240 |
} |
|
241 |
|
|
242 |
FactorySticker factory = FactorySticker.getInstance(); |
|
243 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[stickerType], null, S, FACE_COLORS[face%COLORS], RS); |
|
244 |
return mStickers[face/NUM_FACES]; |
|
244 | 245 |
} |
245 | 246 |
|
246 | 247 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
254 | 255 |
|
255 | 256 |
int getNumStickerTypes(int numLayers) |
256 | 257 |
{ |
257 |
return STICKERS.length;
|
|
258 |
return NUM_STICKERS;
|
|
258 | 259 |
} |
259 | 260 |
|
260 | 261 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistySquare2.java | ||
---|---|---|
20 | 20 |
package org.distorted.objects; |
21 | 21 |
|
22 | 22 |
import android.content.res.Resources; |
23 |
import android.graphics.Canvas; |
|
24 |
import android.graphics.Paint; |
|
25 | 23 |
|
26 | 24 |
import org.distorted.helpers.FactoryCubit; |
27 |
import org.distorted.helpers.FactorySticker;
|
|
25 |
import org.distorted.helpers.ObjectSticker;
|
|
28 | 26 |
import org.distorted.library.effect.MatrixEffectQuaternion; |
29 | 27 |
import org.distorted.library.main.DistortedEffects; |
30 | 28 |
import org.distorted.library.main.DistortedTexture; |
... | ... | |
114 | 112 |
{ -0.11602539f, -0.25f, 0.4330127f, -0.25f, -0.3169873f, 0.5f } // corner top |
115 | 113 |
}; |
116 | 114 |
|
117 |
private static final int NUM_ST = STICKERS.length; |
|
115 |
private static final int NUM_STICKERS = STICKERS.length;
|
|
118 | 116 |
|
119 | 117 |
private static final int[][] mStickerType = new int[][] |
120 | 118 |
{ |
121 |
{ NUM_ST,NUM_ST,0, 1, 2,NUM_ST },
|
|
122 |
{ 3,NUM_ST,4,NUM_ST,NUM_ST,NUM_ST },
|
|
123 |
{ 5,NUM_ST,2,NUM_ST,NUM_ST,NUM_ST },
|
|
124 |
{ NUM_ST, 5,2,NUM_ST,NUM_ST,NUM_ST }
|
|
119 |
{ NUM_STICKERS,NUM_STICKERS,0, 1, 2,NUM_STICKERS },
|
|
120 |
{ 3,NUM_STICKERS,4,NUM_STICKERS,NUM_STICKERS,NUM_STICKERS },
|
|
121 |
{ 5,NUM_STICKERS,2,NUM_STICKERS,NUM_STICKERS,NUM_STICKERS },
|
|
122 |
{ NUM_STICKERS, 5,2,NUM_STICKERS,NUM_STICKERS,NUM_STICKERS }
|
|
125 | 123 |
}; |
126 | 124 |
|
127 | 125 |
// YELLOW 0 WHITE 1 BLUE 2 GREEN 3 RED 4 ORANGE 5 |
... | ... | |
158 | 156 |
{ 3, 0, 4, 0, 0, 0 }, |
159 | 157 |
}; |
160 | 158 |
|
159 |
private static final ObjectSticker[] mStickers; |
|
160 |
|
|
161 |
static |
|
162 |
{ |
|
163 |
mStickers = new ObjectSticker[NUM_STICKERS]; |
|
164 |
final float R1 = 0.06f; |
|
165 |
final float R2 = 0.04f; |
|
166 |
final float R3 = 0.11f; |
|
167 |
final float R4 = 0.03f; |
|
168 |
final float R5 = 0.11f; |
|
169 |
final float R6 = 0.025f; |
|
170 |
final float[][] radii = { {R1,R1,R1,R1},{R2,R2,R2,R2},{R3,R3,R3,R3},{R4,R4,R4},{R5,R5,R5,R5},{R6,R6,R6} }; |
|
171 |
final float[] strokes = { 0.05f,0.04f,0.09f,0.05f,0.08f,0.06f }; |
|
172 |
|
|
173 |
for(int s=0; s<NUM_STICKERS; s++) |
|
174 |
{ |
|
175 |
mStickers[s] = new ObjectSticker(STICKERS[s],null,radii[s],strokes[s]); |
|
176 |
} |
|
177 |
} |
|
178 |
|
|
161 | 179 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
162 | 180 |
|
163 | 181 |
TwistySquare2(int size, Static4D quat, DistortedTexture texture, MeshSquare mesh, |
... | ... | |
226 | 244 |
|
227 | 245 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
228 | 246 |
|
229 |
void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top)
|
|
247 |
ObjectSticker retSticker(int face)
|
|
230 | 248 |
{ |
231 |
int COLORS = FACE_COLORS.length; |
|
232 |
int stickerType = face/COLORS; |
|
233 |
float R,S; |
|
234 |
float[] RS; |
|
235 |
|
|
236 |
switch(stickerType) |
|
237 |
{ |
|
238 |
case 0: R = 0.060f; S = 0.05f; RS= new float[] {R,R,R,R}; break; |
|
239 |
case 1: R = 0.040f; S = 0.04f; RS= new float[] {R,R,R,R}; break; |
|
240 |
case 2: R = 0.110f; S = 0.09f; RS= new float[] {R,R,R,R}; break; |
|
241 |
case 3: R = 0.030f; S = 0.05f; RS= new float[] {R,R,R }; break; |
|
242 |
case 4: R = 0.110f; S = 0.08f; RS= new float[] {R,R,R,R}; break; |
|
243 |
case 5: R = 0.025f; S = 0.06f; RS= new float[] {R,R,R }; break; |
|
244 |
default: R = 0.000f; S = 0.00f; RS= new float[] {R,R,R,R}; break; |
|
245 |
} |
|
246 |
|
|
247 |
FactorySticker factory = FactorySticker.getInstance(); |
|
248 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[stickerType], null, S, FACE_COLORS[face%COLORS], RS); |
|
249 |
return mStickers[face/NUM_FACES]; |
|
249 | 250 |
} |
250 | 251 |
|
251 | 252 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
259 | 260 |
|
260 | 261 |
int getNumStickerTypes(int numLayers) |
261 | 262 |
{ |
262 |
return STICKERS.length;
|
|
263 |
return NUM_STICKERS;
|
|
263 | 264 |
} |
264 | 265 |
|
265 | 266 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyUltimate.java | ||
---|---|---|
20 | 20 |
package org.distorted.objects; |
21 | 21 |
|
22 | 22 |
import android.content.res.Resources; |
23 |
import android.graphics.Canvas; |
|
24 |
import android.graphics.Paint; |
|
25 | 23 |
|
26 | 24 |
import org.distorted.helpers.FactoryCubit; |
27 |
import org.distorted.helpers.FactorySticker;
|
|
25 |
import org.distorted.helpers.ObjectSticker;
|
|
28 | 26 |
import org.distorted.library.effect.MatrixEffectQuaternion; |
29 | 27 |
import org.distorted.library.main.DistortedEffects; |
30 | 28 |
import org.distorted.library.main.DistortedTexture; |
... | ... | |
221 | 219 |
|
222 | 220 |
private static MeshBase[] mMeshes; |
223 | 221 |
|
222 |
private static final ObjectSticker[] mStickers; |
|
223 |
|
|
224 |
static |
|
225 |
{ |
|
226 |
mStickers = new ObjectSticker[STICKERS.length]; |
|
227 |
final float R1 = 0.08f; |
|
228 |
final float R2 = 0.13f; |
|
229 |
final float R3 = 0.11f; |
|
230 |
final float[][] radii = { {R1,R1,R1,R1,R1},{R2,R2,R2,R2},{R3,R3,R3,R3} }; |
|
231 |
final float[] strokes = { 0.07f, 0.09f, 0.08f }; |
|
232 |
|
|
233 |
for(int s=0; s<STICKERS.length; s++) |
|
234 |
{ |
|
235 |
mStickers[s] = new ObjectSticker(STICKERS[s],null,radii[s],strokes[s]); |
|
236 |
} |
|
237 |
} |
|
238 |
|
|
224 | 239 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
225 | 240 |
|
226 | 241 |
TwistyUltimate(int size, Static4D quat, DistortedTexture texture, |
... | ... | |
342 | 357 |
|
343 | 358 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
344 | 359 |
|
345 |
void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top)
|
|
360 |
int getFaceColor(int cubit, int cubitface, int size)
|
|
346 | 361 |
{ |
347 |
int COLORS = FACE_COLORS.length; |
|
348 |
int stickerType = face/COLORS; |
|
349 |
float R,S; |
|
350 |
float[] RS; |
|
362 |
return mFaceMap[cubit][cubitface]; |
|
363 |
} |
|
351 | 364 |
|
352 |
switch(stickerType) |
|
353 |
{ |
|
354 |
case 0: R = 0.08f; S = 0.07f; RS= new float[] {R,R,R,R,R}; break; |
|
355 |
case 1: R = 0.13f; S = 0.09f; RS= new float[] {R,R,R,R }; break; |
|
356 |
case 2: R = 0.11f; S = 0.08f; RS= new float[] {R,R,R,R }; break; |
|
357 |
default: R = 0.00f; S = 0.00f; RS= new float[] {R,R,R,R }; break; |
|
358 |
} |
|
365 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
359 | 366 |
|
360 |
FactorySticker factory = FactorySticker.getInstance(); |
|
361 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[stickerType], null, S, FACE_COLORS[face%COLORS], RS); |
|
367 |
int getColor(int face) |
|
368 |
{ |
|
369 |
return FACE_COLORS[face]; |
|
362 | 370 |
} |
363 | 371 |
|
364 | 372 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
365 | 373 |
|
366 |
int getFaceColor(int cubit, int cubitface, int size)
|
|
374 |
ObjectSticker retSticker(int face)
|
|
367 | 375 |
{ |
368 |
return mFaceMap[cubit][cubitface];
|
|
376 |
return mStickers[face/NUM_FACES];
|
|
369 | 377 |
} |
370 | 378 |
|
371 | 379 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
Also available in: Unified diff
Standarize drawing stickers of a twisty puzzle. From now on, there's no 'sticker drawing' code in the individual classes, only some constants.