Changelog
All notable changes to this package will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
[0.7.0-preview.2] - 2021-01-18
Fixed
- Fixed compilation error on Unity 2020.2 and newer.
[0.7.0-preview.1] - 2021-01-11
Fixed
- Remove orphaned .meta files for empty folders.
[0.7.0-preview] - 2021-01-05
Added
Store.MarkStateDirty
to dirty the state and rebuild the UI completely.Store.BeginStateChange
andStore.EndStateChange
to frame modifications to models. Except inside action reducers (where this is done for you), all calls toState.MarkModelNew
,State.MarkModelChanged
andState.MarkModelDeleted
should occur betweenStore.BeginStateChange
andStore.EndStateChange
.Store.BeginViewUpdate
andStore.EndViewUpdate
. These should be the first and last operations when you update the UI.GtfoWindow.Update
call them for you.- Dependency system for UI: a graph element can declare dependencies to other graph elements. They can be forward dependencies (elements that need to be updated when the element changes) or reverse dependencies (elements that cause the element to be updated when they change). There are also additional model dependencies: a graph element can specifies it needs an update whenever some model changes.
- Graph element parts are notified when their owner is added or removed from the graph view, by calls to
BaseGraphElementPart.PartOwnerAddedToGraphView
andBaseGraphElementPart.PartOwnerRemovedFromGraphView
. IGraphElement.Setup
andIGraphElement.SetupBuildAndUpdate
now take an additional context parameter, a string that can be used to modulate the UI. This parameters is most often null, but can take different values to specify the instantiation point of the UI. The goal is to specify a context for the model representation, when we need to use different graph elements for the same model type represented in different parts of the graph view.GraphElement.AddToGraphView
andGraphElement.RemoveFromGraphView
are called when an element is added or removed from the graph view.ChangeVariableDeclarationAction
, sent when the user changes the variable declaration of a variable node.RequestCompilationAction
, sent when the user request a compilation.- Polymorphic
AnyConstant
AnimationClipConstant
,MeshConstant
,Texture2DConstant
andTexture3DConstant
Removed
State.AddModelToUpdate
. UseState.MarkModelNew
,State.MarkModelChanged
andState.MarkModelDeleted
instead.State.ClearModelsToUpdate
State.MarkForUpdate
. UseState.RequestUIRebuild
Store.StateChanged
. Use store observers instead.GraphElementFactory.CreateUI<T>(this IGraphElementModel)
extension method was removed. Use the staticGraphElementFactory.CreateUI<T>
instead.GraphView.DeleteElements()
. UseGraphView.RemoveElement()
instead.GtfoGraphView.UpdateTopology
. OverrideGtfoGraphView.UpdateUI
instead.GraphModel.LastChanges
. UseState.MarkModelNew
,State.MarkModelChanged
andState.MarkModelDeleted
instead.
Changed
- Add
BadgeModel
as a model forBadge
- Itemize menu item is enabled only on constants and (Get) variables that have more than one edge connected to their data output port.
- GTF-140 The blackboard and minimap no longer close when the add graph(+) button is pressed.
- Default BlankPage now provided
BasicModel.DeclarationModel.DisplayTitle
now marked virtualStore.RegisterObserver
andStore.UnregisterObserver
now take a parameter to register the observer as a pre-observer, triggered before the action is executed, or a post-observer, triggered after the action was executed.GraphElementFactory.GetUI
,GraphElementFactory.GetUI<T>
,GraphElementFactory.GetAllUIs
were moved to theUIForModel
class.CreateEdgeAction.InputPortModel
renamed toCreateEdgeAction.ToPortModel
CreateEdgeAction.OutputPortModel
renamed toCreateEdgeAction.FromPortModel
GraphView.PositionDependenciesManagers
renamed toGraphView.PositionDependenciesManager
(without the final s)GraphView.AddElement
andGraphView.RemoveElement
are now virtual.- Compilation is now an observer on the
Store
. The virtual propertyGtfoWindow.RecompilationTriggerActions
lists the actions that should trigger a compilation. IGraphModel
delete methods and extension methods now return the list of deleted models.- Visual Scripting
CompiledScriptingGraphAsset
now serialized inVsGraphModel
instead ofDotsStencil
- Manipulators for all graph elements as well as graph view are now overridable.
BlackboardGraphModel
is now owned by theGraphAssetModel
instead of theState
.BlackboardField
is now aGraphElement
Blackboard.GraphVariables
renamed toBlackboard.Highlightables
ExpandOrCollapseVariableDeclarationAction
renamed toExpandOrCollapseBlackboardRowAction
BlackboardGraphModel
was moved to theUnityEditor.GraphToolsFoundation.Overdrive.BasicModel
namespace- Removed the
k_
prefix from all non-private readonly fields. - Moved some images used by USS.
Stencil.GetConstantNodeValueType()
replaced byTypeToConstantMapper.GetConstantNodeType()
- Constant editor extension methods now takes an
IConstant
as their second parameter, instead of an object representing the value of the constant. ConstantEditorExtensions.BuildInlineValueEditor()
is now public.
Fixed
- GTF-126: NRE when itemize or convert variables on a set var node
TypeSerializer
wasn't resolvingTypeHandle
marked withMovedFromAttribute
when type wasn't in any namespace.- Fix a bug where dragging a token on a port would block further dragging
- Fix a bug where dragging a token to a port wouldn't create an edge
- GTF-145 Collapsed placemats at launch not hidding edges
- Fix a bug where dragging a blackboard variable to a port wouldn't be allowed
Deprecated
- Stencil shouldn't be considered serialized anymore. Kept Serializable for backward compatibility
[0.6.0-preview.4] - 2020-12-02
Changed
- Updating minimum requirements for com.unity.collections
- BasicModel.DeclarationModel.DisplayTitle now marked virtual
- Updating minimum requirements for com.unity.collections
- GraphModel.OnDuplicateNode now marked virtual
- BasicModel.DeclarationModel.DisplayTitle now marked virtual
Fixed
- TypeSerializer wasn't resolving TypeHandle marked with MovedFromAttribute when type wasn't in any namespace.
Added
- GtfoWindow-derived classes needs to implement
CanHandleAssetType(Type)
to dictate supported asset types. - Added hook (
OnDuplicateNode(INodeModel copiedNode)
) onINodeModel
when duplicating node - Added options to toggle Tracing / Options elements on
MainToolbar
- Added the
CloneGraph
function in theGraphModel
for duplicating all the models of a source graph
[0.5.0-preview.3] - 2020-10-28
[0.5.0-preview.2] - 2020-10-20
Added
- Generic
CreateEdge
on baseGraphModel
for easier overriding. GetPort
extension method to get ports by direction and port type.- Add
GraphModel
reference toStencil
- Add
InstantiateStencil
, changingStencil
set pattern inGraphModel
- new virtual property
HasEditableLabel
forEditableTitlePart
Removed
ChangePlacematColorAction
OpenDocumentationAction
UnloadGraphAssetAction
VariableType.ComponentQueryField
enum valueSpawnFlags.CreateNodeAsset
andSpawnFlags.Undoable
enum valuesCreateGraphAssetAction
andCreateGraphAssetFromModelAction
. UseGraphAssetCreationHelper
to create assets andLoadGraphAssetAction
to load it in a window.ContextualMenuBuilder
andIContextualMenuBuilder
; to populate a contextual menu, use the UIToolkit way of registering a callback on aContextualMenuPopulateEvent
or, for classes deriving fromGraphElement
, overrideBuildContextualMenu
.IEditorDataModel
andEditorDataModel
: useEditorStateComponent
if you want to hold state that is related to a window or a window-asset combination.IPluginRepository
ICompilationResultModel
Changed
- All reducers in the
UnityEditor.GraphToolsFoundation.Overdrive.VisualScripting
namespace have been moved to theUnityEditor.GraphToolsFoundation.Overdrive
namespace. - Reducers do not return the
State
anymore. - Almost all reducers are undoable.
- Replace interface
IAction
by classBaseAction
. RemoveNodesAction
renamed toBypassNodesAction
ItemizeVariableNodeAction
andItemizeConstantNodeAction
renamed toItemizeNodeAction
CreatePortalsOppositeAction
renamed toCreateOppositePortalAction
SplitEdgeAndInsertNodeAction
renamed toSplitEdgeAndInsertExistingNodeAction
UpdateConstantNodeActionValue
renamed toUpdateConstantNodeValueAction
ChangePlacematPositionAction
renamed toResizePlacematAction
DropEdgeInEmptyRegionAction
renamed toDeleteEdgeAction
CreateNodeFromInputPortAction
andCreateNodeFromOutputPortAction
renamed toCreateNodeFromPortAction
- Moved
GraphAssetModel
outside ofBasicModel
namespace since the asset is needed by GTF code. - The namespaces
UnityEditor.GraphToolsFoundation.Overdrive.Models
,UnityEditor.GraphToolsFoundation.Overdrive.GraphElements
andUnityEditor.GraphToolsFoundation.Overdrive.SmartSearch
have all been merged intoUnityEditor.GraphToolsFoundation.Overdrive
. - Simplify
IGraphModel
. Lots of methods moved out of the interface and made extension methods. Order of parameters has been somewhat standardized. EdgePortalModel
is now backed by aDeclarationModel
rather than aVariableDeclarationModel
Store.GetState()
is nowStore.State
- Bug fix: the expanded/collapsed state of blackboard variables is persisted again.
- Blackboard UI adopts the same architecture as the
GraphView
, with a backing model (IBlackboardGraphProxyElementModel
), usingIGraphElementParts
and the Setup/Build/Update lifecycle. - Added a
priority
parameter toGraphElementsExtensionMethodsCacheAttribute
to enable overriding of reducers (and all other extensions) Store.GetState()
is nowStore.State
State.CurrentGraphModel
is nowState.GraphModel
IBlackboardGraphProxyElementModel
is nowIBlackboardGraphModel
.- Moved
EditorDataModel.UpdateFlags
,EditorDataModel.AddModelToUpdate
andEditorDataModel.ClearModelsToUpdate
toState
. CompilationResultModel
is nowCompilationStateComponent
TracingDataModel
is nowTracingStateComponent
- Made
CreatePort
andDeletePort
part ot theIPortNode
interface. - Made
AddInputPort
andAddOutputPort
part of theIInOutPortsNode
interface. - Moved all variations of
AddInputPort
andAddOutputPort
to extension methods.
[0.5.0-preview.1] - 2020-09-25
Added
ContextualMenuBuilder
, implementing the common functionality ofVseContextualMenuBuilder
BlankPage
, implementing the common functionality ofVseBlankPage
GtfoGraphView
, implementing the common functionality ofVseGraphView
GtfoWindow
, implementing the common functionality ofVseWindow
Removed
VSNodeModel
VSPortModel
VSEditorDataModel
VSPreferences
VSTypeHandle
VseContextualMenuBuilder
VseBlankPage
VseGraphView
VseWindow
DebugDisplayElement
ISystemConstantNodeModel
VseUIController
, now part ofGraphView
VisualScripting.State
, now part ofOverdrive.State
UICreationHelper
, now part ofPackageTransitionHelper
IEditorDataModel
now part ofIGTFEditorDataModel
IBuilder
InputConstant
InputConstantModel
IStringWrapperConstantModel.GetAllInputs
Stencil.Builder
ConstantEditorExtensions.BuildStringWrapperEditor
PortAlignmentType
VisualScripting.Node
, merged intoCollapsibleInOutNode
VisualScripting.Token
, merged intoTokenNode
- All factory extension method in
GraphElementFactoryExtensions
except the one that creates ports.
Changed
- A lot of classes have been moved outside the
VisualScripting
namespace. IGTFStringWrapperConstantModel
was merged withIStringWrapperConstantModel
- When one drops an edge outside of a port, instead of deleting the edge, we now pop the searcher to create a new node.
- Rename
CreateCollapsiblePortNode
toCreateNode
. - Remove
GTF
from class and interface names. For example,IGTFNodeModel
becomesINodeModel
. PackageTransitionHelper
becomes `AssetHelper.- Base capabilities are no longer serialized with the
GraphToolsFoundation
prefix.
[0.4.0-preview.1] - 2020-07-28
Drop-12
Added
- Added an automatic spacing feature
API Changes
IGTFNodeModel
now has aTooltip
property.IGTFEdgeModel
FromPort
andToPort
are settable.- Implementations of Unity event functions are now virtual.
GraphModel
basic implementation now serializes edges, sticky notes and placemats as references to enable the use of derived classes for them.EditorDataModel.ElementModelToRename
was moved toIGTFEditorDataModel
.- Added default value for
IGTFGraphModel.CreateNode
spawnFlag
parameter. - Added support for
List<>
inTypeSerializer
.
Removed
PanToNodeAction
. CallGraphView.PanToNode
instead.RefreshUIAction
. CallStore.ForceRefreshUI
instead.
Fixed
- Fix issue when moving two nodes connected by edge with control points.
- Fix issue with auto placement of vertical ports with labels.
- Fix behavior of the default move and auto-placement reducers.
Changed
- Changed the automatic alignment feature to consider connected nodes
- Extract basic model implementation from VisualScripting folder/namespace to GTFO.
- Split
IGTFNodeModel
andIGTFPortModel
into finer grained interfaces. - Add default implementation of some interfaces.
- Replace
IGraphModel
byIGTFGraphModel
- Replace
IVariableDeclarationModel
byIGTFVariableDeclarationModel
- Remove unused
BlackboardThisField
andThisNodeModel
- Base Store class is now sealed. All derived store classes have been merged into the base class.
- Capabilities API modified to be more versatile
- Capabilities are no longer interfaces but rather "simple" capabilities that can be added to models.
IPositioned
has been renamedIMovable
.
- Test models in
Tests\Editor\Overdrive\GraphElements\GraphViewTesting\BasicModel
andTests\Editor\Overdrive\GTFO\UIFromModelTests\Model
have been unified underTests\Editor\Overdrive\TestModels
[0.3.0-preview.1] - 2020-07-31
Drop 11
[0.2.3-preview.3] - 2020-07-15
Added
- Added dirty asset indicator in the window title
- Made VseWindow.Update virtual to enable derived classes to override it
Fixed
- Fixed copy / paste issues with graph edges
- Mark graph asset dirty when edges are created or deleted
- Fixed resize issues with the sticky notes
[0.2.3-preview.2] - 2020-06-18
[0.2.3-preview.1] - 2020-06-18
[0.2.3-preview] - 2020-06-12
[0.2.2-preview.1] - 2020-05-06
Changed
- Enabling vertical alignment in out-of-stack nodes w/ execution ports
[0.2.1-preview.1] - 2020-03-20
Added
- AnimationCurve constant editor
- Allow support of polymorphic edges in graph.
- Allow windows to decide if they handle specific asset types
Changed
- Rework pills visual to tell apart read-only/write-only fields
Fixed
- Fix graph dirty flag when renaming token
[0.2.0-preview.4] - 2020-03-20
Changed
- Updated com.unity.properties.ui@1.1.0-preview
[0.2.0-preview.3] - 2020-02-26
Fixed
- Fixed package warnings
[0.2.0-preview.2] - 2020-02-21
Changed
- Changed the handing of the MovedFrom attribute to accept assembly strings without version and fixed support for nested types
[0.2.0-preview.1] - 2020-02-06
[0.2.0-preview] - 2020-02-05
[0.1.3-preview.1] - 2019-01-29
Added
- Added support for migrating node types which have been moved or renamed
[0.1.2-preview.10] - 2019-01-16
[0.1.2-preview.9] - 2019-12-17
[0.1.2-preview.8] - 2019-12-10
[0.1.2-preview.7] - 2019-12-09
[0.1.2-preview.6] - 2019-11-25
[0.1.2-preview.5] - 2019-11-12
[0.1.2-preview.4] - 2019-11-11
[0.1.2-preview.3] - 2019-10-28
[0.1.2] - 2019-08-15
[0.1.1] - 2019-08-12
[0.1.0] - 2019-08-01
This is the first release of Visual Scripting framework.
Short description of this release