# 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

* Fixed: various bugs in the Box2D plugin (thanks @ChrisWeisiger)
* Fixed: various bugs in the Bump plugin (thanks @bobbyjoness)

## 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

* Added: bump.lua plugin (thanks @bobbyjoness)

## 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

* Added: Missing Tile Flag

## 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

* Added: Staggered Maps

## 2014-01-24: v0.6.4

* Added: Isometric Maps

## 2014-01-20: v0.6.3

* Added: Tile Flags (flip/rotation)

## 2014-01-20: v0.6.2

* Fixed: A scaling bug

## 2014-01-19: v0.6.1

* Fixed: A bug causing the Collision Map to be nil

## 2014-01-19: v0.6.0

* Added: Sprite Batches

## 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
