CubitFactory: unify creating MeshPolygon bands.
Play State: Recreate all 3 PopupWindows.
More debugging for the case of suspicious submits.
Swap Redi with Helicopter.
More unification in CubitFactory.
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.
Unification of the way we round the corners of various cubits.
Bugfix for a rare Firebase crash.
Improve Analytics reports
The Redi Cube should be finished now.
Minor.
Redi icons.
Add the Redi Cube: part3.
Add the Redi Cube: part2.
Add the Redi Cube: part1.
Work around a rare crash on startup
Correct a bug computing Hash and immediatelly bump to 1.5.2
adjust requesting for review a bit more - now it will happen after a user has launched the app twice and played 7 times.
adjust the objects some more.
- after some time using it, request an App review- some tweaking for the way the objects look (set internal_color to something slightly lighter than pure black, round the corners of the stickers better)- set internal_node ratio to 1.42, this way the objects never get cut
Simplify OpenGL error dialog. Show it only once.
Simplify drawing textures.
Minor
Brighter background.
Bigger 'OK' button in Dialogs.
Transparent Buttons.
1) report all solved levels to Analytics2) automatically dismiss the NewRecord and Solved dialogs when one backs from the Done state.
Make the RubikScores class thread-safe.
New meshes for the Diamond and the Pyraminxes.
Icons for the Diamond.
Add a CubitFactory and convert all objects to use it. Biggest change is thr Pyramiinx which now uses a lattice of Octahedrons and Tetrahedrons, just like the Diamond.
Fix Diamond's isSolved()
Progress with the Diamond. Everything working except for the isSolved(): turns out the center cubits can end up rotated along the face by multitudes of 120 degrees.
Progress with the Diamond. Everything working, expect one thing: half of the faces are upside down, and computing offset doesn't work on those faces properly.
Make the top and bottom bars transparent, above the GLSurfaceView.
Progress with the Skewb Diamond.
Progress with the Skewb Diamond - it is rendered correctly now.
Rename some classes.
Rename 'RubikMovement' to 'Movement'
1) correction for Dino4's isSolved() [ remember about the mirror! ]2) beginnings of support for the Skewb Diamond
Fully support the 4-color Dino.
Add the 4-color Dino.
Still one thing needs to be done about it: randomization of Moves (now sometimes in Level 1 the randomized move leads to an already solved position)
Add lock button.
Slight correction for devices which have scrWidth>scrHeight ( Huawei Mate Xs! )
Do not forget the amount an Object has been changed in size when we switch between Objects.
Compute the size of the Solver icon correctly.
Apply a hack so that the App enters fullscreen modee on some Huawei devices.
Remove LAYOUT_STABLE from the UI flags since that was causing trembling of the Scores dialog in some platforms.
Progress with UI
Make the keyboard visible again
Rework the bottom pane
Remove Navigation Bar in the last case, when we were popping out a PopupWindow!Navigation Bar fully gone now!
Make it so that the Navigation Bar does not re-appear when we pop up a DialogFragment.
Now there's noly 1 case when it still reappears: it's when we pop up a PopupWindow.
Progress with Play state.
Add hiding the Navigation bar (still unfinished, the bar re-appears when a DialogFragment or a PopupWindow appears)Integrate the Level Spinner and the Play button into oneMove the Menu button up
DMesh for the Helicopter.
Icons for the Helicopter.
Fix rotations of the Helicopter.
More support for the Helicopter.
Beginnings of support for the Helicopter.
Correct the Dino mesh.
Skewb finished?
Skewb Mesh.
Icons for the Skewb.
Progress with the Skewb.
Beginnings of support for the Skewb.
Make the ObjectPopup a 2D grid - corrections.
Make the ObjectPopup a 2D grid.
Improve the Scores dialog: now level sections are added one-by-one.
New meshes.
Improve Pyraminx Mesh
Convert RubikDino to the new Polygon mesh.
Tweaks for the new RubikPyraminx mesh so it looks better.
Convert RubikPyraminx to the new MeshPolygon - better quality of the mesh and less vertices!
Convert RubikCubes to the new MeshPolygon - better quality of the mesh and less vertices!
Fix for a crasher.
Rename Meshes.
Fix: nwo we need to explicitly set mesh center to negative Z if we want to GLOW a flat object.
Fix for Samsung Android 5
Fix for one bug seen in Firebase and additional debugging for another.
Finally fix the Dino's 'isSolved()' - Dino can be mirrored and then it is also solved!
Fix detecting if an Object is solved. Before, the generic Cubit.thereIsNoVisibleDifference(0 would not work correctly in case of the Dino.
Adjust randomizing new rotations so that:
1) it works for basicAngle=5 (Megaminx) (so now basicAngle=2,3,4,5 supported)2) it leaves the decision as to what can be the next rotation to the Object class, as in case of certain Objects (the Dino, or the Helicopter, the Megaminx) the next rotation doesn't have to 'intersect' the old rotation always when oldRotAxis != newRotAxis (that's so simple only in case of the Cube and - only partly - the Pyraminx!)
Add the Dino dmesh file.
Fix the way we continue rotation: when rotating a layer, we need to be doing it with respect to the RotAxis which has been first casted to the touched face, and only then this casted one is casted to the surface of the screen.
Before we were casting the rotAxis directly to the screen without the intermediate casting to the face, which doesn't really work in case of the Dino: if the touched face is rotated away by quite a lot, the rotAxis is then completely counterintuitive.
Major progress with Dino; rotations (almost?) work now.
A bit less Sink effect (1.25) when creating the individual cubits of the Dino - with the previous 1.30 there was a bit of an artifact visible when rotating.
Fix the bug reported by Antonio Campos Galán: sometimes the app would not detect that the Cube is solved.
Progress with Dino Movement
Introduce separate ROT_AXIS and FACE_AXIS ( step 2 )
Introduce separate ROT_AXIS and FACE_AXIS ( step 1 )