Mode the 'iconMode' from static variable in ObjectControl to member varaible in TwistyObject (safer)
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.
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.
Introduce 'Simple' and 'Nice' meshes.
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.
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.
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.
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 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.
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 more code to objectlib.
Reename ObjectList to a more logical ObjectType.
Simplify ObjectList: now there's just one object per size.
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.
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
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.
Cube Control: step 2.
Rename 'state' to 'screen'
Rename packages