Rotorz Tile System Icon
Rotorz Tile System for Unity
Release Notes
Available on the Unity Asset Store

Release Notes for 2.3

This update addresses a number of issues including bug reports and general usability improvements.

New Features

  • New Tool: Spray Tool - For sprinkling tiles.

  • New Tool: Plop Tool - For freely plopping tiles anywhere on plane of tile system.

  • Paint tool now includes "Paint Around Existing Tiles" toggle.

  • Tile systems can now be locked via their context menu using scene palette to avoid inadvertently painting or erasing tiles.

  • Variations now have weights which provide control over random selection when painting. Variations that share the same weight have an equal chance of being selected.

  • PaintingUtility class exposes common painting functionality for use at runtime which is ideal for creating in-game painting tools.

  • ReduceColliderUtility class exposes collider optimization for use at runtime.


  • Since Unity 4.5 has introduced a new function AssetDatabase.FindAssets it is no longer necessary to identify asset types using a custom naming scheme. Since these are no longer needed an update prompt is automatically shown when the legacy suffixes ".brush" or ".set" are found allowing these to be removed automatically. This check can also be triggered by selecting "Rescan Brushes" from the main tool menu.

  • TileSystem.GetTile now throws an exception upon attempting to access out-of-bound indices. New methods GetTileOrNull and InBounds have been added allowing users to avoid such exceptions from being thrown.

  • Added properties CellSize, RowCount and ColumnCount to tile system component which should now be used instead of the public fields tileSize, rows and columns.

  • User preferences are now saved to a JSON setting file within the application data folder for Windows users or the configuration folder for Mac users.

  • Custom tools should now override OnEnable() instead of OnSelected(). This naming change was made for consistency with Unity naming.

  • Tools should no longer override the Name property since this is no longer used and will be removed in the future.

  • Moved tool cursors into new utility class ToolCursors which can be used when implementing custom tools if desired.

  • Removed "Save Prefab..." command from tile system context menu and inspector since this no longer provides any additional value and its presence just seems to cause confusion.

  • Removed functionality which was marked obsolete in previous releases.

  • Renamed several members to use US English rather than UK English. It is unlikely that anybody will be affected by these changes, but the resolution is fairly straightforward.


  • General performance optimizations throughout.

  • Prevent editor controls from stealing keyboard focus avoiding breakage of keyboard shortcuts within tool option interfaces.

  • Revamped entire tool implementation allowing for more capable tools to be created. Tools can now easily register custom options which are automatically persisted into user preferences.

  • Paint tool now allows input of "Nozzle Size" for square nozzle or "Nozzle Radius" for round nozzle allowing for selection of even sizes for square nozzle.

  • TileIndex now implements IEquatable<TileIndex> to avoid value boxing when used in generic collections to improve performance.

  • Tile system inspector now supports multi-object editing.

  • Scene palette is now far more responsive.

  • It is now possible to interact with scene view rotation gadget (in upper-right corner of scene view) when a Rotorz Tile System tool is active.

  • It is now possible to activate painting tools using their keyboard shortcut (provided that a tile system is selected) even when tool palette is not shown. A preference has been added to automatically display tool palette upon activating a tool, but this is no longer necessary in order for tools to function.

  • Added undo/redo support for changes made to ordering and visibility of tile systems within scene palette.

  • Restored some undo/redo functionality for tile system operations which were lost when the new undo/redo system was introduced by Unity 4.3.

  • Added user preference "Always center utility windows.".

  • Added tile transformation utility methods to tile system which use pre-calculated matrices and quaternions for better performance.

  • "Use as Prefab Offset" feature now supports undo/redo.

  • Tool options can now be restored to their default values by selecting "Reset Tool Options" from context menu in tool palette.

  • Advanced tool options are now tucked away behind "Advanced" fold-out area inside tool palette.

  • Variation indices are now better preserved when using bulk edit mode to address the issue which was raised in the following forum post:

  • Trigger colliders are no longer combined with non-trigger colliders since this can incorrectly affect game behavior. In a similar vein colliders are also kept separate when they contain different physics materials.

  • Updated labelling of property "Generate Second UVs" for consistency with updated labelling in the Unity GUI.

  • Added custom asset processor so that new brush and tileset assets can be automatically detected without requiring user to select "Rescan Brushes" upon importing brushes and tilesets from a package.

  • Redesigned "Build Prefab from Tile System" window allowing keyboard input for asset paths. Previously used paths are now retained within tile system component so that they can be presented when window is next shown.

  • Brush palette no longer redirects to tileset upon deleting a tileset brush if the main brush view is shown since this was confusing behavior.

  • Added "Mark Procedural Dynamic" toggle to tile system allowing user to specify whether mesh should be optimized for fast updates or lower memory usage.

Bug Fixes

  • Removed usage of scroll view control which was removed from Unity API in 4.5 to resolve issue where brush designer window was completely unusable.

  • Corrected alignment of controls within windows since Unity 4.5 no longer includes a leading 10px space.

  • Fixed minor visual artefact in brush list control and brush designer window which were introduced by changes made in Unity 4.5.

  • NullReferenceException was thrown when navigating forward/backwards in brush designer window after deleting a tileset brush. This issue did not seem to occur in Unity 4.3, so this may be related to changes made in Unity 4.5.

  • Corrected issue which was introduced when Unity 4.3 introduced its new undo/redo system where cached values were not invalidated after serialization occurred. This issue applied to tile systems and oriented brush assets.

  • Resolved issue where user flags were not being preserved when tiles were being refreshed.

  • Resolved issue where TileSystem.SetTileFrom(TileIndex, TileData) was not behaving properly.

  • Resolved issue where brush preview was incorrectly cleared from original brush upon duplicating an oriented brush and then removing a variation.

  • Corrected unexpected behavior of fill tool when simple rotation was being used.

  • Runtime version number is now resolved at build-time using T4 template to resolve issue which occurred when attempting to create a tile system at runtime on some of Unity's target platforms.

  • Tile systems are now properly excluded from scene palette and ToolUtility.GetAllTileSystemsInScene when they are hidden using hideFlags or reside within a prefab.

  • Resolved issue where empty game objects were not always stripped upon building a tile system.

  • Resolved issue on OS X where escape key did not cancel line/rectangle drawing.

  • Tile transformations are now properly applied when using nested brushes when specified variation index is out of range.

  • Attached collider objects are now properly removed upon optimizing colliders.

  • Added workaround for Unity bug (Case 605226) where custom cursors are not properly updated on OS X.

  • Unused mesh component is now stripped when procedurally generated mesh is empty.

  • Corrected issue where procedural mesh component was being incorrectly stripped thus preventing associated mesh resource from be released.

  • Added workaround for issue where procedural mesh resource was not being properly released when exiting from play mode in-editor. This appears to be a problem with delayed nature of Object.Destroy not being satisfied when stopping play mode in-editor.

  • Added workaround for small issue where multi-part asset name is not always updated when the "main" asset is renamed. This was causing legacy suffixes to be falsely detected (but didn't actually do anything).

  • Cancel rename mode in scene palette when undo/redo is detected.

RSS Feed

Patch Notes



Bug Fixes

  • Resolved issue which occurs when used with recent releases where immediate previews are not shown when using paint tools in editor.



  • Exposed TileIndex.EqualityComparer which should be explicitly provided to generic collections when using TileIndex as a key; as with dictionaries and hash sets.

Bug Fixes

  • Fixed exception on iOS when attempting to use PaintingUtility; was throwing ExecutionEngineException.


New Features

  • Added sorting layer properties to tile system inspector to control procedural tile mesh render order. This is useful for 2D games.

  • Multiple coalesce groups can now be specified for brushes that support automatic orientation.

  • New events added to PaintingUtility; TilePainted, WillEraseTile and ChunkCreated.

  • Added new shortcut Alt + Mouse Wheel to adjust variation shifting.


  • Event Brush.TilePainted is now obsolete. Please update your script(s) to use the new PaintingUtility.TilePainted event instead.

  • Renamed Coalesce.Group to Coalesce.Groups and Coalesce.OwnAndGroup to Coalesce.OwnAndGroups to reflect new behavior. Please update your script(s) accordingly.


  • Procedural mesh game object now inherits "Layer" of tile system game object.

  • Added name to procedurally generated meshes so that they are easier to locate in profiler.

  • Variation randomization is more useful and intuitive when orientations contain differing numbers of variations.

  • Warning message is now presented when attempting to overwrite output files with Build Prefab....

Bug Fixes

  • Tiles were not invalidated by PaintingUtility when changes were not initially detected during painting phase.

  • Regression where "All Categories" menu item was not highlighted when selected.

  • Double-point values were not properly formatted in JSON settings file for some cultures.

  • Regression where use of Application.isEditor cannot be accessed from other threads.

  • Randomize Rotation option was not working for spray tool.

  • Atlas texture memory was leaking because procedural mesh updater was hanging on to a static reference.

  • GUI icons appeared dark in Unity editor when player setting Color Space was set to Linear.

  • Regression where scene palette goes empty after scripts re-compile.

  • Tile system not listed in scene palette when prefab is dragged into scene view.

  • Category popout menu becomes inaccessible if path contains empty slugs.

  • Tag and layer value lost when colliders are reduced.

  • Unexpected tag and layer on when colliders have been reduced.

  • Prevent use of Build Prefab button when multiple tile systems are being edited.

  • Error messages were logged when clicking buttons that open editor windows. This issue was only applicable to OS X.



New Features

  • Added alignment options to for plop tool.

  • Added variation shift buttons '+' and '-' to tool palette which allow variations to be cycled prior to painting or plopping. Includes keyboard shortcuts '+' and '-' and '0' (to reset shift factor).

  • Added variation shift support to PaintingUtility and PaintingArgs.


  • There is no longer a set limit to 48 categories in the brush designer.

  • Categories can be grouped into popout menus by including a forward slash character in the name. For instance "Actors/Enemies".

  • Variation is now pre-randomized when using paint and plop tools in-editor so that the immediate preview can reflect the actual variation that will be painted.

  • Added new property ToolUtility.PreviouslyPlopped which may be useful for custom scripts.

  • Added new component CustomImmediatePreview which can be implemented to provide custom immediate previews for tile prefabs.

  • Exposed ToolBase.PreFilterLocalPoint so that custom tools can align active tile from cells or points.

Bug Fixes

  • Fixed issue where plop position was invalid after plop was manually moved.

  • Immediate preview is no longer drawn for inactive renderer components.

  • Removed Rotorz.Tile.Editor.BrushNozzle since this is ambiguous and is no longer required.

  • Resolved issue where Ctrl + Mouse Wheel no longer worked for adjusting nozzle size on Windows.

  • Scene views are now repainted when "Randomize Variations" option is toggled so that immediate preview reflects this change.