Skip to content
This repository was archived by the owner on Nov 20, 2025. It is now read-only.

0.10.0

Choose a tag to compare

@davesmith00000 davesmith00000 released this 12 Nov 17:42

Development status: Alpha - expect further breaking changes

Many thanks to those that contributored in various ways and helped shape this release!

Important! This release moves Indigo onto Scala 3.1.0 which is not backwards compatible with previous Scala 3 releases. Please upgrade to Scala 3.1.0 and Scala.js 1.71.

Details of the major changes

New Build Target Versions
Scala.js 1.7.1
Scala 3.1.0

Windows Support
A small change to the way npm is invoked by the Indigo plugins allows the indigoRun and indigoRunFull commands to work on Windows.

Alternate syntax for basic types
Most of the basic types represented by opaque types now have an alternative syntax for construction, e.g.:

Import indigo.syntax.*

10.radians
"Game layer".bindingKey
60.fps
12.pixels

Improved QuadTrees
QuadTrees have had some attention in this release. Some of the changes are cosmetic to make the language more consistent. The other work has been to make QuadTrees more efficient where possible, such as making more of their methods tail recursive.

CloneBatch, CloneTiles, and Mutants
The notion of Clones have existed in Indigo for quite a while now. The idea of clones is quite simple: Take an archetypal primitive, a graphic say, process it just once, and then copy the processed version many many times (a process called 'instancing') changing only a few of its properties each time. The aim is to skip large chunks of the scene/rendering pipeline in order to massively increase the number of entities you can render per frame.

Previous versions of clones were pretty limited and didn’t quite achieve the desired effect, and so have been completely replaced. The concept of a CloneBatch has survived but the implementation has changed. There are now three incarnations, below is a brief description, please see the documentation for more information.

  • CloneBatch - Render many copies of the same element changing it’s basic transform information.
  • CloneTiles - Same as CloneBatch, but you can also change the crop of the texture.
  • Mutants - Advanced, and conceptually different. Copies can only be varied by supplying shader values.

Performance improvements
This release includes a raft of performance improvements off the back of the Clone improvement works. A notable change is that most matrix multiplication has now been moved back onto the GPU as a result of removing the "de-grouping" stage of the scene processor. This has the added benefit of opening up new variables to the vertex shader programs, like POSITION and SCALE.

Breaking changes

  • Vector4 'w' value defaults to 0 not 1

Bug fixes

  • Fixed #234: Blend props can be set on layers and SUF with no instance in place
  • Fixed #230: Bitmaps were not applying fill type to lit materials
  • Fixed #228: Prevent vec2 straddling byte boundary

API Improvements

  • Point, Vector2, and Vertex have new rotation methods
  • Fixed #133 Support hold down actions on buttons
  • Fixed #133 Support hold down actions on hit areas
  • Fixed #235: Better to and from methods on Vector/Vertex/etc
  • Fixed #236: Add Vector2 methods to geom primitives
  • Fixed #195 Add more built-in colours for both RGBA and RGB
  • Fixed #229: Allow EntityNodes as clone blanks
  • QuadTrees: Replaced searchByPoint with findClosestTo
  • QuadTrees: toPositionedList -> toListWithPosition + better deprecation msgs
  • GLSL: INSTANCE_ID added to entity shaders
  • GLSL: POSITION added to entity shaders
  • GLSL: SCALE added to entity shaders
  • GLSL: REF added to entity shaders
  • GLSL: FLIP added to entity shaders
  • Fixed #196: Events use Point/Size instead of separated fields

What's Changed

New Contributors

Full Changelog: v0.9.2...v0.10.0