Release Notes
Added
Doozy Dashboard
UITag system
UITooltip system
UIPopup system
Added
UIBehaviour and UIBehaviour.Event shortcuts to all UISelectables
TriggerValueChanged parameter for all relevant methods in UIToggle and UIToggleGroup
A secondary stream (streamIgnoreDisabled) to the BackButton class, that sends 'Back' button signals even if the functionality is disabled
A cooldown option for the UIButton and UIToggle components, to prevent the button/toggle from being clicked multiple times in a short period of time
Changed
GraphicRaycaster is no longer a required component for UIContainer components
Updated
Progressor database icon
Fixed
FlowPort GetValue from Json calling with a null valueType
BaseUISelectableAnimator possible null reference for the controller's OnSelectionStateChangedCallback
CategoruNameIdUtils not adding the default category name 'None' and default name 'None' when calling RefreshCategories and RefreshNames
Several editors not unregistering from Unity's Undo system
Editor
Fixed EnabledIndicator not resetting its position to relative on Reset
Various editor fixes across all fluid components
Added
Custom Start Value (color) to all Color Animations
Display dialogues for all database Refresh buttons to inform the user what the operation does
Changed
UINode canGoBack property to public
Improved
TickService to stop generating GC (thanks OscarLeif)
Fixed
SingletonBehaviour from setting the applicationIsQuitting flag to TRUE OnDestroy
ColorAnimationTab not updating the animation.startColor as expected
All Color animator editors from overriding the startColor after it has been changed by the developer in the Editor
SpriteAnimationDrawer using FloatField instead of IntegerField for frame offset and custom frame values
Progressor null references when resetting to start values after the target object has been deleted
Sprite Reaction not working when using From and To custom frame
Progressor allowing circular reference for ProgressorTargets (does not allow targeting itself anymore)
UIAnimator null reference if the object is being deleted while the animation is running
UIToggle not sending a signal when its value is changed by a UIToggleGroup (via the UpdateValueFromGroup method) (thanks Konstantin)
UIToggleGroup triggering twice ValueChanged whenever isOn changes
Editor
Fixed FluidRangeSlider not calling onStartValueChange when capturing the pointer
FluidTab not resetting its indicator as expected
New Tools
UI Designer - Rotate
UI Designer - Scale
UI Designer - Size
Fixed
ColorAnimatorEditor not finding its color target
Editor
Added FluidRangeSlider component
Fixed FluidToggleButtonTab not rounding its corners accoring to the set position
New System
UI Designer
New Tools
UI Designer - Align (and distribute)
Added
Wait for Scene to Load option for the Load Scene Node
Fixed
FlowGraph history from registering the same node twice in a row and create mini back flow loops
SceneDiector missing validation checks when unloading scenes (now it checks if the scene is loaded before attempting to unload it)
TimeScale Node not working as expected
Added
UIMenuCamera handling option for ReactorControllers
Categories rename button for in all CategoryNameDatabases
Updated
UIContainerUIAnimator and UISelectableUIAnimator animation tabs to show move, rotate, scale and fade enabled indicators
Fixed
BaseUISelectableAnimator from triggering double animations in certain use-cases
UIMenuItemButton not resetting its preview every time the pointer leaves its bounds
FluidWindows duplicating their content when entering PlayMode (in some cases Unity calls CreateGUI without reason)
Progressor from printing a debug log about its reaction's heartbeat
BaseUIContainerEditor missing null check for onStartBehaviourEnumField
UIContainer and UISelectable animator’s editors from resetting to start values without any animations being triggered beforehand
ReactionSettingsDrawer giving null references in the editor for the PlayMode and Ease enums
CategoryNameGroupWindowLayout not displaying the 'Empty Database' placeholder as expected
Editor
Fixed FluidTab, UIAnimationTab and ColorTab not resetting their size when recycled
New Components
SceneLoader
SceneDirector
FloatAnimator
IntAnimator
Vector2Animator
Vector3Animator
UIContainerFloatAnimator
UIContainerIntAnimator
UIContainerVector2Animator
UIContainerVector3Animator
UISelectableFloatAnimator
UISelectableIntAnimator
UISelectableVector2Animator
UISelectableVector3Animator
New Nodes
LoadSceneNode
UnloadSceneNode
ActivateLoadedScenesNode
Added
GameObject context menu for most relevant components
Open graph in Nody to the Flow Controller component
API buttons to all components and nodes
Progressor Id database system. You can now find and use Progressors by category/name ids
Improved
Nody Create Node window to allow dropping folders directy into the runtime and editor paths text fields, to get a path
Nody window regeneration when entering and exiting PlayMode
Nody window handling of flow graphs by a significant margin
RoamingDatabase Validate method by replacing AssetDatabase.SaveAssets with AssetDatabase.SaveAssetIfDirty
Improved memory allocations for FlowGraph and FlowController
Editors for animators to allow triggering the animations in the editor (outside play mode)
Changed
ModyEvents from having and Enabled option. They are now always enabled
MenuItem structure
AddComponentMenu structure
All components that derived from UISelectableComponent<T> and to derive from UISelectable directly
Updated
NewNodeEditor template to use EditorSpriteSheets and added a few extra instructions
NewNodeView template with a few extra instructions on how to set custom colors
Fixed
Custom editors missing right side spacing in the Inspector
UpdateBot having its Update option true by default and triggering a Global Refresh without reason (new default value is now false)
Navigation visualization not showing in edit mode
Category Name IDs error when category and name are set to 'None'
UISelectable not adding the BackButton to the scene when Domain Reload is disabled
Editor
Every usage of the FluidAnimatedContainer has been checked and fixed to avoid duplicating elements
Fixed FluidAnimatedContainer from sometimes displaying its contents for 1 frame before Show
Changed FluidAnimatedContainer animation 'feel'
Added
Shortcut methods to UIBehaviours for all UISelectable components
A 'triggerCallbacks' parameter to all relevant UIContainer's methods to allow triggering of visibility changes without triggering callbacks
Changed
Nody Create New Node templates from using EditorMicroAnimations to EditorSpriteSheets
FlowController Stop method by also calling OnExit on the active node and then setting it to null
RectTransfrom extensions to work as chained methods
UIContainer handling of connected Progressors to better address various use-cases
UIMenuCamera multishot behaviour for UIContainer targets
Improved
Sprite sheet textures loading times by stripping raw data when creating the virtual textures used in the editor
Fixed
UIMenuCamera giving an error if the new Input System is not enabled
UIBehaviours not automatically connecting newly added behaviours
ModyEvent missing initialization for the UnityEvent
UIContainer triggering visibility changes without it changing
UIContainer Show/Hide being executed with 2 frame delays by the Coroutiner
Triggers from adding a Canvas and a GraphicRaycaster component when they are not needed
Editor
UIMenuItemEditor updated to handle animated preview null references
Added new sprite sheet icons to the UIMenu
Added
Empty state for UIMenuWindow
Updated
Most side menus to be resizable
Side menu to save/load custom width and collapsed state to/from EditorPrefs
Fixed
PathUtils using UnityEditor
FluidWindows from drawing themselves twice when Entering Play Mode and the window is not focused
New Components
UIMenuCamera (for editor use only) - helper class for the UIMenu - creates snapshots and animations for UIMenuItem preview
Coroutiner - specialized class used to fire Coroutines on a singleton instance
Added
A new system to handle sprite sheets
A silent implementations for Sprite animators to auto-reference sprite sheets when using the drag and drop (you can drag and drop a sliced texture and it will reference all the sliced sprites)
New properties to the UIContainer - 'totalDurationForShow' and 'totalDurationForHide' to get the maximum duration for Show and Hide animations.
Animation Duration setting for UIMenuItem
UIMenuItemButton OnPointerLeave trigger to reset the preview animation
A 'Collapse All' button to the UIMenu window
A scale slider to the UIMenu window for all the menu items
A 'New Category' text label to all database windows for a better UX
Progressor Targets to the Progressor component; this allows a Progressor to update the progress of other (target) Progressors when activated
Show, Hide and Show/Hide Progressors options for every UIContainer
Changed
UIContainer disable gameobject delay from 1 to 3 frames
UIContainer RunBehaviour to have 2 frames delay when calling Show (this fixes issues when the container is inside a LayoutGroup, as it allows for the horizontal and vertical to get calculated)
All animated graphics inside EditorUI from a micro-animation to a sprite sheet
Various changes to adapt to the new sprite sheet system
UIMenu Item Button design to adapt to the new scale slider
Moved RectTransformExtensions from 'Doozy.Runtime.UIElements.Extensions' to 'Doozy.Runtime.Common.Extensions'
UIMenu Window to have a better workflow and UX
All native prefabs to a unified design schema
Updated
Quick links inside the readme text file
Example 01 and Example 02 to work with sprite sheets
Various editor code structure and functionality to improve performance and UX
Various runtime code descriptions to improve UX and to better explain functionalities of fields, properties, methods, and classes
Fixed
DomainReloadHandler from running if PlayModeOptions are not enabled
UIBehaviourHandler calling ForceRebuildLayoutImmediate from OnValidate
UIContainer initialization and Show/Hide sequencing
Progressor Play not resetting the reaction to the start value (depending on the play direction)
Database windows from giving null reference exceptions when used as tabs and switching to and from Play Mode
POSSIBLE BREAKING CHANGE
Due to the new ways UI animators work under layout groups, some behaviours might have changed. If you're using layout groups and have UI animators attached to their children, check to see if the new behaviour does not break your animations.
Added
UIToggleGroup option to override and control the interactable state for all the connected UIToggles
An extension method for MoveDirection - Reverse - that returns the opposite direction
LateUpdate for UISelectableUIAnimator, UIContainerUIAnimator and UIAnimator to get position changes while in a layout group
FlowGraph OnStart and OnStop unity events
Changed
UISelectable OnEnable initialization order
The way UISelectableUIAnimator, UIContainerUIAnimator and UIAnimator work when in a layout group
Default values for Reactor EditorFPS and RuntimeFPS to 120
FlowGraph initialized get property from private to public
Updated
Example 01 to work with the new animators settings and at any aspect ratio
Tab Layouts prefabs
Horizontal and Vertical layouts prefabs
Fixed
UINode Time Delay not working when set to zero
UIContainer execution order inside IsHiding and IsShowing coroutines
UIBehaviourHandler OnRectTransformDimensionsChanged initialization
ReactorUtils checking for a rootCanvas without cause
UIContainer timing for Show and Hide
UIContainer from calling InstantShow after a Show
UIContainer from calling InstantHide after a Hide
UIAnimationPreset data folder path
Editor
Fluid Animated Contaienr now also updates its container instead of only recalculating its values
Fixed SimpleModyActionDrawer animated container not clearing when hidden
Fixed FloatModyActionDrawer animated container not clearing when hidden
Added a name to the animated container for a ModyActinsDrawerItem
Added
Example 07 - Progressor Control
Removed
Progressor eased progress
Changed
Progressor PlayToProgress and PlayToValue functionalities to play in a more visual appealing way
Improved
FlowGraph memory footprint by converting LINQ to code, in all update methods, to reduce GC allocations
Fixed
ProgressorEditor null reference
UIContainer disabling the GameObject too early
BaseTargetComponentAnimator from updating its settings on enable
BaseUISelectableAnimator not doing a null check for a controller on ConnectToController and DisconnectFromController
BREAKING CHANGE
To fix a typo, the preprocessor directive that activated the old input system was renamed from 'LEGACY_INPUT_MANGER' to 'LEGACY_INPUT_MANAGER'.
If you're using the old input system please check the define symbols in your project to have the correct variant.
New Components
UIBehaviourHandler
Added
SetStartColor methods for UISelectableColorAnimator
SetStartColor, SetStartColorForShow and SetStartColorForHide methods for UIContainerColorAnimator
Changed
The way a FlowController starts a flow, by increasing the start delay. The flow starts at the end of the second frame instead at the beginning of it.
UIContainer InstantToggle and Toggle functionalities. They no longer use a bool parameter and toggle (instant) show/hide according to the visibility state.
Improved
Load times for DomainReloadHandler
Update Bot to regenerate missing asmdef files
Fixed
Attached UI animators from getting disconnected OnDisable
FlowController having Awake, Start, OnEnable and OnDisabled methods triggered when the application is not playing
FlowController trying to stop a FlowGraph that has not been initialized
UINode and PortalNode not performing null checks when stopping their listeners
A typo in the preprocessor directive responsible for the activation of the old input system, from 'LEGACY_INPUT_MANGER' to 'LEGACY_INPUT_MANAGER'
InputToSignal calling the wrong method ('GetKeyDown' instead of 'GetButtonDown') when using a virtual button for the old input system
UIRadialLayout not updating the UI animators attached to its children when the layout values changed
UI animators not updating the start position when inside a layout group
SpriteAnimator target finder and initialization
ColorAnimator target finer and initalization
ProgressorEditor usage of deprecated ListView code (for Unity 2021 version and up)
Various settings in the example scenes
New Components
UISubmitTrigger
Added
An UpdateBot to handle database and settings regeneration after an update
A function to the UpdateBot to add the define symbol used to activate the new input system by default
UIManager Input Setting 'Submit triggers Pointer Click' option that makes ISubmitHandler to trigger Pointer Click events (default: true)
Global Refresh button under Tools/Doozy
Fixed
About window not displaying the proper version number
ApplidationQuitNode 'Application' does not exist in the current context issue when building
VisualElementExtensions 'Debugger' does not exist in the current context issue when building
Missing preprocessor directives (define symbols) used to switch between different input solutions
Removed
Canvas and graphicRaycaster properties from UIAnimator, UIContainerUIAnimator and UISelectableUIAnimator
New Components
Progressor
Animator Progress Target
AudioMixer Progress Target
Image Progress Target
Text Progress Target
TextMeshPro Progress Target
UnityEvent Progress Target
Signal To AudioSource
Signal to Color Target
Signal to Sprite Target
UIContainer Audio
UIContainer Sprite Swapper
UISelectable Audio
UISelectable Sprite Swapper
Added
InputStream management for custom input actions (thanks to Jirdus)
SetFlowGraph method to the FlowController
License files for Inter and Ubuntu fonts
A 'clear log' button for the Signals Console
Compatibility with Play Mode Options
InputHandling options allowing the system to work with the Input System Package (new Input System) or the Legacy Input Manager (old Input System) or a Custom Input (any 3rd party input solution)
Clear Selected and Auto select GameObject after Show options for containers
Deselect after Press for all UISelectable components
Instant Toggle ON and Instant Toggle OFF callbacks for UIToggle and UIToggleGroup
Example 4 (Toggles) and 5 (Progressors)
Removed
OnClickCallback from UIToggle and UIToggleGroup
Canvas and GraphicRaycaster as required components for UIAnimator, UIContainerUIAnimator, UISelectableUIAnimator
Changed
The execution order in both both IsShowing and IsHiding IEnumerators when updating the visibilityState.
Signals Console and Stream Console row layout. Signal Name switched places with Signal Category.
Improved
Editor load times for Nody flow graph, Category Name windows, Reactor Window, UIMenu Window
Reworked
UIToggle and UIToggleGroup code to work on a wider base of use-case scenarios
All relevant animators to have their start position updated with a 2 frame delay, to allow the LayoutGroup to set a new start position
Fixed
Warning in Bezier class for a switch expression that does not handle all possible values of its input type
Window MenuItem attributes and priorities (requires Unity restart)
Signal not resetting its payload value when pooled or reset
UIMenu not generating the correct menu path for the context menu and added a regenerate UIMenu button to the UIMenuWindow. After install, open the UIMenu, click regenerate and then restart Unity. The restart is needed for Unity to refresh its context menu.
UISelectable executing twice OnClick callbacks and ignoring the active and interactable states
UIButton not seding the click signal
UISelectable behaviours connection race condition
SignalProviders that are added at runtime to persist to edit mode
Missing units in uss files
UIMenuUtils to handle menu items without a RectTransform
Signal Payload sending a message instead of a value when a string value type is sent
InputToSignal not connecting to the proper InputAction
Updated
All prefabs by removing unnecessary Canvas and GraphicRaycaster components
All toggles with instant toggle ON and OFF callbacks
Elements in the example scences
BREAKING CHANGE
Signals methods that use category/name pairs had their signatures changed to the (streamCategory, streamName,...) pattern.
This was done to align all methods that use a category/name pair to have the same signature pattern (easier to remember and work with).
Added
Flow Controller to the component menu
Removed
Unused dependincies
SubsystemRegistration for Application.quitting from SingletonBehaviour
Fixed
UIContainer UI Animator Editor override on StartPosition when entering PlayMode
UISelectable UI Animator Editor override on StartPosition when entering PlayMode
Nody new node creation not setting the proper node editor type
Unassigned local variable for guid generation in SignalsStream
Signals not generating enums for the StreamId database
SignalsStream getting a stream with inverted category and name values
Automation generators new line removal to be platform agnostic
CategoryNameDatabase refresh after removing a category
UINode not registering multiple signal exit conditions
Compatibility issues with Unity 2021.2 due to obsolete methods
SignalStream InvalidOperationException when a race condition happens