- Runtime assembly auto-referenced by default for easier custom state creation
- Removed some redundant code and redundant using statements.
- Fix for playing selected StateMachineControllers model in the State Machine Editor when entering runtime.
- Previously required a deselect and reselect of the StateMachineController to play the model in the State Machine Editor.
- Fix for lack of stacktrace in exceptions thrown by states
- Added a call to the ReplaceModelWithActiveModel method in BaseSubStateMachineState.SwitchModel to ensure the active model is set to the current model when switching models.
- Added a reference to the StateMachineController on each State. This removes the need to use GetComponent and allows for more direct communication between states and the controller. This does introduce an issue where a StateMachine can become tightly coupled to a derived StateMachineController that then makes the StateMachineModel less reusable. This is a trade-off for the increased ease of use.
- Removal of build breaking methods in AssetUtils
- updated migration tools
- Added a method to migrate all state machine model assets
- Added a migration step to fix transitions to OnEnterState methods
- Added a migration step to add missing using statements
- Added a migration tool to upgrade to 0.9.1-beta
- Added obsolete methods back in and marked as obsolete to allow for a smoother migration to the new version
- Added support for LateUpdate in states
- Added a cache for event info obtained via reflection to reduce the runtime overhead of reflection
- BREAKING - State enter methods now require an [Enter] attribute.
- States now support typed transitions
- Example
[Transition] public event Action<int> OnTransitionWithInt - Example
[Enter] public void OnEnterWithInt(int value){}
- Example
- Abstracted validation methods to a separate class
- Added a CounterWithTargetState.
- Simplified the uss files used to style the basic states
- Fix for deleting a selection via the context menu
- SharedData.ClearData is now Obsolete and will be removed in a future release. Use SharedData.ClearAllData instead.
- Added SharedData.ClearAllData method to clear all shared data.
- Added SharedData.RemoveData(string key) method to remove a specific key from the shared data.
- Added SharedData.GetKeys() method to return all keys in the shared data.
- Added support for switching SubStateMachine models at runtime
- Added TryGetData and HasData methods to the SharedData class
- Refactored the CommandState (Available when using the ScriptableCommands package) to better handle exceptions and clean up of cancellation tokens.
- Added support for shared data between states. The SharedData object is a generic data store.
- States can access shared data via
this.SharedData
- States can access shared data via
- Shared data is exposed externally to the statemachine via StateMachineController.SharedData.
- Exposed the JumpTo method on the StateMachineController
- This allows users to manually trigger a JumpIn node externally broadening the use-cases for the VSM
- Exposed the State member of the StateMachine through a public State member of the StateMachineController
- This allows users to determine the current state and to directly call methods upon it externally.
- I experimented with implementing a StatePattern with all States implementing a common interface.
- Amended the exception forwarding of StateMachine to throw the original exception rather than wrapping it. This improves debugging errors in states.
- Added support for copy & paste
- Updated frame delay of DelayState transition to 0
- Fix for add nodes multiple times when entering runtime
- Fix for unuseful error thrown when sub state-machines ref is missing
- Fix for rogue tilda
- Added relay states
- Added Counter State
- Fix: When scenes with multiple StateMachineControllers load the selected controller and the first controller in the scene were both loaded into the same StateMachineEditor
- Fix for the Entry node often missing from new StateMachineModels when first created
- Fix for positioning new nodes correctly irrespective of zoom level
- FrameDelay labels are hidden on ghost edges
- Added support for Sticky Notes
- EntryState OnEntry transition has a FrameDelay value of 0
- JumpInStates OnExit transition has a FrameDelay value of 0
- Fixed FrameDelay behaviour
- Enabled edge glow to be effected by FrameDelay duration
- Added FrameDelay labels to each transition edge
- Added additional icons
- Added guards to StateNodeModel to prevent Awake being called when already Awake, Exit being called having already exited and OnDestroy being called having already been destroyed.
- Added a protected setter to the Model accessor of BaseSubStateMachineState
- This will allow for derived states to switch the model in the OnAwake
- Removal of the StateMachineController.Model setter.
- Switching models requires the model to go through the Unity lifecycle which wasn't and should not occur via a setter.
- Added a dedicated SwitchModel method which sets the model, creates a new instance and runs it through the unity life cycle.
- Added method level comments to the StateMachineController to clarify it`s functionality.
- Updated the sample
- Remove the traffic light sample
- Fixed the animation example
- Fix for recentering the graph view at the appropriate time
- Fix for drawing the DelayUnscaledState with the wrong view
- Added a BaseDelayState
- hotfix for asmdef file issues
- Extracted the scriptable command feature out into it's own package
- Added support for the Scriptable Command package when included in the project
- Hot fix for grid position changing when entering/exiting runtime.
- Added support for flashing edges as transitions are executed
- Changed the style of the jump nodes to better identify the draggable area of the node.
- Added a tool for flagging all StateMachineModels as dirty when the project is saved.
- Fix for State Machine Editor title
- Grid position label now scales to fit content and is reduced in precision to a single decimal place.
- Fix for overtly recentering
- Fix for double deletion
- Code refactor
- hotfix to allow opening the State Machine Editor via the StateMachineModelPropertyDrawer open button regardless of state.
- hotfix to add preprocessors to enable VSM2 in builds
- hotfix for broken icon path
- Added an edit button to custom states to enable quicker access to edit state scripts
- Refactored node icons (Breaking change for anyone using node icons in their custom states)
- Fix for StateMachineModelPropertyDrawer in SubStateMachines not opening the live instance of statemachines at runtime.
- Renamed the StateMachineModel instances produced
- Fix for parallel substate lifespan
- Adding more resilience against the error SerializedObject target has been destroyed
- Refactored the substatemachines to make them easier to extend
- Removed redundant custom editor for StateMachineController
- Fix for the life span of substates in both SubStateMachine and ParallelSubState machines we now exit the last node state machine and set the statemachine to complete when the parent node completes
- hotfix for JumpIn nodes changing ids at runtime because the node comparison method would fail at runtime.
- substate and parallel substate machine nodes now destroy substates on exit. This is more important for parallel substates.
- Added Parallel Sub State Machine State
- Added custom property drawer for StateMachineModel to include an open button
- Removed the now redundant Open button from the SubStateMachine node
- Added Random nodes for 2 and 3 outputs
- Fixed typo in name of DelayUnscaledState (possible breaking change)
- Fix for graph position label not updating when the graph is moved
- Fix for the graph state label not updating when in active mode
- SubStateMachine now has a button on the Node to open the sub state
- Moved away from using Selection.activeObject to populate the StateMachineEditor opting for a custom solution.
- Added breadcrumb trail to the StateMachineEditor to show the current state machine and parent state machines.
- Added current state label to the StateMachineEditor to show the current state of the state machine. (Still needs some work)
- Added a hue shift to the jump nodes so they don't start on red which I think confuses the jump nodes with exit nodes.
- Hotfix for editor script dependencies in runtime code
- Breaking change. Renamed the state methods because States are ScriptableObjects the Unity messages Awake and OnDestroy behave inconsistently between Unity Editor versions. Renaming provides greater control over the state lifecycle. When renaming these methods I considered just adding State on the end but this caused a clash with some State names. I also considered just adding On before the method name but this causes clashes with some transition names.
- Fix for duplication of state method calls for awake and destroy
- Removed the temporary fix for the BaseSubStateMachine that switched focus to the substatemachine on update
- Fix for states updating after exiting
- Fix for BaseSubsStateMachine not clearing down the complete handler on Exit
- BaseSubStateMachine will set the activeObject to the substate when updating. Not this is a temporary fix and will be replaced with a more robust solution in the future.
- Fix for the unavailability of Event.Current in StateGraphView when opening the state selection window
- Made a BaseStateMachineState for SubStateMachineState
- Made the SubStateMachineState more extensible.
- Added a call to the current states Exit method when a state machine is destroyed. Allowing the state an opportunity to be cleaned up as it usually would when exiting.
- Fixed issue with the
StateMachineEditorWindownot loading the last model when Unity opened. - Added custom inspector for the
StateMachineControllerto show the create and open state machines.
- First tagged release
- First release of the Visual State Machine V2