Summary by Kiril

We show the parts of the instructions in the tree-explorer. We can select them. Instructions are delivered compressed with Draco. A lot of other small improvements.

Table of contents

Platform

[IC-1.3] Implement GltfPathToDracoCompressedGltfPathProcessor

There is a new processor. That makes DRACO compressed gltf files.

Draco compression has two main pros: - The users will see the robot models much faster if the robots are big - The
files on the server will be much smaller.

How to see the differenece? 1. Choose one of your big robots that is build before 01.04.2020. 2. Refresh the page with
clear cache (Ctrl+F5) 3. Check how fast the instructions are loaded. Is there any lag ? 4. Rebuild your robot. 5.
Again refresh the page with clear cache (Ctrl+F5) 6. Check now the speed of the instructions.

[IS-6.0] Add jsdoc to IS.Core#init method.


/** * <p>Initializes the extension. This method is called when the {@link IS.Core} in which this extension is
registered, is initialized.</p> * * <p>{@link IS.Extension#init} plays a role of a constructor of the
extension. Each extension is constructed before the IS.Core is started * and is probably constructed in an
environment where it can not properly work - like a missing jQuery or a document that is not loaded. * The init
method is a "delayed constructor" of the extension and it is called in a environment where the IS.Core is
loaded. This could be * when the document is loaded, or could be another state depending on the IS.Core</p> *
* <p>The method could be overriden by subclasses. * Check {@link IS.GCC.Tools.OverrideMethod} on how to
property override it to allow for GCC compilation</p> * * @export * @param {IS.Core} isCore the core in which
this extension operates * @param {Object} config optional configuration specified when constructing the extension */
init(isCore, config) { this._isCore = isCore; this._config = config; }

Would be available in 6.0.0.pre.99


[IS-6.0] Add information about what is @author and when and how it should be used

When developing extension it is important to understand the purpose of the @author attribute in classes.


@author

<p>The <strong>@author</strong> annotations is used on the class level. The two names of the author of the class is<br>shown.</p>

<p>/** * @author Kiril Mitov */ class MyExtension = class extends IS.Extension { }</p>

<p>The goal of the <strong>@author</strong> attribute is to show who is the author of the initial idea of the class and<br>who should we refer to for further explanation of the idea and goal of the class (when this is not visible from the<br>interface and from the documentation of the class).</p>

<p>The author is the go to person for question not about the implementation of this class, but for its idea. The<br>implementation should be checked with 'git blame' to see who has worked on a specific line of code and<br>specific method to further ask them for clarifications.</p>

<p>When the idea is significantly changed, eg. public API methods are added or removed then you should add yourself as an<br>author of the class.</p>

<p>If the idea is entirely new probably the class should be deleted, renamed and a new author should be added.</p>


[IS-6.0] IS.Core#scheduleNotify() should properly report if you are trying to notify for an event that is not
registered

Exception is now

Cannot find an event registered for name: '${eventName}'


[IS-6.0] Show a message and overlay when user tries to arrive on filtered step. Tell her she can't

Trying to go to a step which is filtered will now trigger an overlay.

Steps to reproduce:

  1. Log out of your account, if you are logged in.
  2. Go to

    https://www.fllcasts.com/materials/882-kiddo-the-compact-roller-coaster-box-robot-for-robotics-competitions

  3. Select the 'Editing' tab
  4. Click on a grayed out node from the tree
  5. You should see an overlay pop up with a text saying:

"Hey, this is only a preview of these building instructions.

In order to view the step you've selected, you'll have to subscribe to FLLCasts."

This is useful, because we can now provide information as to why you cannot view a certain step when previewing a
robots instructions and trying to visit a step which is not part of the preview.


The documentation is a bit cleaner now and the names of each class, interface or namespace is the full name now so we
don't have ambiguity with duplicate names.

Go to
https://sf.robopartans.com/jenkins/view/IS/job/is-release_pack%20Build%20and%20Release/ws/docs/index.html
and check out the navigation on the right.


[IS-6.0] Fix the auto play button focus.

Fixed a bug where it would keep the auto play button in focus after we've reached the end of the end of the
instructions.

Steps to reproduce:

  1. Go to
    https://www.fllcasts.com/materials/882-kiddo-the-compact-roller-coaster-box-robot-for-robotics-competitions
  2. Press the autoplay button.
  3. You will notice that while the autoplay is running, the button turns yellow, but when we reach the end of the
    instructions, the buttons turns white again.


[IS-6.0] Rotate with fingers on phones and tables is not working for babylon scenes. Zoom is also not working.
Fullscreen is kind of working, but on resize is rasterizing the image on iPad.

When people on phone or tablet go to the instructions. They can zoom with a two finger pinch. They can pan with a two
finger swipe. They can rotate with a one finger swipe.

If they are using Safari they can use the fullscreen button to enter fullscreen mode. This is not recommended, because
the fullscreen API on mobile devises isn't supported and it does not behave in a satisfactory manner.


[IS-6.0-Fredi] Show parts in the tree-explorer. Allow for plug-in of parts and modules in the framework

Users can now go to the tree explorer and view the parts that are in a step.

Parts in steps IS Tree Explorer

When they hover they see a text: "Step number: #" To indicate which step they are on.


[IS-6.0-Fredi] Allow for selection of the parts.

Users can now go to the editing tab in an instruction:
https://www.fllcasts.com/materials/248-box-robot-active-attachment-at-the-top

When selecting parts in the tree-explorer the scene will put a bounding box around that part.


[IS-6.0.1] Display 'No parts list provided' when a parts list is not available.

When going to a material that does not have partsJson or partsSprite IS does not break.

  1. Go to https://www.fllcasts.com/materials/983-test-materials-for-is-6-0-1-failed-promise-in-is-parts-makes-everything-disappear
  2. Go to Development and open in SDK mode
  3. Upload a map file
  4. Go to Bill of materials
  5. There should be a text "No parts list provided".
  6. Go to Editing.
  7. Hover over a step.
  8. You should see the tool tip information and the page should not be broken.