- Resolved issue which occurs when used with recent releases where immediate previews are not shown when using paint tools in editor.
This update addresses a number of issues including bug reports and general usability improvements.
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
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
InBounds have been
added allowing users to avoid such exceptions from being thrown.
ColumnCount to tile system
component which should now be used instead of the public fields
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
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: http://forum.rotorz.com/viewtopic.php?id=21.
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.
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
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
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
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.
TileIndex.EqualityComparerwhich should be explicitly provided to generic collections when using
TileIndexas a key; as with dictionaries and hash sets.
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
Added new shortcut Alt + Mouse Wheel to adjust variation shifting.
Brush.TilePainted is now obsolete. Please update your script(s) to
use the new
PaintingUtility.TilePainted event instead.
Coalesce.OwnAndGroups to reflect new behavior. Please update your
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....
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
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.
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
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
Added new component
CustomImmediatePreview which can be implemented to
provide custom immediate previews for tile prefabs.
ToolBase.PreFilterLocalPoint so that custom tools can align active
tile from cells or points.
Fixed issue where plop position was invalid after plop was manually moved.
Immediate preview is no longer drawn for inactive renderer components.
Rotorz.Tile.Editor.BrushNozzle since this is ambiguous and is no
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.