Table of contents
- Platform
- [IC-1.3] Build of 345 finishes with strange error. We need to describe the error
- [IC-1.3] Material 855 can not be build
- [IC-1.3] Materials 789 can not be build
- [IC-1.3] 405 is failing to build
- [IC-1.3] When updated to pytest 5.4 the tests started to fail randomly.
- [IC-1.3] Material 723 is failing
- [IC-1.3] Material 721 is failing
- [IC-1.3] Material 785 can not be builded
- [IC-1.3] 773 can not be builded
- [IC-1.3] 548 can not be build
- [IC-1.3] 728 can not be build
- [IC-1.3] 750 can not be builded
- [IC-1.3] Material 758 can not be build
- [IC-1.3] Material 635 failed with sets.json
- [IC-1.3] Material 952 fails
- [IS-6.0.1] Article about Promise.finally(). Also cleaning up some Core code.
- [IS-6.0.1] Add a method that checks if an object implements an interface function.
- [IS-6.0.1] Make a better example for options traverser and what traversing means and why wtravera and why not getDescendats() and how the internalTraverser logic for return true works and why arrow function without brackets does and work and if it should work. It should be a fix
- [IS-6.0.1] Improve documentation for registering a new extension
- [IS-6.0.1] Tutorials for teaspoon
- [IS-6.0.1] In Microsoft Edge you can't change the steps with the left and the right arrow.
- Windows Machine
- Mac os X Catalina Machine
- [IS-6.0.1] Bad documentation for TraverserOptionProp
- [IS-6.0.1] Exception logged on loading threejsscene models as there is no source for the selection
- [IS-6.0.1] When on last step of the instruction the autoplay button should be disabled. You are not allowed to click it at this step
- [IS-6.0.1] Error appear when select and deselect step.
- [IS-6.0.1] Previous button should be disabled on first step.
Platform
[IC-1.3] Build of 345 finishes with strange error. We need to describe the error
Sumo Competition Robot from LEGO Mindstorms EV3 now looks cooler, luns faster, jumps higher, loads better...
Sumo Competition Robot from LEGO Mindstorms EV3
[IC-1.3] Material 855 can not be build
is rebuild and now takes less time to load.
[IC-1.3] Materials 789 can not be build
This robot how has cables - Iknathir - LEGO Mindstorms EV3 aircraft carrier robot
[IC-1.3] 405 is failing to build
Francesco Robot is rebuild and loaded much faster https://www.fllcasts.com/materials/405-francesco-simple-lego-ev3-car-with-differential-rear-wheel-drive
[IC-1.3] When updated to pytest 5.4 the tests started to fail randomly.
In the requirements I fixed the version of pytest to 5.3.5. I am subscribed to https://github.com/pytest-dev/pytest/issues/6987. Once it is resolved I will update the version of pytest we are using.
[IC-1.3] Material 723 is failing
Material 723 is rebuild. Now the material is loading faster and takes less memory.
[IC-1.3] Material 721 is failing
Material 721 is rebuild. Now the material is loading faster and takes less memory.
[IC-1.3] Material 785 can not be builded
Result:
Material 785 is rebuild. Now the material is loading faster and takes less memory.
[IC-1.3] 773 can not be builded
Material 773 is rebuild. Now the material is loading faster and takes less memory.
[IC-1.3] 548 can not be build
Material 548 is rebuild. Now the material is loading faster and takes less memory.
[IC-1.3] 728 can not be build
Material 728 is rebuild. Now the material is loading faster and takes less memory.
[IC-1.3] 750 can not be builded
Material 750 is rebuild. Now the material is loading faster and takes less memory.
[IC-1.3] Material 758 can not be build
Material 758 is rebuild. Now the material is loading faster and takes less memory.
[IC-1.3] Material 635 failed with sets.json
Material 635 is rebuild. Now the material is loading faster and takes less memory.
[IC-1.3] Material 952 fails
Material 952 is rebuild. Now the material is loading faster and takes less memory.
[IS-6.0.1] Article about Promise.finally(). Also cleaning up some Core code.
https://kmitov.com/posts/finally-do-some-work-in-promise-finally-everyday-code/
[IS-6.0.1] Add a method that checks if an object implements an interface function.
It is available in 6.0.0.pre.102
The method is called IS.ErrorsUtil.AssertObjectsImplementInterface
```
/**
*
Checks if the objects in the array have all the properties of the interface specified.
* This is not done with 'instanceof', but we check the properties and if every property
* of the interface is available in every object in the array.
*
*
We need this as we use interface for defining properties that could be GCC compiled and in GCC
* way you could implement an interface, but you will not be an instance of this interface.
*
* @export
*/
static AssertObjectsImplementInterface(array, interf) {
....
});
}
```
[IS-6.0.1] Make a better example for options traverser and what traversing means and why wtravera and why not getDescendats() and how the internalTraverser logic for return true works and why arrow function without brackets does and work and if it should work. It should be a fix
Adding a real life example with documentation for the filterNodeFunction.
Documentation is available at:
The example and documentation are https://sf.robopartans.com/jenkins/view/IS/job/is-release_pack%20Build%20and%20Release/ws/docs/IS.TraverserOptionProps.html#filterNodeFunction
```
Real life example for getting parts in a BABYLON.Node tree
This is a real life example of using TraverserOptionsProps#filterNodeFunction to get all the nodes
in a BABYLON.Node with a certain metadata
while not entering into the nodes with metadata noteType 'step' or 'part'.
Collecting the parts is done in a single traverse of the three.
Tree is:
Step (nodeType: step)
Part 1 (nodeType: part)
Part 1.1 (nodeType: part)
Part 1.2 (nodeType: part)
Part 2 (nodeType: part)
Module 1 (nodeType: module)
Part 3 (nodeType: part)
Part 4 (nodeType: part)
Armature 1 (nodeType: armature)
Armature 1.1 (nodeType: armature)
Armature 1.2 (nodeType: armature)
Step 2 (nodeType: step)
Part 5 (nodeType: part)
Module 2 (nodeType: module)
Step 3 (nodeType: step)
Part 6 (nodeType: part)
We want to get an array of [Part1, Part2, Part3 and Part4, Armature 1]. This means all the Parts that
are in the top Step and all the deep descendants parts, but without any parts that are in descendants steps.
// Define the options
//
const options = {
filterNodeFunction: function( @type {BABYLON.Node} object) {
const nodeType = object.metadata.gltf.extrast.ai3d.nodeType;
// visit only childrne that are of type "module" or are the root babylon node
const children = ["module"].includes(nodeType) || object == topStepBabylonNode ? object.getChildren() : [];
// return [(boolean), (array of children)]
// (boolean) is only for Part and Armature since these are the only nodes we would like to visit
// (array of children) is only for modules. We don't want to enter into Parts and into Steps.
return [["part", "armature"].includes(nodeType), children];
}
}
// Define the traverser. It is a PreOrder
const traverser = new IS.PreOrderTraverser(options);
// Traver the nodes and put every node that we visit in the topPartsSetps
const topStepParts = [];
traverser.traverse(topStepBabylonNode, node => {
topStepParts.push(node);
});
// topStepParts now contains and this
// [Part1, Part2, Part3 and Part4, Armature 1]
```
[IS-6.0.1] Improve documentation for registering a new extension
[IS-6.0.1] Tutorials for teaspoon
[IS-6.0.1] In Microsoft Edge you can't change the steps with the left and the right arrow.
IS with Babylon and Three JS has been tested on Miscroft Edge on Windows and Mac os X with these versions:
Windows Machine
Microsoft Edge 44.17763.831.0
Microsoft EdgeHTML 18.17763
©2018 Microsoft
Mac os X Catalina Machine
Version 80.0.361.111 (Official build) (64-bit)
This browser is made possible by the Chromium open source project and other open source software.
Microsoft Edge
© 2020 Microsoft Corporation. All rights reserved.
Everything that was tested - works:
- Changing steps with left and right arrows
- Full Screen Button
- Full Screen with 'f' key
- Changing steps with left and right arrows while in full screen
- Changing steps with left and right arrows after the focus was moved away from IS canvas.
- Rotating
- Panning
- Zooming
[IS-6.0.1] Bad documentation for TraverserOptionProp
Improved in is-core 6.0.0.pre.106.
Now has a good example
* const options = new IS.TraverserOptionProps()
* options.filterNodeFunction = function( @type {BABYLON.Node} object) {
* const nodeType = object.metadata.gltf.extrast.ai3d.nodeType;
*
* // visit only childrne that are of type "module" or are the root babylon node
* const children = ["module"].includes(nodeType) || object == topStepBabylonNode ? object.getChildren() : [];
*
* // return [(boolean), (array of children)]
* // (boolean) is only for Part and Armature since these are the only nodes we would like to visit
* // (array of children) is only for modules. We don't want to enter into Parts and into Steps.
* return [["part", "armature"].includes(nodeType), children];
* }
[IS-6.0.1] Exception logged on loading threejsscene models as there is no source for the selection
The tree viewer now does not depend on source. If no source extension is specified then we cannot select and no checkboxes are shown.
You can see that here:
www.fllcasts.com/materials/240
[IS-6.0.1] When on last step of the instruction the autoplay button should be disabled. You are not allowed to click it at this step
https://www.fllcasts.com/materials/518-torvi-ball-shooting-lego-machine
When you go to the last step of an instruction no matter if you do it while using autoplay, go to step or the arrows the autoplay button is disabled and cannot be activated.
[IS-6.0.1] Error appear when select and deselect step.
Bug is no longer present.
[IS-6.0.1] Previous button should be disabled on first step.
When you go to an instruction and you do not have any previous steps that you can step on the button for previous step is disabled.