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 )
Correct Dino row chances ( the middle row should never move! )
New Dino images.
Move the knowledge about colors of individual cubit faces down to each Object subclass.
Stop crashing when the last installed version has an Object remembered, then we install a new version without this Object in the RubikObjectList.
Progress with RubikDino.
Progress with the Dino.
Beginnings of support for a new Object: the Dino.
We need to up the version to 1.3.5 - new release to AppInChina because of the previous commit
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)
Correction of the size of '3x3x3 Solver' bitmaps.
Solving time - display it more accurately.
Make the Scores Dialog screen-size invariant.
Reinvent the Pattern Dialog (Part 3)
Reinvent the Pattern Dialog (Part 2)
Reinvent the Pattern Dialog (Part 1)
Introduce HUGE ui version.
Catch an error that sometimes happens in the field.
Introduce three sizes of UI images: small, medium, large.
Re-introduce possibility to dynamically create object mesh: part 2.
Re-introduce possibility to dynamically create object mesh.
Save the name of the current state to Shared Prefs (and not the ordinal which might change in the future!)
Speed up WinEffectGlow - MEDIUM quality is fully enough.
Introduce two-fingered object resize.
Make the margins and paddings proportional to screen size.
Shorten some strings
Object node: size of screenWidth.
Improvements to the Menu.
clear moves when the change the object.
cube_back and cube_solve buttons.
Remove the 'MAIN' state.Fix one crasher with two-fingered dragging in the View.
Improve setting text size in Spinners (forgotten part).
Improve setting text size in Spinners.
Improve rotations of the Pyraminx; synchronize begin/add/finish Rotation in the RubikObject (now it is possible to begin new rotation when an old one didn't finish yet!)
Improvements to the UI - make it proportional regardless of the physical screen size. (Part 7 - last 2 Dialogs)
Improvements to the UI - make it proportional regardless of the physical screen size. (Part 6 - next 5 Dialogs)
Improvements to the UI - make it proportional regardless of the physical screen size. (Part 5 - first 3 Dialogs)
Improvements to the UI - make it proportional regardless of the physical screen size. (Part 4)
Improvements to the UI - make it proportional regardless of the physical screen size. (Part 3)
Improvements to the UI - make it proportional regardless of the physical screen size. (Part 2)
Improvements to the UI - make it proportional regardless of the physical screen size. (Part 1)
Minor tweak.
Make the top three controls in the Play state reach all the way from the left to the right edge of the screen.
Move the 'Effects' thing to a button in the Play state.
Report to Firebase exceptions with dismissing the Main Dialog.
On object change, report FPS to Firebase
Two-fingered object rotation seems to be finished.
Progress with dragging.
Simplify dragging. Now there's only 1 Quat, rather than the old way with two (Accumulated, Current).
Progress with improvements for cube manipulation.
Initial attempt at two-finger rotation.Mostly works; still, one corner case doesnt:
- put two fingers down, start rotating- lift one of them up- put it back down
depending if we lifted the first or second finger, weird things may happen.
Further improve rotations of a Object layer - make them independent of physical screen size (now it depends on the angle of rotation and, if that's 0, on the speed (in inches of second) of the finger swipe done by the user.
Make the rotations and drag be independent of physical screen dimensions - take into account pixel density.
Split up the onTouch() part of the View.
Improvements for the way we rotate layers of Objects: make it possible to begin a rotation during a WIN effect.
Improvements for the way we rotate layers of Objects. (take the speed into account - so even if we rotated a layer of a Cube to less than 45 degrees, but we did it fast, do a 90 degree rotation!)
Only compile the Full, Normal & OIT programs when they are actually needed.
Take advantage of recent improvements to the library and stop allocating a queue of 4 FBOs - even if we are running on a Mali r12.
Read the meshes from .dmesh files (rather than compute them dynamically).This (along with single-mesh mode) hopefully makes the rendering much faster, while keeping the time needed for Object Change low.
The only downside: this increases the size of the release APK from 6 MB to 9.6 MB.
Speedup for rendering: cubes 2,3 contain better quality cubit faces (more vertices) than cubes 4,5.
Convert the PostRender to a PreRender, called before we render.This makes more sense as this way things are prepared for the very first render.
Bugfixes.
Minor speedup
Bump version to 1.2.2
More progreess porting RubikCube. Rotation mostly working now.
More progreess porting RubikCube.
Progreess porting RubikCube to the new SingleMesh mode.
Begin porting RubikCube to the new SingleMesh library. This will make rendering much faster - e.g. in case of Cube 5, instead of 98 renders of individual Cubits, there will be one render of the whole Mesh.
Port RubikCube to the new library.
Only show the OpenGL Error dialog when the underlying hardwarre does not support OpenGL ES 3.0.
Add OpenGL Error dialog.
Progress making it possible to apply Vertex Effects only to some Components of a Mesh.
Correct a crasher introduced in 1.2.0
Switch off showing FPS.
Report an Analytics event when a user changes State or Object.
Report a Crashlytics non-fatal if we fail to compile some shaders.
Hopefully get rid of the most common crash in the field right now by changing the States to always create all their Views from scratch.
1) Cube: convert it to the latest library. Main difference: objects are rendered better, individual cubits have rounded corners.2) Examples: some adjustments to MeshJoin & Predeform3) Library: fix a bug in main_vertex_shader's 'degree' function, which didn't work proprely in case of a vertex which was exactly at the center (i.e. vector PS was zero)