Releases: Cammin/LDtkToUnity
6.0.0
6.0.0 (2024-05-19)
Features
- Added 4 new convenience values to the TileInstance (19f2de4)
- Added proper support for rule's offsets and randomized offsets (previously they would layer improperly) (76c1e9f)
Performance Improvements
- Avoid a null check in a high-iteration context (25c315e)
- Changed how the import profiling is enabled via a scripting define to never run unnessesary Profiler API calls (2749c69)
- Optimized getting the FlipX and FlipY values from TileInstance (f21d6ea)
- Prevent unnessesary tilemap API calls to SetTileFlags, SetColor and SetTransformMatrix (92b3afa)
- Only one auto layer tilemap is generated per layer instead of multiple. This is done by making additional rule tiles exist in a different tilemap z cell. To keep the tiles looking good despite having different cell z values, the
cellGap.z
of the Grid components are now -1 (76c1e9f) - Added some dictionary capacity allocations for tile placement (76c1e9f)
- Prevent unnessesary tileset artifact load attempts while building tile/auto layers (76c1e9f)
- Various other small optimizations related to building tile/auto layers (76c1e9f)
BREAKING CHANGES
- The generated tilemap hierarchy is different; Only one tilemap will exist per layer with auto tiles.
LDtkComponentLayerTilesetTiles.Tilemaps
list has been changed to a singleTilemap
5.0.20
5.0.20 (2024-05-13)
Bug Fixes
- Problem on mac where there an error was still displayed in the inspector even if the sh file contents are correct (e728f4d)
Performance Improvements
- Caching intgrid value data from definitions instead of instances to avoid unnessesary calculations. Also calculating the placement cell coordinate faster (51c83ad)
5.0.16
5.0.2
5.0.1
Attention!
I'm experimenting with using semantic release, so there won't be .unitypackage
on here or on itch.io for a while, and you'll need to download new versions from openupm.
I'm looking at potentially automating the unity package pipeline so that they are available like before.
With that said, here's the automated release notes, and ones for the future:
5.0.1 (2024-05-06)
Bug Fixes
- LDtkComponentParallax will now execute after all other scripts to prevent potential race conditions in FixedUpdate or LateUpdate (d3f90df)
5.0.0
Additions
-
Added support for animated tiles in the import pipeline! Learn the setup here
-
Added new component
LDtkComponentLayerParallax
: For all layers to mimic the parallax motions seen in LDtk -
Added new component
LDtkComponentLayerIntGridValues
: A component with various functions to help with getting IntGrid value data -
Added new component
LDtkComponentTilesetTiles
: A component with various functions to help with tileset tiles -
Added various new components and ScriptableObjects, eliminating any requirement to deserialize json data. Check the docs here for more info
- Total new ScriptableObjects
LDtkDefinitionObjectAutoLayerRule
LDtkDefinitionObjectAutoLayerRuleGroup
LDtkDefinitionObjectEntity
LDtkDefinitionObjectEnum
LDtkDefinitionObjectField
LDtkDefinitionObjectLayer
LDtkDefinitionObjectTileset
- Updated existing components with new json data:
LDtkComponentProject
LDtkComponentWorld
LDtkComponentLevel
LDtkComponentLayer
LDtkComponentEntity
(new)
- Total new ScriptableObjects
-
LDtkComponentWorld
: Added a new convenience button to the world component inspector to spawn all the world's separate levels- Supports multi-selection & undo
- Project hierarchies with separate levels enabled will now build the world GameObjects in the project hierarchy to allow this feature
-
Added three new "reimport all" buttons into project settings to optionally only reimport all
.ldtk
,.ldtkl
, or.ldtkt
files -
LDtkPostprocessor
: Added new AssetImportContext field to work with the ScriptedImporter, like to access the asset path -
LDtkTilesetTile
: Added new helper functionGetEnumTagValues
to parse the tile's string fields into enum data -
LDtkTilesetTile
: Added newTileId
int field toLDtkTilesetTile
-
LDtkReferenceToAnEntityInstance
: Added public fields for getting IID -
LDtkIid
: Added implicit operator to string
Changes
- Optimization: Built tilemaps will now CompressBounds to potentially improve on memory/processing
- Optimization: Greatly improved the operation speed of clicking the "Reimport All" button in Project Settings
- Updated: New icon for AutoLayer-related content
- Updated: Samples
Fixes
- Compile Error: Fixed a compile error encountered in Unity 6
- Import Fail: Fixed a tileset file import failure if a tileset texture is not set in LDtk
- Import Fail: Fixed a problem where the export app would not work on macOS easily
- This issue is not retroactively fixed, so for any Mac users currently facing this issue, add a
$1
to the end of the file's contents inLibrary/LDtkTilesetExporter/ExportTilesetDefinitionMac.sh
- This issue is not retroactively fixed, so for any Mac users currently facing this issue, add a
- Expectancy: Fixed the project importer's composite collider option not showing in the inspector if there's no IntGrid layer but if there is a Tile/Auto layer
- Expectancy: Fixed issue when reimporting all in project settings, where some assets that failed to import would not reimport whatsoever
- Expectancy: Added new error log if a tileset file's texture is not a TextureType of Sprite
- Expectancy: Removed an unnecessary error log if a layer's tileset definition was not set
- Expectancy: All checks for a backup file will now happen before checking json version to avoid unnecessary errors
Breaking Changes
- Deprecated some values in the imported components. They are instead accessed in their definition object.
- All deprecated values will still work the same, except for
LDtkComponentProject.FromJson
which now return null
- All deprecated values will still work the same, except for
- Planning to remove
LDtkEntityDrawerComponent
in the future; the newLDtkComponentEntity
will be responsible instead
4.2.2
4.2.2
- Fixed 4.2.1 compile errors encountered in Unity versions 2020 and below
- Fixed a problem with the tileset export command where it would fail if a project name has spaces. Fixed by including quotations in the second argument
- Improved the message in the importer inspector to display the incorrect command if required
4.2.1
- Updated json support & samples for LDtk 1.5.3
- Added new properties to LDtkNeighbour to accomodate the new neighbour directions
Note
Changed the LDtkNeighbour._dir
from char
to string
. It may affect the Dir
API access
4.2.0
Additions
- Updated json support & samples for LDtk 1.5.2
- Added LDtkPreprocessor: Use to read/modify any json data before GameObject hierarchies are created
- Added support for the additional Table-of-content data from LDtk 1.5
- Except the
Fields
; will need to come later
- Except the
- Updated samples to 1.5.2
Fixes
- Improved the experience with the tileset export app
- Instead of the export app looking for an active windows process to get the project name, it's a new parameter in the command, being the project name.
- The export app will now pause if errors are encountered to enable easier reading
Breaking Changes
- This importer requires LDtk projects of LDtk version 1.5 at a minimum. Update your LDtk app and save your project.
- Deprecated
LDtkTableOfContents.GetEntities
, useGetEntry
instead - This version has an update to the tileset export app, and the command to run is changed. So follow these two steps:
- Select your LDtk project file, and you will be able to install a newer version with the click of a button.
- Copy the new command from the importer inspector, and paste it into your LDtk project settings and Re-save.
4.1.0
Additions
- Added support for Aseprite files!
- To allow the LDtk importer to load Aseprite files, install the Unity Aseprite Importer
The Aseprite importer requires Unity 2021.3.15 or above
- To allow the LDtk importer to load Aseprite files, install the Unity Aseprite Importer
- Added support for looping level backgrounds
- Make the level's looping background pivot to the bottom left for perfect accuracy
- Added support for individual tile alpha from LDtk 1.3.1
- Added a LDtkIid for the LDtkJson root object from LDtk 1.2.0
- Updated samples to 1.4.1
Quality of Life
- Changed the icons for the imported Project/Level/Tileset to match with the icons from LDtk 1.5
- Updated docs to instruct that a texture should be RGBA32 compression
- Made the LDtkComponentLayer ordered before the LDtkIid component
Fixes
- Fixed the slow load time to reset tilemap colliders in the scene after reimporting a tileset definition file
- Added a notification in the scene view indicating how many tilemap colliders were reset, and how long it took
- Fixed a bug where reordering IntGrid value definitions would use the wrong tile references, and in some cases, cause an exception
- Fixed a deserialize exception when making a blank LDtk project whereby
defaultEntityWidth
anddefaultEntityHeight
are null when they shouldn't be- This is a temporary measure and LDtk will fix this problem for LDtk 1.5
- Fixed a possible exception during initialization of LDtkFields
- Added safety-check if a tileset definition's
relPath
was null or empty
Breaking Changes
- Removed the "De-parent in Runtime" feature from the project importer
- After much thought, the conclusion was that it's not the importer's job to handle this optimization, and has been removed in favor of less bloat.
- To continue having this optimization in your game, set an important object's parent as
null
to reduce on hierarchy depth.