Mode the 'iconMode' from static variable in ObjectControl to member varaible in TwistyObject (safer)
Preparation for local creation of puzzles: remove the 'ObjectType' enum from TwistyObject class.
Downloaded Objects: subtle bugfix. We cannot use ObjectType in ObjectControl to check if two objects are the same because DownloadedObjects have ObjectType null !
Refactor RubikObject in preparation for creating RubikObjects from DownloadedObjects.
Re-organize tutorial list so that we can pull this one from JSON files.
Container Cube: tutorials.
Pyramorphix: tutorials
Pedro Filho's and Rafael Cinoto's Brazillian tutorials.
Fisher Cube: tutorials.
4x4 Mirror Blocks: tutorials.
Add debugging for the case when people submit suspicious records.
change order of KILO_5 and MEGA_3.
Change the order
Windmill Cube - tutorials
Remove 3 out of 4 object icons.
Improve the behaviour of the Config and Tutorial activities when in the 'PopUpMode'. Also, remember the current object in the COnfig activity so that when we put it to the background and resume - the object stays.
Trajber: tutorials.
Rearrange the Tutorial list.
Introduce 'Simple' and 'Nice' meshes.
Move the 'currObject' from RubikScreenPlay (WTF?) to RubikObjectList.
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.
Beginnings of the ConfigActivity.
Add info pane: part 1.
Better error reporting.
Make the ShapeChanging the default TouchControl during MODE_REPLACE.
Correct order of the tutorials.
Convert the theme to be a MaterialTheme and the TransparentImageButton to be a MaterialButton - the first forced by the second, and the second because a MaterialButton gives us control over the location of the icon in top of it. We need that because of the new 'solve/scramble' split-button in the lower right of the Play screen.
Fix problems with TwistyObjectNode 'object scale' property.Now this property is not part of the Node at all, but its initial value passed to the object in its constructor.
Bugfixes for crashes from Firebase.
Add 7x7 tutorials.
Tutorials for the 6x6
Move the main app to the 'J1M1' object creation mode, i.e. create them from the Json files and using the Dmesh fiels as well.
Make it possible for any app descending from the 'objectlib' to use any of the J0M0, J0M1, J1M0, J1M1 modes.
Remove ObjectType from a few moree places.
Remove dependancies on Firebase from objectlib.Report such errors to the application via the Interface.
Progress with PuzzleTester app.
new API to make is possible to adjust default scale factor in each TwistyObjectNode.(and use it in Tutorials, where the object needs to be smaller)
Major change: separate the notion of a TwistyObject and its Node. Now,
1) the Node stays when we change objects (this makes transitions faster)2) it's possible to just create an Object without adding it to the Screen (now app needs to explicitly create the Node and add it to its Screen itself)
Use the latest objectlib
Tutorials
Remove unneeded API.
Relax objectlib's requirements: it can be displayed not only on top of a DistortedScreen, but any DistortedFramebuffer.
Use the off-center objects to display the object in Tutorial mode properly.Now it is not covered by the right bar!
Further simplifications.
Remove the concept of a 'TwistyActivity' altogether.
Hide most of the TwistyActivity methods inside objectlib.
Move RubikControl to objectlib (as 'ObjectAutomator')Hide ObjectPreRender inside objectlib and move its APi to ObjectControl.
1. Remove 'db level' from objectlib (this belongs to the app!)2. change ScreenPlay's 'mObject' to be an ObjectType.
Simplifications
Move ObjectControl, the next big chunk of code, to objectlib.
Move PreRender to objectlib.This code is now shared betweeen the Rubik and Tutorial activities.
Move yet more code to objectlib.It's almost possible to move the PreRender to objectlib now.
Move yet more code to objectlib.
Move more code to objectlib.
Simplify TwistyObject's API.
Reename ObjectList to a more logical ObjectType.
Simplify ObjectList: now there's just one object per size.
Simplify objectlib's API.Correct a recently introduced bug with resetting texture maps.
Move QuatHelpeer to distorted-library
Remove all files that have been separated into a new library 'objectlib'
Prepare the 'objectlib' package to be separated into a library module
Refactoring: split the 'objects' package into two, 'objects' and 'objectlib'.The point: we're going to need to move the 'objectlib' stuff into its own library module, and that's because we're going to create a new app module which needs access to it.
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!)
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
Add Mirror 2x2 tutorials.
Mirror Cubes: make them still more off-center.
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.
New Jing and Master FTO tutorials.
Improve debugging in BlockController.
Lots of changes :)
When we're leaving the Tutorial activity, unblock everything.
Progress with RubikControl.
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.
Always set the back move icon when we clear moves
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.
Separate the notion of maxLevel (in DB) [which has to stay backwards-compatible with previous versions of the app] and 'numScrambles' - the number of times an objects gets scrambled in the 'full scramble' mode. Now the second can be whatever we want without breaking backwards compatibility.
Backing moves: constant angle speed (part 2).
Squares: add tutorials.Correct the order of objects in the tutorial dialog.
Make it possible for an object to have different 'basicAngles' along each of its axis.
Bugfix: make it impossible to rotate a cube when it is being scrambled in the Tutorial mode.
New tutorials.
Cube Control: step 2.
Rename 'state' to 'screen'
- report the Graphics driver's Renderer and Version.- new Diamond, Skewb2 and Skewb3 meshes.
Rename packages