Fix a long standing bug in the way we detect if a Cube or Pyraminx is solved. The reason for all those 'impossible' records being submitted.
Preparation for the Object Info popup: add the name, inventor, complexity info to each object.
New Ivy mesh.
Slight improvement for the Ivy Mesh.
Mesh for the Ivy.
Icons for the Ivy.
Progress with 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.
Progress with the Ivy
Bugfix
Beginnings of the Ivy Cube.
Missing meshes; fix the Solver.
New Meshes for all objects.
Icons for the Skewb Master.
More error reporting - this time in Scores.
Improve the Skewb; set max components to 110 in MeshBase so that all of Professor Skewb's components fit.
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.
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.
The Redi Cube should be finished now.
Redi icons.
Add the Redi Cube: part3.
Add the Redi Cube: part2.
Add the Redi Cube: part1.
Work around a rare crash on startup
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 drawing textures.
Minor
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.
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)
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.
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 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 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.