Major abstraction - automatically compute the 'computeRowFromOffset()' function from CUTS.Still one thing left: it appears like the CUTS of Mega/Kilominxes are not correct.
Move the Movement class from ObjectList to individual object classes.
Move actual solving the object to PreRender.
(before we had a 'solveObejct()' in preRender already, but that one just starts the Solve Effect!)
Fix the problem reported by Samsung -
1. Fire off the app2. minimize it, select 'Multi window'3. put some other app in the lower half of the screen4. close the lower app5. our app used to fail to display the upper and lower menu bars.
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.
Improve debugging in BlockController.
add possible scrolling to the 'object' popup in case the grid of objects does not fit on the screen.
Progress with RubikControl.
Lots of changes :)
Fix the reddening the Lock icon.
Fix a rare crash.
Introduce a BlockController - a watchdog which makes sure the Touch and UI blocks do not take too long.If it detecs a long block, it unblocks and reports the situation to Crashylytics.
Give visual indication when dragging is locked.
Change the 'Cube Back' icon when there are no moves to back.
Abstract the part that controls the 'Locked' and 'Back Moves' buttons from the two activities: the main one and the tutorial one.This code had been duplicated there.
Important bugfix: no we cannot unblock touch when WIN effect finishes, because
1) starting the WIN effect does not block touch in the first place2) it can happen that this unblocking happens when we have started finishing the rotation but haven't removed it yet...
Improve scrambling of the Minx'es and the Redi, which in full scramble mode were frequently leaving large corners unscrambled.
Backing moves: constant angle speed (part 2).
Backing moves: constant angle speed.
Make it possible for an object to have different 'basicAngles' along each of its axis.
improvements for FactorySticker
Square-1: beginnings
RubikControl: rotate the cube 2.
RubikControl: rotate the cube.
Simplify RubikSurfaceView and the touchscreen control.
RubikControl: fixes; progress.
Attach the control nodes directly to the screen, not to the Object Node.
Cube Control: step 2.
Rename 'state' to 'screen'
Minor.
- report the Graphics driver's Renderer and Version.- new Diamond, Skewb2 and Skewb3 meshes.
Rename packages
Fix the 6fad862b commit and remove the UI block in a proper way (i.e. the problem was that popping up the Object, Play or Menu windows was impossible while the 'WIN' glow was active)
Properly solve the issue with Qualcomm driver V@331 having buggy UBO size.
Comment eexplaining the recent 'gigaminx ban' on some platforms.
Relax the conditions when we do not support Gigaminx - looks like Adreno 30x has nothing to do with it, just driver version 331.
Another attempt at fixing tthings on early Qualcomm OpenGL ES 3.0 drivers.
The previous version does not work on Adreno 405 driver V@100, present for example in a Asus ZenPad 8.Revert the packed 'ivec2' UBO in the vertex shader back to a 'std140' ivec4. This comes at a price if bumping into the bug on Qualcomm driver version 331 on Adreno 308 - i.e. Samsung Galaxy J4+ again....
Bugfix for a crasher
Fix movements of objects - before it really worked only when an object's FOV was about 60 degrees.
Do not block the UI if, for some reason, some of the effects failed to get added to the Queue. Just fail to rotate.
Bugfixes as a result of the Samsung Galaxy J4+ investigation:
1) By default, switch off transform feedback in the main program. Create a new API 'needTransformFeedback()' to call if someone still needs TF in the main program.2) lower the default max number of vertex effects to 30....
Beginnings of Megaminx & Gigaminx
We now have much more effects possible, 100 by default - it is no longer needed to call setMax().
Do use 61 vertex effects (with the advent of Kilominx)
Progress with the Kilominx - rotations.
if a user has a verified name, set it as a GoogleAnalytics UserId
Fixes for the Rex Cube (still doesn't work)
Make the Tutorial Dialog look better
Change the way we request for reviews.
Progress creating the Tutorial Dialog.
Progress creating the Tutorial Activity.
Start creating the Tutorial Activity.
More support for using the library from more than one activity
Progress with using the Library in a second Activity.
New 'tutorial' activity.
Catch exceptions when rotating.
Do not permit clicking on the 'play' button if we are currently scrambling an object.
Avoid cutouts in a new way
Avoid the possible cutouts at the top of the screen.
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)
More debugging for the case of suspicious submits.
Improve Analytics reports
adjust requesting for review a bit more - now it will happen after a user has launched the app twice and played 7 times.
- 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.
1) report all solved levels to Analytics2) automatically dismiss the NewRecord and Solved dialogs when one backs from the Done state.
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.
Make the top and bottom bars transparent, above the GLSurfaceView.
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
Add lock button.
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
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.
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
Correct the Dino mesh.
Skewb Mesh.
Improve Pyraminx Mesh
Fix for one bug seen in Firebase and additional debugging for another.
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.
Progress with Dino Movement
Introduce separate ROT_AXIS and FACE_AXIS ( step 2 )
Introduce separate ROT_AXIS and FACE_AXIS ( step 1 )
Catch possible exceptions setting up the Renderer (possible on very old devices) and display the OpenGL error popup.
We need to pause an Activity in the following way:
1) Activity.onPause()2) View.onPause()3) Library.onPause()
otherwise sometimes there are artifacts when pausing!
Display the 'Privacy Policy' dialog (only if locale is set to ZH - chinese requirement)