- Breaking change: fix 3D models that were mirrored on Y axis.
- In case some models look upside-down, they can be fixed by adding 180° to the "Rotation around Y axis" property.
- Handle custom origin and center.
* Tilemaps made with [LDtk](https://ldtk.io/), a modern 2D level editor, can be now used directly. Make sure to save your map made in LDtk as a JSON file, create a new Tilemap object in GDevelop and in the Tilemap field, choose the LDtk file.
* Tilesets used by the LDtk Tilemap are automatically imported in your game - you don't need to import them separately.
* For more information, read about the [Tilemap object on the wiki](https://wiki.gdevelop.io/gdevelop5/objects/tilemap).
Co-authored-by: Davy Hélard <davy.helard@gmail.com>
Co-authored-by: Florian Rival <Florian.Rival@gmail.com>
* This should speed up CPU intensive operations (saving/loading).
* WebAssembly is now supported by all modern browsers, including on iOS and Android.
Only show in developer changelog
This makes autosave 70% faster, saving a project 30% faster, preview slighlty faster.
- Switch to RapidJSON for serialization inside the Core.
- Avoid extra pair of JSON.parse/JSON.stringify for autosaves
- Fix float used instead of double in the SerializerElement/Value JS bindings
* In the list of variables (of the scene, of an object or global variables), you can now specify the type of the variable: number, text, boolean, array or structure.
* Boolean variables can be "true" or "false. They can have their values checked with conditions, and updated with actions. They are a good way to store information about if something is enabled or not (is an item equipped, is something selected, etc...).
* Array variables can contain multiple values, indexed by a number. New values, including any kind of variables, can be appended to an array during the game. Arrays can also have a value removed, and using the event "For each child variable", you can run conditions and actions for each value that is present in the array.
* Boolean and arrays are also supported when you transform a variable from or to the JSON format - which is ideal to send web requests, read configuration files or store any kind of arbitrary data.
* Finally, note that array values can themselves be arrays, structures or any variable. This can be useful to construct advanced logic. You can also access arrays (as well as any variable) from JavaScript code block events.
* Add a for each structure event
* Apply review instructions to newIDE
* Fix naming in code generator
* Rename ForEachStructure
--> ForEachChildVariable
* Rename Structure and Variable
--> IterableVariableName and IteratorVariableName
* Delete old file
* Fix flow typing
* Remove unecessary includes
* Add key iterator, make iterators optional
* Clean up ForEachChildVariableEvent.js
* Add method on gdjs.Variable to replace children
* Add word warp to the event label