Revision 680469e6
Added by Leszek Koltunski over 4 years ago
| src/main/java/org/distorted/helpers/FactoryCubit.java | ||
|---|---|---|
| 43 | 43 |
private static final float SQ2 = (float)Math.sqrt(2); |
| 44 | 44 |
private static final float SQ3 = (float)Math.sqrt(3); |
| 45 | 45 |
private static final float SQ5 = (float)Math.sqrt(5); |
| 46 |
private static final float SQ6 = (float)Math.sqrt(6); |
|
| 47 | 46 |
|
| 48 | 47 |
private static final Static1D RADIUS = new Static1D(1); |
| 49 | 48 |
private static FactoryCubit mThis; |
| ... | ... | |
| 238 | 237 |
} |
| 239 | 238 |
} |
| 240 | 239 |
|
| 241 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 242 |
|
|
| 243 |
MeshBase createFacesHelicopterFace() |
|
| 244 |
{
|
|
| 245 |
MeshBase[] meshes = new MeshBase[4]; |
|
| 246 |
|
|
| 247 |
float E = 0.5f; |
|
| 248 |
float F = SQ2/4; |
|
| 249 |
float G = 1.0f/12; |
|
| 250 |
float[] vertices0 = { -E+E/4,E/4, E/4,-E+E/4, E/4,E/4};
|
|
| 251 |
float[] bands0 = computeBands(0.028f,35,E/4,0.7f,7); |
|
| 252 |
|
|
| 253 |
meshes[0] = new MeshPolygon(vertices0, bands0, 3, 3); |
|
| 254 |
meshes[0].setEffectAssociation(0,1,0); |
|
| 255 |
|
|
| 256 |
float[] vertices1 = { -F,-G, +F,-G, 0,2*G};
|
|
| 257 |
float[] bands1 = computeBands(0.01f,45,F,0.0f,3); |
|
| 258 |
|
|
| 259 |
meshes[1] = new MeshPolygon(vertices1, bands1, 1, 3); |
|
| 260 |
meshes[1].setEffectAssociation(0,2,0); |
|
| 261 |
|
|
| 262 |
float[] vertices2 = { -E/2,-F/3, +E/2,-F/3, 0,2*F/3};
|
|
| 263 |
|
|
| 264 |
meshes[2] = new MeshPolygon(vertices2, bands1, 1, 3); |
|
| 265 |
meshes[2].setEffectAssociation(0,4,0); |
|
| 266 |
meshes[3] = meshes[2].copy(true); |
|
| 267 |
meshes[3].setEffectAssociation(0,8,0); |
|
| 268 |
|
|
| 269 |
return new MeshJoined(meshes); |
|
| 270 |
} |
|
| 271 |
|
|
| 272 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 273 |
|
|
| 274 |
MeshBase createFacesRediEdge() |
|
| 275 |
{
|
|
| 276 |
MeshBase[] meshes = new MeshPolygon[6]; |
|
| 277 |
|
|
| 278 |
float F = 0.25f; |
|
| 279 |
float[] vertices0 = { -F,+F, -F,-F, 0, -2*F, +F,-F, +F,+F };
|
|
| 280 |
float[] bands0 = computeBands(0.038f,35,F,0.7f,7); |
|
| 281 |
|
|
| 282 |
meshes[0] = new MeshPolygon(vertices0, bands0, 2, 2); |
|
| 283 |
meshes[0].setEffectAssociation(0,1,0); |
|
| 284 |
meshes[1] = meshes[0].copy(true); |
|
| 285 |
meshes[1].setEffectAssociation(0,2,0); |
|
| 286 |
|
|
| 287 |
float[] bands1 = computeBands(0.02f,35,F/2,0.2f,3); |
|
| 288 |
float[] vertices1 = { -F/2, +F/2, -F/2, -1.5f*F, 1.5f*F, +F/2 };
|
|
| 289 |
|
|
| 290 |
meshes[2] = new MeshPolygon(vertices1, bands1, 1, 2); |
|
| 291 |
meshes[2].setEffectAssociation(0,4,0); |
|
| 292 |
meshes[3] = meshes[2].copy(true); |
|
| 293 |
meshes[3].setEffectAssociation(0,8,0); |
|
| 294 |
|
|
| 295 |
float X = 0.25f*SQ2; |
|
| 296 |
float Y = SQ6/16; |
|
| 297 |
float[] vertices2 = { -X, Y, -1.5f*X, -Y, +1.5f*X, -Y, +X, Y };
|
|
| 298 |
|
|
| 299 |
meshes[4] = new MeshPolygon(vertices2, bands1, 1, 1); |
|
| 300 |
meshes[4].setEffectAssociation(0,16,0); |
|
| 301 |
meshes[5] = meshes[4].copy(true); |
|
| 302 |
meshes[5].setEffectAssociation(0,32,0); |
|
| 303 |
|
|
| 304 |
return new MeshJoined(meshes); |
|
| 305 |
} |
|
| 306 |
|
|
| 307 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 308 |
|
|
| 309 |
MeshBase createFacesRediCorner() |
|
| 310 |
{
|
|
| 311 |
MeshBase[] meshes = new MeshBase[6]; |
|
| 312 |
|
|
| 313 |
float E = 0.5f; |
|
| 314 |
float[] vertices0 = { -E,-E, +E,-E, +E,+E, -E,+E };
|
|
| 315 |
float[] bands0 = computeBands(0.06f,35,E,0.7f,6); |
|
| 316 |
|
|
| 317 |
meshes[0] = new MeshPolygon(vertices0,bands0,2,2); |
|
| 318 |
meshes[0].setEffectAssociation(0,1,0); |
|
| 319 |
meshes[1] = meshes[0].copy(true); |
|
| 320 |
meshes[1].setEffectAssociation(0,2,0); |
|
| 321 |
meshes[2] = meshes[0].copy(true); |
|
| 322 |
meshes[2].setEffectAssociation(0,4,0); |
|
| 323 |
|
|
| 324 |
float F = 0.5f; |
|
| 325 |
float X = 0.5f; |
|
| 326 |
float G = 0.72f; |
|
| 327 |
float[] vertices1 = { -E,+F, -E+X,0, -E,-F, -E*G,-F, +E*G,-F, +E,-F, +E-X,0, +E,+F, +E*G,+F, -E*G,+F };
|
|
| 328 |
float[] bands1 = computeBands(0.0f,0,1.0f,0.0f,2); |
|
| 329 |
|
|
| 330 |
meshes[3] = new MeshPolygon(vertices1,bands1,0,0); |
|
| 331 |
meshes[3].setEffectAssociation(0,8,0); |
|
| 332 |
meshes[4] = meshes[3].copy(true); |
|
| 333 |
meshes[4].setEffectAssociation(0,16,0); |
|
| 334 |
meshes[5] = meshes[3].copy(true); |
|
| 335 |
meshes[5].setEffectAssociation(0,32,0); |
|
| 336 |
|
|
| 337 |
return new MeshJoined(meshes); |
|
| 338 |
} |
|
| 339 |
|
|
| 340 | 240 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 341 | 241 |
|
| 342 | 242 |
MeshBase createFacesIvyCorner() |
| ... | ... | |
| 722 | 622 |
|
| 723 | 623 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 724 | 624 |
// EFFECTS |
| 725 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 726 |
|
|
| 727 |
VertexEffect[] createVertexEffectsRediEdge() |
|
| 728 |
{
|
|
| 729 |
Static3D move0 = new Static3D(0.0f, -0.5f, 0.0f); |
|
| 730 |
Static3D move1 = new Static3D(0.25f, -0.25f, 0.0f); |
|
| 731 |
Static3D move2 = new Static3D(0.5f, 0.0f, 0.0f); |
|
| 732 |
Static3D move3 = new Static3D(0.0f, (SQ3-6)/8, (SQ3-6)/8); |
|
| 733 |
Static3D flipZ = new Static3D(1,1,-1); |
|
| 734 |
Static3D flipX = new Static3D(-1,1,1); |
|
| 735 |
Static3D scale = new Static3D(2,2,2); |
|
| 736 |
Static3D cent0 = new Static3D(0,0, 0); |
|
| 737 |
Static3D cent1 = new Static3D(0,0, -1.5f); |
|
| 738 |
Static3D axisX = new Static3D(1,0, 0); |
|
| 739 |
Static3D axisY = new Static3D(0,1, 0); |
|
| 740 |
Static3D axis = new Static3D(0,SQ2/2,-SQ2/2); |
|
| 741 |
Static1D angle1= new Static1D(90); |
|
| 742 |
Static1D angle2= new Static1D(45); |
|
| 743 |
Static1D angle3= new Static1D( (float)(180/Math.PI*Math.acos(SQ3/3)) ); |
|
| 744 |
|
|
| 745 |
VertexEffect[] effect = new VertexEffect[12]; |
|
| 746 |
|
|
| 747 |
effect[0] = new VertexEffectScale(scale); |
|
| 748 |
effect[1] = new VertexEffectMove(move0); |
|
| 749 |
effect[2] = new VertexEffectScale(flipZ); |
|
| 750 |
effect[3] = new VertexEffectRotate(angle1,axisX,cent0); |
|
| 751 |
effect[4] = new VertexEffectMove(move1); |
|
| 752 |
effect[5] = new VertexEffectRotate(angle1,axisY,cent0); |
|
| 753 |
effect[6] = new VertexEffectMove(move2); |
|
| 754 |
effect[7] = new VertexEffectScale(flipX); |
|
| 755 |
effect[8] = new VertexEffectRotate(angle2,axisX,cent0); |
|
| 756 |
effect[9] = new VertexEffectMove(move3); |
|
| 757 |
effect[10]= new VertexEffectRotate(angle3,axis ,cent1); |
|
| 758 |
effect[11]= new VertexEffectScale(flipX); |
|
| 759 |
|
|
| 760 |
effect[0].setMeshAssociation(63,-1); // meshes 0,1,2,3,4,5 |
|
| 761 |
effect[1].setMeshAssociation( 3,-1); // meshes 0,1 |
|
| 762 |
effect[2].setMeshAssociation( 2,-1); // mesh 1 |
|
| 763 |
effect[3].setMeshAssociation( 2,-1); // mesh 1 |
|
| 764 |
effect[4].setMeshAssociation(12,-1); // meshes 2,3 |
|
| 765 |
effect[5].setMeshAssociation(60,-1); // meshes 2,3,4,5 |
|
| 766 |
effect[6].setMeshAssociation(12,-1); // meshes 2,3 |
|
| 767 |
effect[7].setMeshAssociation( 8,-1); // mesh 3 |
|
| 768 |
effect[8].setMeshAssociation(48,-1); // meshes 4,5 |
|
| 769 |
effect[9].setMeshAssociation(48,-1); // meshes 4,5 |
|
| 770 |
effect[10].setMeshAssociation(48,-1); // meshes 4,5 |
|
| 771 |
effect[11].setMeshAssociation(32,-1); // mesh 5 |
|
| 772 |
|
|
| 773 |
return effect; |
|
| 774 |
} |
|
| 775 |
|
|
| 776 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 777 |
|
|
| 778 |
VertexEffect[] createVertexEffectsRediCorner() |
|
| 779 |
{
|
|
| 780 |
Static3D axisY = new Static3D(0,1,0); |
|
| 781 |
Static3D axisX = new Static3D(1,0,0); |
|
| 782 |
Static3D axisZ = new Static3D(0,0,1); |
|
| 783 |
Static3D center = new Static3D(0,0,0); |
|
| 784 |
Static1D angle90 = new Static1D(90); |
|
| 785 |
Static1D angle270= new Static1D(270); |
|
| 786 |
Static1D angle45 = new Static1D(-45); |
|
| 787 |
Static3D scale = new Static3D(1.0f, SQ2, 1.0f); |
|
| 788 |
|
|
| 789 |
VertexEffect[] effect = new VertexEffect[7]; |
|
| 790 |
|
|
| 791 |
effect[0] = new VertexEffectMove(new Static3D(0,0,+0.5f)); |
|
| 792 |
effect[1] = new VertexEffectRotate( angle270, axisX, center ); |
|
| 793 |
effect[2] = new VertexEffectRotate( angle90 , axisY, center ); |
|
| 794 |
effect[3] = new VertexEffectScale(scale); |
|
| 795 |
effect[4] = new VertexEffectRotate( angle45 , axisX, center ); |
|
| 796 |
effect[5] = new VertexEffectRotate( angle90 , axisY, center ); |
|
| 797 |
effect[6] = new VertexEffectRotate( angle270, axisZ, center ); |
|
| 798 |
|
|
| 799 |
effect[0].setMeshAssociation( 7,-1); // 0,1,2 |
|
| 800 |
effect[1].setMeshAssociation( 2,-1); // 1 |
|
| 801 |
effect[2].setMeshAssociation( 4,-1); // 2 |
|
| 802 |
effect[3].setMeshAssociation(56,-1); // 3,4,5 |
|
| 803 |
effect[4].setMeshAssociation(56,-1); // 3,4,5 |
|
| 804 |
effect[5].setMeshAssociation(16,-1); // 4 |
|
| 805 |
effect[6].setMeshAssociation(32,-1); // 5 |
|
| 806 |
|
|
| 807 |
return effect; |
|
| 808 |
} |
|
| 809 |
|
|
| 810 | 625 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 811 | 626 |
|
| 812 | 627 |
VertexEffect[] createVertexEffectsIvyCorner() |
| ... | ... | |
| 1198 | 1013 |
|
| 1199 | 1014 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 1200 | 1015 |
// OBJECTS |
| 1201 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 1202 |
|
|
| 1203 |
public MeshBase createRediEdgeMesh() |
|
| 1204 |
{
|
|
| 1205 |
MeshBase mesh = createFacesRediEdge(); |
|
| 1206 |
VertexEffect[] effects = createVertexEffectsRediEdge(); |
|
| 1207 |
for( VertexEffect effect : effects ) mesh.apply(effect); |
|
| 1208 |
|
|
| 1209 |
Static3D center = new Static3D(0.0f,-0.75f,-0.75f); |
|
| 1210 |
Static3D[] vertices = new Static3D[2]; |
|
| 1211 |
vertices[0] = new Static3D( 0.5f, 0.0f, 0.0f); |
|
| 1212 |
vertices[1] = new Static3D(-0.5f, 0.0f, 0.0f); |
|
| 1213 |
roundCorners(mesh,center,vertices,0.06f,0.20f); |
|
| 1214 |
|
|
| 1215 |
mesh.mergeEffComponents(); |
|
| 1216 |
|
|
| 1217 |
return mesh; |
|
| 1218 |
} |
|
| 1219 |
|
|
| 1220 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 1221 |
|
|
| 1222 |
public MeshBase createRediCornerMesh() |
|
| 1223 |
{
|
|
| 1224 |
MeshBase mesh = createFacesRediCorner(); |
|
| 1225 |
VertexEffect[] effects = createVertexEffectsRediCorner(); |
|
| 1226 |
for( VertexEffect effect : effects ) mesh.apply(effect); |
|
| 1227 |
|
|
| 1228 |
Static3D center = new Static3D(0,0,0); |
|
| 1229 |
Static3D[] vertices = new Static3D[8]; |
|
| 1230 |
vertices[0] = new Static3D(+0.5f,+0.5f,+0.5f); |
|
| 1231 |
vertices[1] = new Static3D(+0.5f,+0.5f,-0.5f); |
|
| 1232 |
vertices[2] = new Static3D(+0.5f,-0.5f,+0.5f); |
|
| 1233 |
vertices[3] = new Static3D(+0.5f,-0.5f,-0.5f); |
|
| 1234 |
vertices[4] = new Static3D(-0.5f,+0.5f,+0.5f); |
|
| 1235 |
vertices[5] = new Static3D(-0.5f,+0.5f,-0.5f); |
|
| 1236 |
vertices[6] = new Static3D(-0.5f,-0.5f,+0.5f); |
|
| 1237 |
vertices[7] = new Static3D(-0.5f,-0.5f,-0.5f); |
|
| 1238 |
|
|
| 1239 |
roundCorners(mesh,center,vertices,0.06f,0.12f); |
|
| 1240 |
|
|
| 1241 |
mesh.mergeEffComponents(); |
|
| 1242 |
|
|
| 1243 |
return mesh; |
|
| 1244 |
} |
|
| 1245 |
|
|
| 1246 | 1016 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 1247 | 1017 |
|
| 1248 | 1018 |
public MeshBase createIvyCornerMesh() |
| src/main/java/org/distorted/objects/TwistyHelicopter.java | ||
|---|---|---|
| 295 | 295 |
|
| 296 | 296 |
int getNumStickerTypes(int numLayers) |
| 297 | 297 |
{
|
| 298 |
return 1;
|
|
| 298 |
return STICKERS.length;
|
|
| 299 | 299 |
} |
| 300 | 300 |
|
| 301 | 301 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| src/main/java/org/distorted/objects/TwistyRedi.java | ||
|---|---|---|
| 133 | 133 |
{ 7,11,12,12,12,12 },
|
| 134 | 134 |
}; |
| 135 | 135 |
|
| 136 |
private static MeshBase mCornerMesh, mEdgeMesh; |
|
| 136 |
private static final float G = 0.72f; |
|
| 137 |
|
|
| 138 |
private static final double[][] VERTICES_CORNER = new double[][] |
|
| 139 |
{
|
|
| 140 |
{ 0.0f, 0.0f, 0.0f },
|
|
| 141 |
{-0.5f, 0.5f, 0.5f },
|
|
| 142 |
{-0.5f,-0.5f, 0.5f },
|
|
| 143 |
{ 0.5f, 0.5f, 0.5f },
|
|
| 144 |
{ 0.5f,-0.5f, 0.5f },
|
|
| 145 |
{ 0.5f, 0.5f,-0.5f },
|
|
| 146 |
{ 0.5f,-0.5f,-0.5f },
|
|
| 147 |
{-0.5f, 0.5f,-0.5f },
|
|
| 148 |
|
|
| 149 |
{-0.5f, 0.5f*G, 0.5f },
|
|
| 150 |
{-0.5f,-0.5f*G, 0.5f },
|
|
| 151 |
{-0.5f*G,-0.5f, 0.5f },
|
|
| 152 |
{ 0.5f*G,-0.5f, 0.5f },
|
|
| 153 |
{ 0.5f,-0.5f, 0.5f*G },
|
|
| 154 |
{ 0.5f,-0.5f,-0.5f*G },
|
|
| 155 |
{ 0.5f,-0.5f*G,-0.5f },
|
|
| 156 |
{ 0.5f, 0.5f*G,-0.5f },
|
|
| 157 |
{ 0.5f*G, 0.5f,-0.5f },
|
|
| 158 |
{-0.5f*G, 0.5f,-0.5f },
|
|
| 159 |
{-0.5f, 0.5f,-0.5f*G },
|
|
| 160 |
{-0.5f, 0.5f, 0.5f*G },
|
|
| 161 |
}; |
|
| 162 |
|
|
| 163 |
private static final int[][] VERT_INDEXES_CORNER = new int[][] |
|
| 164 |
{
|
|
| 165 |
{ 2,4,3,1 },
|
|
| 166 |
{ 1,3,5,7 },
|
|
| 167 |
{ 4,6,5,3 },
|
|
| 168 |
|
|
| 169 |
{ 2,10,11,4,0,5,16,17,7,0},
|
|
| 170 |
{ 4,12,13,6,0,7,18,19,1,0},
|
|
| 171 |
{ 1, 8, 9,2,0,6,14,15,5,0}
|
|
| 172 |
}; |
|
| 173 |
|
|
| 174 |
private static final double[][] VERTICES_EDGE = new double[][] |
|
| 175 |
{
|
|
| 176 |
{-0.5f, 0.0f, 0.0f},
|
|
| 177 |
{ 0.5f, 0.0f, 0.0f},
|
|
| 178 |
{-0.5f,-1.0f, 0.0f},
|
|
| 179 |
{ 0.5f,-1.0f, 0.0f},
|
|
| 180 |
{ 0.0f,-1.5f, 0.0f},
|
|
| 181 |
{-0.5f, 0.0f,-1.0f},
|
|
| 182 |
{ 0.5f, 0.0f,-1.0f},
|
|
| 183 |
{ 0.0f, 0.0f,-1.5f},
|
|
| 184 |
}; |
|
| 185 |
|
|
| 186 |
private static final int[][] VERT_INDEXES_EDGE = new int[][] |
|
| 187 |
{
|
|
| 188 |
{ 0,2,4,3,1 },
|
|
| 189 |
{ 0,1,6,7,5 },
|
|
| 190 |
{ 1,3,6 },
|
|
| 191 |
{ 0,2,5 },
|
|
| 192 |
{ 4,7,6,3 },
|
|
| 193 |
{ 4,7,5,2 }
|
|
| 194 |
}; |
|
| 195 |
|
|
| 196 |
private static final float[][] STICKERS = new float[][] |
|
| 197 |
{
|
|
| 198 |
{ -0.5f, -0.5f, 0.5f, -0.5f, 0.5f, 0.5f, -0.5f, 0.5f },
|
|
| 199 |
{ -0.3125f, 0.4375f, -0.3125f, -0.1875f, 0.0f, -0.5f, 0.3125f, -0.1875f, 0.3125f, 0.4375f }
|
|
| 200 |
}; |
|
| 201 |
|
|
| 202 |
private static MeshBase[] mMeshes; |
|
| 137 | 203 |
|
| 138 | 204 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 139 | 205 |
|
| ... | ... | |
| 144 | 210 |
} |
| 145 | 211 |
|
| 146 | 212 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 147 |
// TODO |
|
| 148 | 213 |
|
| 149 | 214 |
double[][] getVertices(int cubitType) |
| 150 | 215 |
{
|
| 216 |
if( cubitType==0 ) return VERTICES_CORNER; |
|
| 217 |
if( cubitType==1 ) return VERTICES_EDGE; |
|
| 151 | 218 |
return null; |
| 152 | 219 |
} |
| 153 | 220 |
|
| 154 | 221 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 155 |
// TODO |
|
| 156 | 222 |
|
| 157 | 223 |
int[][] getVertIndexes(int cubitType) |
| 158 | 224 |
{
|
| 225 |
if( cubitType==0 ) return VERT_INDEXES_CORNER; |
|
| 226 |
if( cubitType==1 ) return VERT_INDEXES_EDGE; |
|
| 159 | 227 |
return null; |
| 160 | 228 |
} |
| 161 | 229 |
|
| ... | ... | |
| 263 | 331 |
|
| 264 | 332 |
MeshBase createCubitMesh(int cubit, int numLayers) |
| 265 | 333 |
{
|
| 334 |
if( mMeshes==null ) |
|
| 335 |
{
|
|
| 336 |
FactoryCubit factory = FactoryCubit.getInstance(); |
|
| 337 |
factory.clear(); |
|
| 338 |
mMeshes = new MeshBase[2]; |
|
| 339 |
} |
|
| 340 |
|
|
| 266 | 341 |
MeshBase mesh; |
| 267 | 342 |
|
| 268 | 343 |
if( cubit<8 ) |
| 269 | 344 |
{
|
| 270 |
if( mCornerMesh==null ) mCornerMesh = FactoryCubit.getInstance().createRediCornerMesh(); |
|
| 271 |
mesh = mCornerMesh.copy(true); |
|
| 345 |
if( mMeshes[0]==null ) |
|
| 346 |
{
|
|
| 347 |
float[][] bands= new float[][] |
|
| 348 |
{
|
|
| 349 |
{0.06f,35,0.5f,0.7f,6,2,2},
|
|
| 350 |
{0.00f, 0,1.0f,0.0f,2,0,0}
|
|
| 351 |
}; |
|
| 352 |
int[] bandIndexes = new int[] { 0,0,0,1,1,1 };
|
|
| 353 |
float[][] corners = new float[][] { {0.06f,0.12f} };
|
|
| 354 |
int[] cornerIndexes = new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
|
|
| 355 |
float[][] centers = new float[][] { { 0.0f, 0.0f, 0.0f} };
|
|
| 356 |
int[] centerIndexes = new int[] { -1,0,-1,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 };
|
|
| 357 |
|
|
| 358 |
FactoryCubit factory = FactoryCubit.getInstance(); |
|
| 359 |
factory.createNewFaceTransform(VERTICES_CORNER,VERT_INDEXES_CORNER); |
|
| 360 |
mMeshes[0] = factory.createRoundedSolid(VERTICES_CORNER, VERT_INDEXES_CORNER, |
|
| 361 |
bands, bandIndexes, |
|
| 362 |
corners, cornerIndexes, |
|
| 363 |
centers, centerIndexes, |
|
| 364 |
getNumCubitFaces() ); |
|
| 365 |
} |
|
| 366 |
mesh = mMeshes[0].copy(true); |
|
| 272 | 367 |
} |
| 273 | 368 |
else |
| 274 | 369 |
{
|
| 275 |
if( mEdgeMesh==null ) mEdgeMesh = FactoryCubit.getInstance().createRediEdgeMesh(); |
|
| 276 |
mesh = mEdgeMesh.copy(true); |
|
| 370 |
if( mMeshes[1]==null ) |
|
| 371 |
{
|
|
| 372 |
float[][] bands= new float[][] |
|
| 373 |
{
|
|
| 374 |
{0.038f,35,0.250f,0.7f, 7,2,2},
|
|
| 375 |
{0.020f,35,0.125f,0.2f, 3,1,2},
|
|
| 376 |
{0.020f,35,0.125f,0.2f, 3,1,1}
|
|
| 377 |
}; |
|
| 378 |
int[] bandIndexes = new int[] { 0,0,1,1,2,2 };
|
|
| 379 |
float[][] corners = new float[][] { {0.06f,0.20f} };
|
|
| 380 |
int[] cornerIndexes = new int[] { 0,0,-1,-1,-1,-1,-1,-1 };
|
|
| 381 |
float[][] centers = new float[][] { { 0.0f,-0.75f,-0.75f} };
|
|
| 382 |
int[] centerIndexes = new int[] { 0,0,-1,-1,-1,-1,-1,-1 };
|
|
| 383 |
|
|
| 384 |
FactoryCubit factory = FactoryCubit.getInstance(); |
|
| 385 |
factory.createNewFaceTransform(VERTICES_EDGE,VERT_INDEXES_EDGE); |
|
| 386 |
mMeshes[1] = factory.createRoundedSolid(VERTICES_EDGE, VERT_INDEXES_EDGE, |
|
| 387 |
bands, bandIndexes, |
|
| 388 |
corners, cornerIndexes, |
|
| 389 |
centers, centerIndexes, |
|
| 390 |
getNumCubitFaces() ); |
|
| 391 |
} |
|
| 392 |
mesh = mMeshes[1].copy(true); |
|
| 277 | 393 |
} |
| 278 | 394 |
|
| 279 | 395 |
MatrixEffectQuaternion quat = new MatrixEffectQuaternion( getQuat(cubit), new Static3D(0,0,0) ); |
| ... | ... | |
| 294 | 410 |
void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top) |
| 295 | 411 |
{
|
| 296 | 412 |
int COLORS = FACE_COLORS.length; |
| 297 |
FactorySticker factory = FactorySticker.getInstance(); |
|
| 413 |
int stickerType = face/COLORS; |
|
| 414 |
float R,S; |
|
| 298 | 415 |
|
| 299 |
if( face<COLORS )
|
|
| 416 |
switch(stickerType)
|
|
| 300 | 417 |
{
|
| 301 |
float F = 0.5f; |
|
| 302 |
float R = 0.10f; |
|
| 303 |
float S = 0.10f; |
|
| 304 |
float[] vertices = { -F,-F, +F,-F, +F,+F, -F,+F};
|
|
| 305 |
|
|
| 306 |
factory.drawRoundedPolygon(canvas, paint, left, top, vertices, S, FACE_COLORS[face], R); |
|
| 418 |
case 0: R = 0.09f; S = 0.09f; break; |
|
| 419 |
case 1: R = 0.06f; S = 0.06f; break; |
|
| 420 |
default: R = 0.00f; S = 0.00f; break; |
|
| 307 | 421 |
} |
| 308 |
else |
|
| 309 |
{
|
|
| 310 |
float F = 0.25f; |
|
| 311 |
float R = 0.05f; |
|
| 312 |
float S = 0.05f; |
|
| 313 |
float[] vertices = { -F,+F, -F,-F, 0, -2*F, +F,-F, +F,+F };
|
|
| 314 | 422 |
|
| 315 |
factory.drawRoundedPolygon(canvas, paint, left, top, vertices, S, FACE_COLORS[face-COLORS], R);
|
|
| 316 |
}
|
|
| 423 |
FactorySticker factory = FactorySticker.getInstance();
|
|
| 424 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[stickerType], S, FACE_COLORS[face%COLORS], R);
|
|
| 317 | 425 |
} |
| 318 | 426 |
|
| 319 | 427 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
Also available in: Unified diff
Convert the Redi Cube to the new engine.