Summary by Kiril

We can produce instructions with animations. We have created the concept of "-dev" extension that allows for extension developers to provide additional development tools for their extensions. We can control the IS through the Browser Console with a public API

Table of contents

[IC-1.2] Refactor exportforanimation as processor

It is now possible to build one Blender developed animation into your instrutions. You have to create a file that is '{stepNumber}.blender' and place it along with the source document in the source archive of an instructions. On build the instruction would have an animation

Demonstration

  1. Source file example https://s3.amazonaws.com/fllcasts/materials/srcs/000/000/248/9311b62bb6891096c60eb43d272a28ac511f8427/ActiveAttachmentTop.zip
  2. Result available at https://www.fllcasts.com/materials/248-box-robot-active-attachment-at-the-top

On the 9-th step it will have a blender animation.

[IC-1.2, Bug] Export for Stud.io is not working for single ldr files.

The issue was that we were removing the build.ini during the cleanup, but build.ini does not exists if the source is single ldr file

Demonstration

  1. Download a single LDR file as this.
  2. Pass it to the Jenkins build(if you have access) ISExportfor_studio, which will result in producing a zip with two files, one branded and one not, with all of the cables extracted and everything else packed in single file.

[IC-1.2, Bug] Material 951 has some "alien" elements

The issue comes from the fact that there are two bricks on the scene. When we import parts that share common subparts the geometry breaks. This is a known and identified issue and will be available in a future release.

Image for alien elements in instructions

[IS-6.0] Handle errors and wrong format on loading gltf files. We should be able to show gltf files without metadata. Just as simple Gltf(s)

Made it so we can load gltf files which don't have ai3d metadata in them

  1. Take a file without metadata https://trello-attachments.s3.amazonaws.com/55f7c6b46b0a9613084d68bc/5e144518ed45215a43378d90/5f7a60c75d90d18c18ada625814b7d3a/baked_animation.gltf
  2. Open an instruction in an SDK mode. - https://www.fllcasts.com/materials/846-bag-3-from-first-lego-league-2019-2020-city-shaper-challenge?mode=sdk
  3. Upload the file localy from the development tab
  4. See the model loaded as an instruction with a single step.

[IS-6.0] Merge Selection State implementation into the is-babylon_scene extension

Merged the SelectionState from the is-scenestate extension in the is-babylonscene extension

  1. There is a SelectionState that comes from is-scene_state. Documentation availabe at IS.SceneState.SelectionState.

[IS-6.0-Fredi] Support upload of GLB files

Upload is now possible. Button is in the development tab.

It contains one of the most beautiful implementation of our IS and the power that comes with it.

It has a IS.BabylonScene.ISceneProcessor that allows us to process the scene after loading from babylon and before loading the instructions tree from the scene. This allows us to skip a bug in Babylon and remove an extra root node. There is a IS.BabylonScene.RemoveExtraRootProcessor that does it. The beauty is that this is an extension and we can easily plug other processors for doing something with the scene before loading.

Demonstration

  1. Go to an instruction in SDK mode- https://www.fllcasts.com/materials/846-bag-3-from-first-lego-league-2019-2020-city-shaper-challenge?mode=sdk
  2. Open development tab and click save. File is saved.
  3. Select "Choose file" and upload this file to the Scene.

[IS-6.0-Fredi] Make the StepsTreeEditor movable on the Page.

The steps tree editor can now be moved around to a different part of the screen to make editing the steps easier

Demonstration

  1. Go to an instruction in SDK mode - https://www.fllcasts.com/materials/846-bag-3-from-first-lego-league-2019-2020-city-shaper-challenge?mode=sdk
  2. Open the development tab.
  3. Find the steps tree editor. There is a "Move" text next to it. Click with the mouse on it.
  4. Now click on the StepsTree editor and can move the editor.

[IS-6.0-Fredi] Extract an extension for working with the babylon scene in the console

There is a new extension available - is-babylon_scene-dev

Is::BabylonScene::Dev

Contains dev tools for working with the Babylon Scene.

Usage
BsListener

BsListener listens for babylon events and puts the scene and other things in the window. Check the documentation for {@link IS.BabylonScene.Dev.BsListener}

The BsListener does

A listener extension that puts the babylon scene in the window object. Useful for testing and for using the scene in the console Behaviours 1. Take the BABYLON Scene and add it to window['IS.BabylonScene.Dev.BsListener']['scene']

Demonstration

  1. Open an instruction in development tab - https://www.fllcasts.com/materials/846-bag-3-from-first-lego-league-2019-2020-city-shaper-challenge?mode=sdk
  2. Open browser console
  3. Type it
    const scene = window['IS.BabylonScene.Dev.BsListener']['scene']
  4. You can now use the 'scene' object as it is the BABYLON.Scene.

[IS-6.0-Fredi] Extract an extension for working with the steps-tree in the console. It is the is-steps_tree-dev

There is a new extension available - is-steps_tree-dev

Is::StepsTree::Dev

Contains dev tools for working with the Stepstree.

Usage
SListener

StListener listens for steps-tree events and puts the rootSteps and other things in the window. Check the documentation for {@link IS.StepsTree.Dev.StListener}

<script src='...ext/steps-treedev/register_st_listener.js'></script>

The StListener does

A listener extension that puts the rootStep in the window object. Useful for testing and for using the scene in the console Behaviours 1. Take the rootStep and add it to window['IS.StepsTree.Dev.StListener']['stepsTreeLoaded']

Demonstration

  1. Open an instruction in development tab - https://www.fllcasts.com/materials/846-bag-3-from-first-lego-league-2019-2020-city-shaper-challenge?mode=sdk
  2. Open browser console
  3. Type it
    const events = window['IS.StepsTree.Dev.StListener']['stepsTreeLoaded']
    const rootStep = events[0]['rootStep'];

You can now use the 'rootStep' object and its API.