Introduce InitAssets. We'll use this later to pass on references to the tablebase file to the TwistyObject (so that it can use this for perfect scrambling)
Beginnings of support for AI Cube.
Produce new JSONs files (version 7, with new scrambling method)
Move scrambling to a new model where there are spearete scrambling 'algorithms' and 'edges' of the scrambling graph.Now each edge can contain a whole algorithm, i.e. a sequence of moves leading from state to state, which permits construction of scrambling for more complicated bandaged objects such as the AI cube....
Progress with the Camouflage 3x3x3.Now only proper scrambling remains.
Progress with the Camouflage 3x3x3.
Beginnings of support for the Camouflage 3x3x3.
Make the 4 built-in BandagedCuboids use the introduced InitData concept and remove all specific bandaged object classes.
Introduce InitData, a data structure used to initialize a TwistyObject.Current (optional) members: int[] numLayers, int param [intended: type of the Crazy 3x3 planet], float[][] pos [position of a bandaged cube] )
Introduce ObjectSignature that can incorporate 192-bit signatures (for 5x5x5 bandaged cubes).ObjectScrambler does not fully work yet.
Improvement for solved state detection of bandaged cuboids: now it should be always correct (except if one, among the cubitPositions, specifies a completely internal cubit - i.e. one with all faces black. Do not do that!)
Improvement for solved state detection of a flat cuboid (before the getCubitSolvedStatus() method was incorrectly detecting the internal cubits of such flat cuboids as edges - they do have two non-black faces!)
Bandaged: progress with creating the object.
Bandaged: progress.
Bandaged: generalize the FactoryBandagedCubit to be able to create bandaged cubits of any cuboid NxMxK where 1<=N,M,K<=5.
Bandaged 3x3: Improve looks
Preparation for Mixup Cube: take advantage of the recent bump in MAJOR_VERSION number and change the format of basicAngles to int[][] 'per-axis-per-layer' [ Mixup Cube has different basicAngle in its middle layers (8) - and different in its edge layers (4) ]
Properly detect which drivers are slow with compilation of TF programs.
On OpenGL ES 3.0, some drivers are veeeery slow linking a program which includes transform feedback - and such program is needed to apply vertex effects to meshes - which is needed to round corners of puzzle cubits.
Thus on 3.0 we switch off rounding corners of the meshes in the Creator mode, otherwise we'd need to wait about 24 seconds for the screen to appear!
Bandaged 3x3: speed up creation of a cube.
Bandaged 3x3: correct a bug in TwistyBandagedAbstract
Mode the 'iconMode' from static variable in ObjectControl to member varaible in TwistyObject (safer)
Bandaged 3x3: progress with saving.
Progress with FactoryBandaged.
Minor.
New, generic bandaged 3x3 class 'TwistyBandagedAbstract'.
Now, (almost!) any bandaged 3x3 can be created by extending this class and implementing one abstract method 'getPositions()'. Almost, because there's still one restriction: currently all cubits need to be one of the 5 allowed types: 1x1x1, 2x1x1, 3x1x1, 2x2x1, 2x2x2....
New, generalized ScrambleState generator that should work for any bandaged 3x3.
Preparation for drawing only the FRONT side of the cubit walls.
Standarize two next functions - getSolvedQuats and getSolvedFunctionIndex.Now all objects except Dino6, Dino4 and Square-2 have them the same.
Convert Mirrors and Bandaged.
Convert Ulti, Jing, Pyra, Diamond, Dinos, Redi, Skewbs, Ivy & Rex to the new scheme where the quaternion group is computed automatically.
Simplification.
Remove the need to provide the number of outer faces of a ObjectShape.
Finally remove the 'getCubitFaceColor()' API
Add the getFaceAxis() API and fill up the getDist3D() API.
Remove the 'getNumCubitFaces()' object API.
Progress towards removing the 'getNumCubitFaces()' object API.
Simplify.
Split ObjectShape into ObjectShape and ObjectFaceShape
Finally move the 'getVariantFaceColor()' method to the base class.
Progress standarising stickering.
Progress standarising stickering - adjust sticker radii based on cos of the angle at the sticker vertex.
Improve stickering - while drawing a sticker, set stencil to its area so the drawing does not encroach on the neighbouring stickers.
Progress
Initial commit
Introduce 'Simple' and 'Nice' meshes.
Make the ShapeChanging the default TouchControl during MODE_REPLACE.
Float vertices - scratchbook
Abstract out the TouchControl stuff in preparation for its new type - TouchControlShapeChanging.
Move the Movement to its own package; abstract out some stuff.
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.
JsonReader (?) finished: the creator app can now read objects from JSON files.
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)
Separate the notions of a sticker shape and a sticker color.
simplify sticker/color map.
Progress with serializing object to JSON: cubits.Only faceColorMap remains now.
Progress with serializing object to JSON: shapes.
Progress with serializing object to JSON: stickers, quats.
Progress with serializing object to JSON: rotations.
Reorg for writing the JSON
- remove the retarded NODE_RATIO from TwistyObject- more correctly estimate Cuboid's 'realSize' as an average of their 3 sizes.
make numLayers into an int[] (preparation for Cuboids)Caution: because of previous changes to cubit order in cube, the Solver is broken!
'IconMode' finished.
1) introduce possibility to move objects, i.e. display them not in the middle of the screen (not fully functional yet)2) do away with unneeded any more interface 'EffectController' - since ObjectPreRender is the only implementation now.
Remove the 'setupObject()' redundant API.
Move more code to objectlib.
Simplify ObjectList: now there's just one object per size.