Change Log
2019-03-24: v1.2.3.0
- Added: support for changing layer tiles at runtime (thanks @IoriBranford)
- Added: object's name and type now exposed to bump world (thanks @npinochet)
- Added: support for LOVE 11.0 (thanks @tyraindreams, @Krankdud, @AndrewRublyov)
- Added: support for Box2D dynamic bodies via "dynamic" property (thanks @lemilonkh)
- Added: tutorial formerly hosted by lua.space to /tutorials
- Added: support for restitution, friction, and filter properties to Box2D plugin (thanks @DrJamgo)
- Added: support for infinite maps
- Added: support for layer groups (thanks @daxartio)
- Added: support for point objects
- Changed: loading a map now asserts (thanks @Alloyed)
- Fixed: error when translate coords are nil in Map.draw (thanks @camchenry)
- Fixed: create new tile instance list if one doesn't exist (thanks @IoriBranford)
- Fixed: error when translate coords are nil in box2d_draw (thanks @DanielPower)
- Fixed: incorrect Y offset when tile height is different than map's tileheight (thanks @IoriBranford)
- Fixed: tile objects now scale correctly (thanks @Jules5)
- Fixed: tile object transform issues (thanks @DavidJTFerguson37)
- Fixed: clobbering directory structure if several levels deep (thanks @meeces2911)
- Fixed: rotate_vertex was not compensating for height offset (thanks @Schwusch)
2017-05-18: v0.18.2.1
- Changed: map.draw, map.box2d_draw, and map.bump_draw now take transform arguments. This (finally!) allows both scaling and translating to work together.
- Fixed: A bug where cached textures were not able to be loaded more than once (thanks @IoriBranford)
2017-05-07: v0.18.2.0
- Added: dummy graphics shim for headless mode (thanks @matiasah)
- Changed: plugins now load using require() (thanks @benwebber)
- Fixed: typo causing staggered maps to crash (thanks @Drauthius)
- Fixed: a bug where scaling the map could cause graphical glitches
- Fixed: transparent colour code
2017-02-01: v0.18.1.0
- Added: support for sorting objects
- Changed: box2d and bump plugins to be explicit when dealing with object groups within tiles
- Fixed: rendering staggered and hexogonal maps
- Removed: Map.drawRange was made obselete
2017-02-01: v0.16.0.4
- Added: support for passing map table in directly (thanks @prust)
- Added: support for collision object groups in bump.lua plugin (thanks @DanielPower)
- Added: support for transparent colour mask (thanks @matiasah)
- Changed: batch size limit from 100 to default(1000)
- Changed: drawing layers now inherits colour settings (thanks @josefnpat)
- Fixed: a leaking global
2016-08-22: v0.16.0.3
- Changed: box2d_draw plugin now uses correct shape (thanks @buckle2000)
- Fixed: a collision offset issue in bump_draw (thanks @rosshadden)
- Fixed: a bug where drawing multiple maps didn't always work properly
2016-07-18: v0.16.0.2
- Added: busted tests!
- Changed: structure of git repo is now more user friendly
- Changed: converted map.lua into init.lua and changed isolation code
- Changed: STI.new() -> STI()
- Changed: Map:convertWorldToScreen -> Map:convertTileToPixel
- Changed: Map:convertScreenToWorld -> Map:convertPixelToTile
- Fixed: hexagonal maps now display in correct location (thanks @bjorn)
2016-06-09: v0.16.0.1
- Changed: moved local functions to an internal utils file to tidy things up
- Changed: Box2D plugin now uses utils file instead of duplicate functions
2016-06-09: v0.16.0.0
- Changed: Custom Properties now support proper boolean values in both Box2D and Bump plugins
2016-06-09: v0.14.2.0
- Added: proper support for Layer offsets (thanks @Drauthius!)
2016-05-19: v0.14.1.13
- Added: test maps for visual varification between Tiled and STI
- Added: Map:swapTile so you can cleanly swap tiles in Tile Layers
- Changed: all conversion functions consolidated into two functions (thanks @entrancejew)
- Fixed: shapes were off in noman's land in some cases (thanks @loribranford)
2016-01-12: v0.14.1.12
- Added: basic support for object layers in Bump plugin (thanks @premek)
- Changed: new line token from CRLF to LF
- Fixed: sprite batches should now respect the map draw order
2016-01-01: v0.14.1.11
2015-12-31: v0.14.1.10
- Fixed: Box2D plugin was not recognizing a tile's embedded object group
2015-11-19: v0.14.1.9
- Changed: key in image cache to formatted path of image
2015-11-16: v0.14.1.8
- Added: image cache to STI module [sponsored by Binary Cocoa]
- Added: STI:flush() to clear out image cache
2015-11-15: v0.14.1.7
- Added: support for offsetting maps [sponsored by Binary Cocoa]
- Changed: Map.setDrawRange is more optimized via recycling tables
- Changed: render order now defaults to "right-down"
2015-11-07: v0.14.1.6
- Fixed: tileset images not being properly filtered
- Fixed: bump.lua plugin missing world argument in draw
2015-10-14: v0.14.1.5
2015-10-12: v0.14.1.4
- Fixed: removing a layer now properly removes tile and object instances
- Fixed: box2d plugin now properly removes collision objects
2015-10-09: v0.14.1.3
- Fixed: flipping animated tiles properly display
- Fixed: rotating animated tiles properly display
- Fixed: rotating tile objects properly display
- Fixed: box2d plugin properly creates rotated and flipped tile objects
- Fixed: box2d plugin no longer crashes when drawing a line with two vertices
2015-10-07: v0.14.1.2
- Added: support for all render orders (rd, ru, ld, lu)
- Added: support for sensors in the box2d plugin (only works on individual tiles and objects; sensor = true)
- Changed: addCustomLayer's index argument is now optional and defaults to the end of the array
- Fixed: a crash when using Base64 (uncompressed) with LOVE 0.9.2
2015-10-03: v0.14.1.1
- Added: support for gzip compressed maps (requires LOVE 0.10.0+)
2015-09-30: v0.14.1.0
- Added: support for Base64 compressed maps (requires LuaJIT)
- Added: support for zlib compressed maps (requires LOVE 0.10.0+)
2015-09-28: v0.14.0.1
- Added: Support for all staggered types (x/y, even/odd, iso/hex)
2015-09-27: v0.14.0.0
- Added: Hexagonal map support (thanks EntranceJew!)
- Added: Error message for compressed maps
- Fixed: box2d plugin threw an error in some cases (thanks maxha651!)
2015-09-17: v0.13.1.4
- Changed: sanity checks now search for love.physics instead of love.physics.*
2015-09-16: v0.13.1.3
- Changed: Improved documentation
2015-09-16: v0.13.1.2
- Changed: Simplified plugins
- Changed: Namespaced the box2d plugin
- Removed: Non-LOVE frameworks (they didn't work)
2015-09-16: v0.13.1.1
- Added: LDoc documentation
- Added: Plugin system where devs can extend STI
- Added: Reinstated the Box2D integration as a plugin
2015-09-15: v0.13.1.0
- Added: Map:convertToCustomLayer() now returns the layer
- Changed: Tightened localization of some functions
- Removed: Box2D collision integration
- Removed: Unused functions
2015-07-31: v0.12.3.0
- Added: Tiled version number to Map.tiledversion
- Added: Map.objects table indexed by unique object IDs
- Added: A better error message when trying to use Tile Collections
- Changed: Version number should now match Tiled's version number
- Changed: You must now add ".lua" in the filename of a new map as this is consistent with other libraries
- Changed: Renamed "pure" framework to "lua" (still doesn't work, though!)
- Changed: Map:setDrawRange no longer inverts tx and ty for you, do it yourself!
- Changed: Map:draw no longer accepts scale values, use love.graphics.scale!
- Fixed: A bug where tile objects were drawing an object border
- Removed: Corona framework file
2015-03-22: v0.9.8
- Fixed: A bug where Tiles without a Properties list would crash
2015-02-02: v0.9.7
- Added: userdata to Box2D fixtures
- Changed: changelog.txt -> CHANGELOG.md
- Changed: Flipping tiles now happens in both tile layers and object layers
- Fixed: A bug where tile objects were drawing oddly in some cases
- Fixed: A bug where circles would error if physics was disabled
2015-01-28: v0.9.6
- Added: getLayerProperties(), getTileProperties(), and getObjectProperties()
- Fixed: A bug where flipped tiles crashed STI during initCollision()
- Fixed: Flipped collision tiles now have correct offset
- Removed: Reverted the change in v0.9.3 that filled in empty tiles with false
2014-12-15: v0.9.5
- Fixed: A bug where tile collision objects were using the wrong size in some cases
- Fixed: A bug where flipped tiles weren't always creating collision objects
2014-12-05: v0.9.4
- Changed: STI's canvas plays nicely with other libraries
- Changed: addCustomLayer() now returns a handle on the created layer
2014-12-03: v0.9.3
- Added: Local Tile IDs to Tile objects
- Added: Terrain information
- Fixed: Some conversion functions
- Changed: Tile Layers now contain "false" instead of "nil" where there is no tile
- Changed: Added _LICENSE, _URL, _VERSION, and _DESCRIPTION properties to core STI object
2014-09-29: v0.9.2
- Added: Support for drawing tiles in object layers
- Fixed: Incorrect calculation of some collision objects
2014-09-26: v0.9.1
- Fixed: A crash when a collidable tile is initialized but not used
- Removed: Public access to formatPath(), rotateVertex(), and convertEllipseToPolygon()
2014-09-24: v0.9.0
- Added: Animated tiles! (Thanks to Clean3d)
- Fixed: A crash when a collidable rectangle has no rotation value
- Fixed: Incorrect values given to orthogonal collision objects
2014-09-24: v0.8.3
- Added: Map:convertScreenToTile() and Map:convertTileToScreen()
- Added: Map:convertScreenToIsometricTile() and Map:convertIsometricTileToScreen()
- Added: Map:convertScreenToStaggeredTile() and Map:convertStaggeredTileToScreen()
- Fixed: Map:removeLayer() now works properly
- Changed: Tile Objects now use the tile's collision map by default
2014-09-22: v0.8.2
- Added: "collidable" property for objects, tiles, and layers
- if collidable is set to true in Tiled, STI will pick it up and set all appropriate entities to collidable objects
- Fixed: Physics module no long required if not needed.
- Fixed: Whitespace discrepencies
- Changed: Map:initWorldCollision() now supports a whole lot more
2014-09-21: v0.8.1
- Added: README now lists minimum requirements
- Changed: README updated with new collision system
- Changed: Map:enableCollision() renamed to Map:initWorldCollision()
- Changed: Map:drawCollisionMap() renamed to Map:drawWorldCollision()
- Changed: Updated framework files (still no real Lua/Corona support)
- Changed: Tidied up collision code
- Removed: Map:getCollisionMap()
2014-09-20: v0.8.0
- Added: Box2D collision via Map:enableCollision()
- Added: Map:convertEllipseToPolygon()
2014-09-17: v0.7.6
- Added: Map:convertScreenToIsometric and Map:convertIsometricToScreen
- Added: Map:setObjectCoordinates
- Added: Map:rotateVertex
- Fixed: Adjusted map positioning for Isometric and Staggered maps
- Fixed: Object positioning in Isometric maps
- Removed: Temporary fix for Tiled 0.9.1
2014-08-05: v0.7.5
- Fixed: Properties offset by 1
- Fixed: Drawing a single Layer can now use Layer's name/index
2014-04-28: v0.7.4
- Fixed: Canvas resize type
2014-04-18: v0.7.3
- Fixed: Canvas using wrong filter
2014-04-08: v0.7.2
- Removed: Dependency for LuaJIT's bitwise operations
2014-04-08: v0.7.1
- Added: Map:resize(w, h)
- Changed: Map:draw() now takes two optional arguments: ScaleX and ScaleY
- Changed: STI now draws to a Canvas before drawing to screen (fixes scaling oddities)
2014-04-07: v0.7.0
- Added: Files for Corona and Pure Lua implementation
- Changed: Restructured sti.lua into several files
- Changed: Library is now LOVE agnostic and should allow for implementation of other frameworks
2014-03-1 : v0.6.16
- Changed: Ellipses now use polygons instead of... Not polygons.
2014-03-1 : v0.6.15
- Fixed: Tile spacing calculated properly in all cases
2014-02-0 : v0.6.14
- Fixed: Tile properties ACTUALLY being added now!
2014-01-2 : v0.6.13
2014-01-2 : v0.6.12
- Added: drawCollisionMap() now supports Isometric and Staggered maps
- Changed: drawCollisionMap() now requires a collision map parameter
- Changed: setCollisionMap() renamed to getCollisionMap()
- Changed: getCollisionMap() now returns the collision map
- Fixed: Tile properties not being added
- Removed: Map.collision table removed
2014-01-2 : v0.6.11
- Added: Descriptive error messages
- Fixed: Image filters for scaling
2014-01-2 : v0.6.10
- Fixed: Optimized load time
2014-01-25: v0.6.9
- Fixed: Parallax Scrolling
2014-01-25: v0.6.8
- Changed: Revised and restructured code
- Changed: createCollisionMap() renamed to setCollisionMap()
- Changed: newCustomLayer() renamed to addCustomLayer()
2014-01-24: v0.6.7
- Fixed: Number of tiles wasn't calculated properly
2014-01-24: v0.6.6
- Fixed: Spacing wasn't calculated properly
2014-01-24: v0.6.5
2014-01-24: v0.6.4
2014-01-20: v0.6.3
- Added: Tile Flags (flip/rotation)
2014-01-20: v0.6.2
2014-01-19: v0.6.1
- Fixed: A bug causing the Collision Map to be nil
2014-01-19: v0.6.0
2014-01-19: v0.5.0
- Added: Draw Range optimization
2014-01-18: v0.4.3
- Added: Layer draw offsets
2014-01-17: v0.4.2
- Changed: Organized library a little better
2014-01-17: v0.4.1
- Fixed: Tiles incorrectly offset
- Fixed: Drawing concave polygons
2014-01-17: v0.4.0
- Added: Draw Object Layers
2014-01-16: v0.3.3
- Added: Create new Custom Layer
- Added: Callbacks for all layers
- Added: Remove Layer
- Changed: Simplified sti.new()
2014-01-16: v0.3.2
- Fixed: Crash if using Tiled 0.9.1
- Changed: Map structure to remove "map" table
2014-01-16: v0.3.1
- Added: Update callback to Custom Layers
2014-01-16: v0.3.0
- Added: Support for converting layers to Custom Layers
- Changed: sti.new() no longer requires the file extension
2014-01-15: v0.2.2
- Added: Support for basic collision layer
2014-01-15: v0.2.1
- Added: Support for map instances
- Added: Name alias to layer indices
- Changed: Sandboxed map environment
- Changed: Data structures are more efficient
- Removed: Unnecessary update function
Thanks to JarrettBillingsley for many of these changes
2014-01-14: v0.2.0
- Fixed: Drawing Tile Offset
- Changed: Tile Layer data structure is more efficient
- Changed: Simplified Quad generation
2014-01-14: v0.1.0
- Initial Commit
- Added: Orthogonal Map support
- Added: Draw Tile Layers
- Added: Draw Image Layers
- Added: Ignore Hidden Layers
- Added: Layer Opacity