- 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)
- 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)
- 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
- 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
- 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
- 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
- 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)
- Changed: moved local functions to an internal utils file to tidy things up
- Changed: Box2D plugin now uses utils file instead of duplicate functions
- Changed: Custom Properties now support proper boolean values in both Box2D and Bump plugins
- Added: proper support for Layer offsets (thanks @Drauthius!)
- 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)
- 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
- Fixed: various bugs in the Box2D plugin (thanks @ChrisWeisiger)
- Fixed: various bugs in the Bump plugin (thanks @bobbyjoness)
- Fixed: Box2D plugin was not recognizing a tile's embedded object group
- Changed: key in image cache to formatted path of image
- Added: image cache to STI module [sponsored by Binary Cocoa]
- Added: STI:flush() to clear out image cache
- 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"
- Fixed: tileset images not being properly filtered
- Fixed: bump.lua plugin missing world argument in draw
- Added: bump.lua plugin (thanks @bobbyjoness)
- Fixed: removing a layer now properly removes tile and object instances
- Fixed: box2d plugin now properly removes collision objects
- 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
- 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
- Added: support for gzip compressed maps (requires LOVE 0.10.0+)
- Added: support for Base64 compressed maps (requires LuaJIT)
- Added: support for zlib compressed maps (requires LOVE 0.10.0+)
- Added: Support for all staggered types (x/y, even/odd, iso/hex)
- Added: Hexagonal map support (thanks EntranceJew!)
- Added: Error message for compressed maps
- Fixed: box2d plugin threw an error in some cases (thanks maxha651!)
- Changed: sanity checks now search for love.physics instead of love.physics.*
- Changed: Improved documentation
- Changed: Simplified plugins
- Changed: Namespaced the box2d plugin
- Removed: Non-LOVE frameworks (they didn't work)
- Added: LDoc documentation
- Added: Plugin system where devs can extend STI
- Added: Reinstated the Box2D integration as a plugin
- Added: Map:convertToCustomLayer() now returns the layer
- Changed: Tightened localization of some functions
- Removed: Box2D collision integration
- Removed: Unused functions
- 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
- Fixed: A bug where Tiles without a Properties list would crash
- 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
- 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
- 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
- Changed: STI's canvas plays nicely with other libraries
- Changed: addCustomLayer() now returns a handle on the created layer
- 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
- Added: Support for drawing tiles in object layers
- Fixed: Incorrect calculation of some collision objects
- Fixed: A crash when a collidable tile is initialized but not used
- Removed: Public access to formatPath(), rotateVertex(), and convertEllipseToPolygon()
- 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
- 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
- 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
- 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()
- Added: Box2D collision via Map:enableCollision()
- Added: Map:convertEllipseToPolygon()
- 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
- Fixed: Properties offset by 1
- Fixed: Drawing a single Layer can now use Layer's name/index
- Fixed: Canvas resize type
- Fixed: Canvas using wrong filter
- Removed: Dependency for LuaJIT's bitwise operations
- 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)
- 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
- Changed: Ellipses now use polygons instead of... Not polygons.
- Fixed: Tile spacing calculated properly in all cases
- Fixed: Tile properties ACTUALLY being added now!
- Added: Missing Tile Flag
- 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
- Added: Descriptive error messages
- Fixed: Image filters for scaling
- Fixed: Optimized load time
- Fixed: Parallax Scrolling
- Changed: Revised and restructured code
- Changed: createCollisionMap() renamed to setCollisionMap()
- Changed: newCustomLayer() renamed to addCustomLayer()
- Fixed: Number of tiles wasn't calculated properly
- Fixed: Spacing wasn't calculated properly
- Added: Staggered Maps
- Added: Isometric Maps
- Added: Tile Flags (flip/rotation)
- Fixed: A scaling bug
- Fixed: A bug causing the Collision Map to be nil
- Added: Sprite Batches
- Added: Draw Range optimization
- Added: Layer draw offsets
- Changed: Organized library a little better
- Fixed: Tiles incorrectly offset
- Fixed: Drawing concave polygons
- Added: Draw Object Layers
- Added: Create new Custom Layer
- Added: Callbacks for all layers
- Added: Remove Layer
- Changed: Simplified sti.new()
- Fixed: Crash if using Tiled 0.9.1
- Changed: Map structure to remove "map" table
- Added: Update callback to Custom Layers
- Added: Support for converting layers to Custom Layers
- Changed: sti.new() no longer requires the file extension
- Added: Support for basic collision layer
- 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
- Fixed: Drawing Tile Offset
- Changed: Tile Layer data structure is more efficient
- Changed: Simplified Quad generation
- Initial Commit
- Added: Orthogonal Map support
- Added: Draw Tile Layers
- Added: Draw Image Layers
- Added: Ignore Hidden Layers
- Added: Layer Opacity