progress with new sorting methods.
Next step toward separating TwistyObject metadata.
Big step toward separating TwistyObject metadata.
Remove all old UI 1.0 classes
Progress with PlayActivity
Make it possible to download objects with no extras file. Up VERSION_OBJECT_APP to 13.
remove 'MESH_NICE'
Major progress with version 2.0.0.
Major progress to version 2.0.0.
Seriously lower memory usage.
Remove the generic 'MINOR' object and extras versions from JsonWriter, and replace them with per-ObjectType values. This was the reason why objects which had their 'minor' (really: version) updated to '1' in the server then never updated the jsons with locally stored versions.
Move patterns and Kociemba solver to objectlib.
Fix marking objects as free.
Changes to the initialization - initialize the 'bought objects'
The 'stars earned' effect is done. Works only for newStars>0.Also, there is a crash in the graphics driver on my physical LG phone.
Switch off visible effects of IAP (all objects free, no 'stars' animation)
Partly merge the 'iap' branch.
Simplification for the new way of storing records.
objects,patterns: license.
Fix for a bug when in Turkey and Azerbaijan, the names of downloaded objects which contain the letter 'I' do not get translated to upper case correctly (part 2: fix 'toLowerCase()' )
Fix for a bug when in Turkey and Azerbaijan, the names of downloaded objects which contain the letter 'I' do not get transalted to upper case correctly.
Make sure we always display some icon in the Popup dialog, even if we fail to download one (improvement)
Make sure we always display some icon in the Popup dialog, even if we fail to download one.
Make 'downloaded' debugs controlled by a single boolean.
Downloaded Objects: bugfixes
Downloaded Objects more or less work now.
Refactor RubikObject in preparation for creating RubikObjects from DownloadedObjects.
Progress downloading objects and extras.
Re-organize tutorial list so that we can pull this one from JSON files.
Remove 3 out of 4 object icons.
Introduce 'Simple' and 'Nice' meshes.
Progress with Config UI.
In the 'magic' app, ObjectType is now only used in RubikObject and RubikObjectList classes and nowhere else.This is a major step towards being able to download objects from an online repository.
Progress replacing the enum ObjetType with the class RubikObjectList.
Rename some classes.
1) correction for Dino4's isSolved() [ remember about the mirror! ]2) beginnings of support for the Skewb Diamond
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)
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.
DMesh for the Helicopter.
Fix rotations of the Helicopter.
Skewb Mesh.
Progress with the Skewb.
Beginnings of support for the Skewb.
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.
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.
Major progress with Dino; rotations (almost?) work now.
Move the knowledge about colors of individual cubit faces down to each Object subclass.
Progress with RubikDino.
Progress with the Dino.
Beginnings of support for a new Object: the Dino.
Re-introduce possibility to dynamically create object mesh.
Introduce two-fingered object resize.
Object node: size of screenWidth.
Remove the 'MAIN' state.Fix one crasher with two-fingered dragging in the View.
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!)
Progress with dragging.
Simplify dragging. Now there's only 1 Quat, rather than the old way with two (Accumulated, Current).
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.
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!)
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.
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.
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)
Fix for the next crash seen in the field.
Fix for the previous fix :)
Fix a potential crasher ( do not set up a callback for end of rotation effect on the very first cubit that belongs to a rotation if all belonging cubits have not been set up yet )
Add a 'withdraw move' button to the Solving UI state.
Make chances to randimoze a given row when scrambling dependant on the type of Object.
The point: in case of the Cube, all rows should have equal chances. In case of the Pyraminx, the smaller the row, the smaller the chance should be. In particular the trivial 4 corners of the tetraherdon should have a very small chance to be selected.
Progress with the Solver - RubikCube.retObjectString() finished.
What remains to be done here: ban changing colors of the centers of 3x3x3 faces, this shouldn't be allowed!
Progress making the Solver state more abstract.
Make the Solver state more abstract.
Progress with the 3x3x3 Solver.
More support for the 3x3x3 Solver: more of the actual 3x3x3 solver mechanism.