Move actual solving the object to PreRender.
(before we had a 'solveObejct()' in preRender already, but that one just starts the Solve Effect!)
Minor
Abstract out some methods from the Movement classes. only two remain now: rowFromOffset and enabledAxis.
Make the Kilo and Megaminxes standard size (dodecahedron size=3,5, i.e. equal to numLayers so that DIST2D and DIST3D are standard)
Make the Ultimate standard size (dodecahedron size=2, i.e. equal to numLayers so that DIST2D and DIST3D are standard)
Make the Skewbs standard size (cube size=2,3, i.e. equal to numLayers so that DIST2D and DIST3D are standard)
Make Rex standard size (cube size=3, i.e. equal to numLayers so that DIST2D and DIST3D are standard)
Make Jing standard size (tetra size=2, i.e. equal to numLayers so that DIST2D and DIST3D are standard)
Make Ivy standard size (cube size=2, i.e. equal to numLayers so that DIST2D and DIST3D are standard)
Make Helicopter standard size (cube size=3, i.e. equal to numLayers so that DIST2D and DIST3D are standard)
On second thought, come back to Vector. The problem: before we had the potentially blocking function 'effectFinished' inside our synchronized block.
1) add missing call to BlockController.onPause() / onResume() to the Tutorial activity2) rearrange BlockController's error reporting to make the case where the MessageSender thread has died separate3) in such case, resurrect the thread4) simplify and harden the EffectMessageSender
Correct height of the tutorial dialog.
Up version to 1.8.6
Add Mirror 2x2 tutorials.
Increase NODE_RATIO, i.e. the height/width ratio of the DistortedNode behind the object (before with 1.4, if one scrambled the Mirror Cube and made it the largest possible, corners were cut off form the top and bottom)
Mirror Cubes: re-enable meshes; update meshes.
Mirror Cubes: make them still more off-center.
Mirror Cubes: make them a bit more off-center.
Mirror Cubes: add meshes and icons.
Add Mirror Cube 2x2 and 3x3.
Make object scrambling abstract (well, almost - with exception of Square-1 - this theoretically could also be done the generic way, but this would require almost 20000 'ScrambleStates')
Some more debugs for the case when the UI is blocked.
Also available in: Atom