Numerous key changes have been made to this version of Rotorz Tile System so
that new features could be introduced and existing features could be improved.
Future versions of Rotorz Tile System will be unpacked alongside earlier v1.x
releases. There is an upgrade wizard which can be used to upgrade existing v1.x
brushes and tile systems. Please refer to the migration guide for further details.
-
Top-level menu "RTS".
-
Tile system panel has been split into separate palette windows which can be
accessed via menu RTS | Editor Windows.
-
"Scene" palette window to make it easier to switch between tile systems.
-
Page Up/Down keyboard shortcut (when tool is selected) to cycle between
active tile systems.
-
Anchor support for "Paint" tool so that straight lines can be drawn by holding
the shift key. Hold "Control" and "Shift" key to draw straight horizontal or
vertical lines.
-
Custom previews can now be specified for brushes via "Extended Properties"
using the brush designer. Preview textures should be placed into an "Editor"
folder to avoid inclusion with final builds, unless of course you want to
use them at runtime!
-
Support for basic and extended autotile artwork.
-
Brush lists now include search field and additional filtering options to
make it easier to find brushes.
-
Change size of paint brush and switch between round and square nozzles.
-
Shortcut keys [ and ] to change brush radius, or alternatively hold
Control and use mouse wheel (when painting in scene view).
-
Select primary and secondary brush for painting with left and right buttons.
-
Double-click variation preview in orientated brushes to locate prefab
or edit nested brush.
-
Drag and drop multiple prefabs (or nestable brushes) from the project panel
into an orientation.
-
Tileset brushes can be configured to output tiles using a procedural mesh,
or alternatively one separate game object for each tile.
-
Edge correction options for tilesets which can help to reduce the effects of
bleeding that occurs between tiles.
-
Procedural tiles can be delay generated using TileSystem.UpdateProceduralAtStart
.
-
"Tiles Facing" option for tile systems which allows tiles to be rotated for
sideways games (like platformer), or for upwards games (like top-down).
-
Line tool.
-
User preference "Classic Mode" which combines "Tool" and "Brush" palettes.
-
Rotorz Tile System v2.x is stored in the folder "Assets/Rotorz/Tile System/".
-
Changed extension namespace from "Rotorz.TileSystem" to "Rotorz.Tile" to
avoid conflicts with earlier version of extension.
-
Tile system component was renamed from RotorzTileSystem
to TileSystem
.
-
Brushes are now ScriptableObject assets instead of MonoBehavior components.
This was an important step towards the new tileset capabilities.
-
Brush classes are now post-fixed with Brush
instead of TileBrush
. Despite
offering a cleaner naming convention, hopefully this will help programmers to
migrate from the MonoBehavior
design to the ScriptableObject
design.
-
Brush assets are stored within "TileBrushes" folders (instead of "TilePrefabs").
This was changed to differentiate between v1.x and v2.x brushes.
-
Master brushes can now be placed into any folder called "Master" within
a "TileBrushes" folder. This provides greater flexibility.
-
A naming convention has been used to detect brush and tileset assets.
This means that accessing the "brush.name" property may include an
additional postfix. The new property DisplayName
has been added which
excludes the naming convention.
-
Runtime and editor API property names now use camel case naming for
consistency with general C# guidelines.
-
"Create Brush" window now has a tabbed interface which can be extended with
custom brush creator interfaces using the editor API.
-
"Create Brush" window can be shown with a specific creator selected.
-
Replaced "Create Brushes from Atlas" window with tileset creator interface.
-
Added tileset designer interface to brush designer window to make it easier
to create additional brushes from tilesets and to modify tilesets.
-
Added tileset selection to brush list control.
-
Standardized preview display throughout extension.
-
Added minimum size to brush selection window.
-
Where possible previous state of brush designer window is persisted (selected
brush, category, tileset, etc).
-
Added "Back" button to brush designer window to make it easier to navigate
to and fro between brushes.
-
Brush designer window can now be docked into the Unity interface.
-
Changed shortcut action in "Brushes Palette" from "Locate" to "Edit" because
this is generally more useful. "Locate" action is still available from brush
designer window.
-
Improved quality of information/error/warning message dialogs.
-
New "Refresh Tiles" window which offers greater control over the way in which
tiles are refreshed.
-
Fixed bug with drag and drop functionality where scene view incorrectly
locked. Also, it is useful to note that brushes cannot be dragged into scene
view any more so there is no longer any need to hold Ctrl to perform drag.
-
Brushes can now be marked as "Favorite", "Shown" or "Hidden" for greater
control over which brushes are shown in brush list controls.
-
Improved quality of user interfaces when using the Unity Pro skin.
-
Removed toggle title "Tile System" from "Create Tile System" window to
reduce clutter.
-
Master brushes can now be placed into categories.
-
Added new refresh option "Update procedural tiles" both to GUI and runtime.
-
Fixed bug which caused gaps when painting quickly with "Paint" tool.
-
Added warning message to tileset creator if similar already exists.
-
Added warning message to tileset creator if texture is non power-of-two.
-
Added extended properties interface for empty brushes.
-
"Empty" brush type now has a default preview.
-
Fixed bug: prevent inadvertently adding sub objects of prefabs as oriented
brush variations.
-
Corresponding tileset is automatically selected when switching to "Tileset"
list view when tileset brush is selected.
-
Corrected alignment of vertical scrollbar.
-
Removed interface IBrushContext
from brush classes and using context object
that is shared between all brushes. This reduces the memory requirements of
each brush.
-
Prefabs and colliders can be attached to tileset tiles via brush designer.
-
Added "Rotorz Tile System - Loading brushes..." to console log on startup
which might be useful when diagnosing errors.
-
Improved implementation and performance of "Scale Mode" and "Apply Prefab Transform".
-
Grid can be toggled for selected tile system.
-
Fixed bug where single character brush names were not possible when creating
a brush using the new user interface.
-
Fixed bug with brush list scrolling.
-
Increased upper limit of FillTool.MaximumPaintLimit
from 5000 to 10000 which
may benefit those who are using procedural atlas tiles. Like before the value
of this preference can be changed via preferences window.
-
Reduced the lower limit of chunk sizes from 10 to 2.
-
Fixed bug when attempting to paint with an empty orientation (no variations).
-
Improved warning feedback of oriented brushes by providing the name and
orientation in question to help users correct their brushes.
-
Fixed bug with tile system builder where "Combine Method" was set to "None".
-
Fixed bug where entering and leaving play mode when "Apply Basic Stripping"
as specified in editor caused "Unable to interact with tile system" message
to appear.
-
Added "Override Brush Transforms" option to oriented brush designer so that
"Scale Mode" and "Apply Prefab Transform" properties can be overridden if
desired of nested brushes.
-
Added new category filter "Uncategorized".
-
Added editor preference to control how empty chunks are erased.
-
Added warning to "Create Tile System" window regarding chunk sizes and
procedural meshes.
-
Replaced tile system build functionality with new faster implementation that
does not conflict with procedural tiles, and produces better normals when
smoothing is enabled.
-
Added option to revert properties of alias brush to its target.
-
Fixed bug with RotorzEditorGUI.BrushField
where brush name overflowed.
-
Improved performance of various GUIs.
-
Added mini icon overlay to alias brush previews.
-
Removed "Select Brush" button from alias brush designer because it provides
the same functionality as the brush field
-
Added "Apply To:" field to "Replace By Brush" window to make it easier to
find and replace tiles across all tile systems in a scene.
-
Creation and destruction of tile game objects can now be overridden by
providing a custom implementation of Rotorz.Tile.IObjectFactory
and
assigning it to Rotorz.Tile.DefaultRuntimeObjectFactory
. This may be
useful to developers who are looking to implement pooling.
-
Added global event which can be consumed by both runtime and editor scripts
to run additional logic after a tile has been painted using a brush.
-
Renamed property Brush.IsPhysical
to Brush.CanOverrideLayerAndTag
for
greater clarity.
-
Material mapping capabilities can now be added to custom brushes simply by
implementing the IMaterialMappings
interface. Material mapping fields are
now only provided for brushes that support them.
-
New RefreshFlags
enumeration for finer control over the way in which tiles
are refreshed.
-
Ability to implement custom brushes.
-
Added global event which can be consumed by both runtime and editor scripts
to run additional logic after a tile has been painted using a brush.
-
Added method TileSystem.IsSolid
to easily determine whether a tile is
flagged as being solid.
-
Added various tile trace methods to tile system class to make it easier to
detect tiles based on flag, brush or using a custom delegate.
-
Creation and destruction of tile game objects can now be overridden by
providing a custom implementation of Rotorz.Tile.IObjectFactory
and
assigning it to Rotorz.Tile.DefaultEditorObjectFactory
.
-
Ability to implement custom designers for custom brush types.
-
Custom "Create Brush" tabs can be registered using BrushCreator.Register
.
-
Some properties can be shared between multiple brush creator interfaces.
-
Removed BrushType
enumeration and improved brush utility methods.
-
New field for category selection RotorzEditorGUI.BrushCategoryField
.
-
Brush database now provides a way to enumerate tilesets and access their
associated brushes.
-
Brushes must now be renamed via using BrushDatabase.RenameBrush
.
-
Replaced GUITileBrushList
with BrushListControl
.
-
Brush previews can now be drawn via RotorzEditorGUI.DrawBrushPreview
.
-
Functionality within FillTool
class can now be overridden consistent with
other tool classes.
-
Fixed bug with brush selection window that cause Unity 4 to crash.
-
Removed RefreshAllTiles
from editor API because progress feedback is now
provided by runtime API.
-
Custom brush descriptors can be registered for greater control over custom
brush types.
-
Implemented BrushDescriptor.DrawPreview
which can be overridden for to
render specialized preview for custom brushes.
-
Added generic delete brush functionality to brush descriptor which can be
overridden as needed by specialized brushes.
-
Shortcut actions (None, Edit and Ping) can now be specified for brush lists.
-
Added static fields selectedBrush
and selectedBrushSecondary
to the
class ToolUtility
making it easy to access the currently selected brushes.
-
Custom parameter GUI can now be defined for custom tools.
-
Added BrushPropertyAttribute
so that brush selector can be used for brush
fields via the inspector.