MOve the FOV from ObjectList to individual object classes.
Introduce abstract 4,6,8 adn 12 classes.
Move the Movement class from ObjectList to individual object classes.
Increase NODE_RATIO, i.e. the height/width ratio of the DistortedNode behind the object (before with 1.4, if one scrambled the Mirror Cube and made it the largest possible, corners were cut off form the top and bottom)
Add Mirror Cube 2x2 and 3x3.
Make object scrambling abstract (well, almost - with exception of Square-1 - this theoretically could also be done the generic way, but this would require almost 20000 'ScrambleStates')
Remove statics from the TwistyObject class.
Remove statics from the Ultimate class.
Remove statics from the Minx classes.
Remove statics from the Cube classes.
Fix the Square-2 isSolved() (it was wrong even before!)
Introduce pseudorandom balancing into scrambling in case of the two Dinos (from now on, the more times a particular (ax,layer) combination has been chosen already in the scrambling sequence, the less likely it is to be chosen next).Fix Dino6 - isSolved(). Sadly, it cannot be the geeneric function - it needs to be another special case.
auto-compute the bandaged status from dimension of the CENTERS. Make 'computeBitmapFromRow' generic for bandageed and not bandaged objects.
Remove the last 'isSolved()' (from Dino4) and put it to the parent class as a special case.
Standarize the 'isSolved()' method: now all objects, except one (Dino4) have a standard isSolved().This incidentally also fixes detection of the solved state in case of Diamond4, i.e. a Master FTO.
Come back to creating the objects from mesh.
Finally remove cubit creation from the implementation classes and move it to the TwistyObject.
Move 1) bandaged 3x3 2) normals cubes 3) octahedrons 4) both dinos to the new cubit creation scheme.
Important step towards making the implementation of an individual puzzle code-free (i.e. data-only): move the 'MeshBase[] mMeshes' variable from the individual classes to the parent TwistyObject.
Move the TwistyObject.retCubePosition() to the solver.
Standarize drawing stickers of a twisty puzzle. From now on, there's no 'sticker drawing' code in the individual classes, only some constants.
TwistyObject's ObejctScreenRatio and InitScreenRatio shouldn't be static. Make them non-static.Otherwise, if the current object is, say, a cube (initSR=0.5), we fire up tutorials and start a tutorial for something with vastly different ObjectScreenRatio (Jing- initSR=1.64), then come back to the Main Activity - so there's a cube on the screen again - the ratios stay at their Jing values, which screws up detection of rotations.
Lots of changes :)
Bugfix
Workaround for a crash.
Preparation for 'smart scrambling' : introduce the total number of scrambles to the 'randomizeNewScramble' function.
Square-2: progress.
Square-1: looks to be finished.
Square-1: implement the fact that corners might bandage the puzzle.
Square-1: this is a shape-shifter; we cannot just clamp the Cubit positions to the initial list of positions.Do so only if the minError is appropriately low.
Make it possible for an object to have different 'cuts' along each of its axis.
Make it possible for an object to have different 'basicAngles' along each of its axis.
Hide more stuff in the TwistyObject class.
Remove the need for RowChances.
Make it possible to have some objects created from dmesh, and others - bootstrapped programmatically.
Face-Turning Octahedron & Skewb Ultimate meshes.
Progress with Skewb Ultimate.
Create new meshes.
Simplify.
Objects: tidy up some repeated code.
Convert the second and third object, the Pyraminx and the Diamond, to the new Cubit-creating engine.
Convert the first object, the Cube, to the new Cubit-creating engine.
Move Factories to the 'helpers' package.
Master Kilominx: mesh.
Progress making the Diamond class support any size.
Refactor the automatic scrambling. From now on, it is not needed to care about single and double turns when randomizing a new turn.
Change the automatic scramble API in the TwistyObject - in preparation for automatic scrambles in the Bandaged Objects.
Switch on Dmeshes - in light of the previous fix, they work now.
Make manual scrambling work.
Change the Cubit center from a Static3D to a float[].The point: now we can have more than one center, and bandaged objects need more than one, because in this way they are going to fill up their RotationRow bitmaps.
Change Cubit.mRotationRow[] from an index pointing at a single rotating layer to a bitmap potentially pointing at several layers.(in preparation for bandaged objects)
Simplifications.
Simplification with objects.
Beginnings of support for bandaged versions of the 3x3 cube.
Fix movements of objects - before it really worked only when an object's FOV was about 60 degrees.
Add Gigaminx dmesh.
Do not block the UI if, for some reason, some of the effects failed to get added to the Queue. Just fail to rotate.
Megaminx mesh.
Progress with Megaminx. Darken the RED color.
Beginnings of Megaminx & Gigaminx
Darken the orange color; lower the perspective FOV angle when playing with the Minx.
Skewb Diamond: make the color scheme more standard.
Make the color scheme more standard.
Plug two more memory leaks.
Kilominx: mesh
Progress with the Kilominx.
Megaminx family: part1 (doesn't work yet)
Rex Cube - mesh.
Rex Cube - new mesh, textures and icon.
Rex Cube Mesh
Bump version to 1.6.1
Adding Rex Cube - take 1 (doesn't work yet)
Preparation for the Object Info popup: add the name, inventor, complexity info to each object.
Mesh for the Ivy.
Even more debugs for the 'failed to restore preferences' mystery.
Minor.
1) Progress with the Ivy2) further refine defense against failing to restore preferences.
Beginnings of the Ivy Cube.
Missing meshes; fix the Solver.
New Meshes for all objects.
More error reporting - this time in Scores.
Make the texture multi-row: avoid the maximum texture size.
Report to Crashlytics if we fail to restore preferencees (2)
Report to Crashlytics if we fail to restore preferencees.
Report to Crashlytics if the fail to set texture due to it being too large.
Progress with Skewb familty; separate StickerFactory class.
Spearate the concept of number of layers of an object and its size.In case of the Skewb family, this is no longer the same (Master Skewb has 3 layers but it's twice bigger than the 2-layered Skewb)
Objects must explicitly provide a list of offsets specifying where the cut planes are (rather than just a BASIC_STEP - the width of the layer - which is insufficient in case of objects which have layers of vastly different width, like the Master Skewb)
Move computation of the rotation rows to the Object from Cubits.
Beginnings of support for any-sized Skewb.
New meshes.
CubitFactory: unify creating MeshPolygon bands.
More debugging for the case of suspicious submits.
New API for the library: add an empty texture component to a Mesh.Use this in thr Magic Cube to add empty texture components to some types of cubits.
The Redi Cube should be finished now.
Add the Redi Cube: part1.
Work around a rare crash on startup
adjust the objects some more.