Revision c0b37c89
Added by Leszek Koltunski about 5 years ago
| src/main/java/org/distorted/objects/RubikCube.java | ||
|---|---|---|
| 28 | 28 |
import org.distorted.library.effect.VertexEffectDeform; |
| 29 | 29 |
import org.distorted.library.effect.VertexEffectMove; |
| 30 | 30 |
import org.distorted.library.effect.VertexEffectRotate; |
| 31 |
import org.distorted.library.effect.VertexEffectSink; |
|
| 32 | 31 |
import org.distorted.library.main.DistortedEffects; |
| 33 | 32 |
import org.distorted.library.main.DistortedTexture; |
| 34 | 33 |
import org.distorted.library.mesh.MeshBase; |
| 35 | 34 |
import org.distorted.library.mesh.MeshJoined; |
| 35 |
import org.distorted.library.mesh.MeshPolygon; |
|
| 36 | 36 |
import org.distorted.library.mesh.MeshSquare; |
| 37 | 37 |
import org.distorted.library.type.Static1D; |
| 38 | 38 |
import org.distorted.library.type.Static3D; |
| ... | ... | |
| 196 | 196 |
int size = getSize(); |
| 197 | 197 |
int ordinal= RubikObjectList.CUBE.ordinal(); |
| 198 | 198 |
int index = RubikObjectList.getSizeIndex(ordinal,size); |
| 199 |
float[] loc; |
|
| 199 |
float[] bands; |
|
| 200 |
float D = 0.027f; |
|
| 201 |
float E = 0.5f-D; |
|
| 202 |
float[] vertices = { -E,-E, +E,-E, +E,+E, -E,+E };
|
|
| 203 |
int extraI, extraV; |
|
| 200 | 204 |
|
| 201 | 205 |
switch(size) |
| 202 | 206 |
{
|
| 203 |
case 5 : loc = new float[] { -0.5f, 0.05f, 0.1f, 0.35f, 0.35f, 0.1f, 0.05f };
|
|
| 207 |
case 2 : bands = new float[] { 1.0f ,-D,
|
|
| 208 |
1.0f-D/2,-D*0.45f, |
|
| 209 |
1.0f-D ,-D*0.80f, |
|
| 210 |
1.0f-2*D, 0.0f, |
|
| 211 |
0.50f, 0.040f, |
|
| 212 |
0.0f, 0.048f }; |
|
| 213 |
extraI = 2; |
|
| 214 |
extraV = 2; |
|
| 204 | 215 |
break; |
| 205 |
case 2 : loc = new float[] { -0.5f, 0.03f, 0.05f, 0.07f, 0.20f, 0.30f, 0.20f, 0.07f, 0.05f, 0.03f };
|
|
| 216 |
case 3 : bands = new float[] { 1.0f ,-D,
|
|
| 217 |
1.0f-D*1.2f,-D*0.55f, |
|
| 218 |
1.0f-2*D, 0.0f, |
|
| 219 |
0.50f, 0.040f, |
|
| 220 |
0.0f, 0.048f }; |
|
| 221 |
extraI = 2; |
|
| 222 |
extraV = 2; |
|
| 223 |
break; |
|
| 224 |
case 4 : bands = new float[] { 1.0f ,-D,
|
|
| 225 |
1.0f-D*1.2f,-D*0.55f, |
|
| 226 |
1.0f-2*D, 0.0f, |
|
| 227 |
0.50f, 0.040f, |
|
| 228 |
0.0f, 0.048f }; |
|
| 229 |
extraI = 1; |
|
| 230 |
extraV = 2; |
|
| 231 |
break; |
|
| 232 |
default: bands = new float[] { 1.0f ,-D,
|
|
| 233 |
1.0f-2*D, 0.0f, |
|
| 234 |
0.50f, 0.025f, |
|
| 235 |
0.0f, 0.030f }; |
|
| 236 |
extraI = 1; |
|
| 237 |
extraV = 1; |
|
| 206 | 238 |
break; |
| 207 |
default: loc = new float[] { -0.5f, 0.04f, 0.06f, 0.25f, 0.30f, 0.25f, 0.06f, 0.04f };
|
|
| 208 | 239 |
} |
| 209 | 240 |
|
| 210 |
return createCubitMesh(index,loc);
|
|
| 241 |
return createCubitMesh(index,vertices,bands,extraI,extraV);
|
|
| 211 | 242 |
} |
| 212 | 243 |
|
| 213 | 244 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 214 | 245 |
|
| 215 |
MeshBase createCubitMesh(int index, float[] loc)
|
|
| 246 |
MeshBase createCubitMesh(int index, float[] vertices, float[] bands, int extraI, int extraV)
|
|
| 216 | 247 |
{
|
| 217 | 248 |
if( mMeshes==null ) |
| 218 | 249 |
{
|
| ... | ... | |
| 223 | 254 |
{
|
| 224 | 255 |
final int MESHES=6; |
| 225 | 256 |
int association = 1; |
| 226 |
MeshBase[] meshes = new MeshSquare[MESHES];
|
|
| 227 |
meshes[0] = new MeshSquare(loc,loc);
|
|
| 257 |
MeshBase[] meshes = new MeshPolygon[MESHES];
|
|
| 258 |
meshes[0] = new MeshPolygon(vertices,bands,extraI,extraV);
|
|
| 228 | 259 |
meshes[0].setEffectAssociation(0,association,0); |
| 229 | 260 |
|
| 230 | 261 |
for(int i=1; i<MESHES; i++) |
| ... | ... | |
| 290 | 321 |
VertexEffectDeform effect12= new VertexEffectDeform(dVec6, dRad, dCen6, dReg); |
| 291 | 322 |
VertexEffectDeform effect13= new VertexEffectDeform(dVec7, dRad, dCen7, dReg); |
| 292 | 323 |
|
| 293 |
VertexEffectSink effect14= new VertexEffectSink( new Static1D(1.5f), center, new Static4D(0,0,0,0.72f) ); |
|
| 294 |
|
|
| 295 | 324 |
mMeshes[index].apply(effect0); |
| 296 | 325 |
mMeshes[index].apply(effect1); |
| 297 | 326 |
mMeshes[index].apply(effect2); |
| ... | ... | |
| 306 | 335 |
mMeshes[index].apply(effect11); |
| 307 | 336 |
mMeshes[index].apply(effect12); |
| 308 | 337 |
mMeshes[index].apply(effect13); |
| 309 |
mMeshes[index].apply(effect14); |
|
| 310 | 338 |
|
| 311 | 339 |
mMeshes[index].mergeEffComponents(); |
| 312 | 340 |
} |
Also available in: Unified diff
Convert RubikCubes to the new MeshPolygon - better quality of the mesh and less vertices!