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.
- But back
MovedFrom
attributes on model classes.
- Searcher namespace changed to
UnityEditor.GraphToolsFoundation.Searcher
to avoid clash with package. - Searcher assemblies renamed to
Unity.GraphToolsFoundation.Searcher.*
to avoid clash with package. - Searcher meta files have new guids to avoid clash with package.
- New extensible node inspector. See
ModelInspectorView
,FieldsInspector
,ModelPropertyField<T>
andICustomPropertyField
.
- Removed dependencies on
com.unity.properties
andcom.unity.properties.ui
packages. TypeSearcherDatabase.FromItems
, usenew SearcherDatabase(items)
instead.
- MathExpressionParser can parse mathematical expressions.
- Math Book sample's MathOperator nodes now have variable input ports.
- All asmdef in the package have their
autoReferenced
properties set tofalse
. DeclarationModel.Rename
made virtual.TypeSerializer
renamed toTypeHandleHelpers
.- Capabilities are no longer serialized in graph element models.
- The searcher was changed and its code integrated to the GTF codebase.
IStencil.GetSearcherRect
was replaced byGraphToolStateExtensionsForSearcherSize.GetSearcherSize
.IStencil.SetSearcherSize
was replaced byGraphToolStateExtensionsForSearcherSize.SetSearcherSize
.UpdateModelPropertyValueCommand
was replaced bySetModelFieldCommand
.ChangeElementColorCommand
now derives fromModelCommand<TModel, TValue>
- Many uses of
GraphView
were replaced by uses ofIModelView
. DefaultFactoryExtensions
was renamedGraphViewFactoryExtensions
.- Directory
Editor/GraphElements/Elements
was renamed toEditor/GraphElements/ModelUI
. GraphView IModelUI.GraphView
changed toIModelView View
.IModelUI.AddToGraphView
renamed toAddToView
.IModelUI.RemoveFromGraphView
renamed toRemoveFromView
.IPropertyVisitorNodeTarget
renamed toIHasInspectorSurrogate
OpenedGraph.FileId
renamed toOpenedGraph.AssetLocalId
.SearcherItemUtility.GetItemFromPath
is now an extension method inSearcherItemCollectionExtensions
SearcherGraphView
made internal.TypeSearcherDatabase
renamed toTypeSearcherExtensions
- Fixed node inspector and some elements' appearance in light skin.
- Auto itemization of constants and variables is no longer on by default. Use the respectively the
BoolPref.AutoItemizeConstants
andBoolPref.AutoItemizeVariables
preferences to control the behavior.
- Bug that needlessly triggered full UI rebuild in certain conditions.
- The models and their interfaces now interact with the stencil through the new
IStencil
interface. - Added the
ContextNode
class.
IBlackboardGraphModel.PopulateCreateMenu
; Please useStencil.PopulateBlackboardCreateMenu
now.- The version of
GraphModel.CreateItemizedNode
that took aGraphToolState
as a parameter; Use the other version instead. SerializableGUID.FromParts
. Use the appropriateSerializableGUID
constructor instead.- The Resources folder.
ToggleAllPortOrientationCommand
ToggleEdgePortOrientationCommand
InlineValueEditor.CreateEditorForNodeModel
, useInlineValueEditor.CreateEditorForConstant
instead.Port.OnDropModel
Port.OnDropVariableDeclarationModel
IHasMainExecutionInputPort
IHasMainExecutionOutputPort
IHasMainInputPort
IHasMainOutputPort
IMigratePorts
NodeModel.m_Collapsed
is now serialized.Stencil
are not serialized anymore.GraphViewEditorWindow.CanHandleAssetType
is now abstract.- Moved the following to the new
Unity.GraphTools.Foundation.Overdrive.Model
assembly:- All the model interfaces and extensions
- GTF implementations of the model interfaces
Capabilities
Direction
Orientation
PortType
- Helpers to convert
SerializableGUID
toGUID
and vice versa IDependency
,LinkedNodesDependency
andPortalNodesDependency
- Moved the following to the new
Unity.GraphTools.Foundation.Overdrive
runtime assembly:Enumeration
SerializableGUID
MemberInfoUtility
TaskUtility
TypeHandle
and all the supporting classes and extensions- Extensions for
Assembly
,HashSet
,IEnumerable
andstring
- Serialization dictionary helpers
StringExtensions.CodifyString
is now a real extension method.- Reworked
EditorStateCache.GetState
to always add newly created state components to cache. Command
was renamedUndoableCommand
.CommandDispatcher.GraphToolState
is obsolete. UseCommandDispatcher.State
.GraphToolState.PreDispatchCommand
andGraphToolState.PostDispatchCommand
are now methods of theCommandDispatcher
.StateObserver
is now a generic. Use the observed state type as the type parameter.PersistedEditorState
was renamedPersistedState
.BlackboardField.NameLabel
setter is now protected.DeclarationModel.Title
is not anymore modified after renaming to make it C# compatible.GraphView
name is now mandatory in constructor.IGraphModel.Name
no longer has a setter. The defaultGraphModel
implementation returns the name of the associated asset.- The default value of
GraphView.SupportsWindowedBlackboard
changed fromfalse
totrue
. - By default, the "Build All" and "Live Tracing" buttons will not show up for graph tools. You will need to provide your own ToolbarProvider to enable them.
- When opening an graph window on its blank page, only the "New Graph", "Save All" (both disabled) and "Option" (enabled) buttons will now show in the toolbar.
- All asmdef in the package have their
autoReferenced
properties set tofalse
. DeclarationModel.Rename
made virtual.TypeSerializer
renamed toTypeHandleHelpers
.SetNodeEnabledStateCommand
renamed toChangeNodeStateCommand
.SetNodeCollapsedCommand
renamed toCollapseNodeCommand
.UpdateConstantNodeValueCommand
renamed toUpdateConstantValueCommand
.SetPlacematCollapsedCommand
renamed toCollapsePlacematCommand
.ToggleLockConstantNodeCommand
renamed toLockConstantNodeCommand
.UpdateExposedCommand
renamed toExposeVariableCommand
.ExpandOrCollapseBlackboardRowCommand
renamed toCollapseVariableInBlackboard
.ToggleTracingCommand
renamed toActivateTracingCommand
.DropTarget.CanAcceptSelectionDrop
renamed toCanAcceptDrop
GraphTraversal
is not public anymore.ICloneableExtensions
was renamed toCloneHelpers
.IEdgeModel.TryMigratePorts
was replaced byIEdgeModel.AddPlaceHolderPorts
Direction
renamed toPortDirection
Orientation
renamed toPortOrientation
- Math book samples using functions now reload properly.
- Math book graphs have access to shortcut keys.
- EditableLabels no longer need 3 clicks to focus on recent editors.
- Shortcuts registered with
ToolShortcutEventAttribute
can now be registered for a specific tool. - When a graph asset is deleted or renamed, the window is updated to reflect the change.
- Fixed rendering issue that occurs when the UI Toolkit package is installed.
- Fixed Unity shortcuts being broken by using a GTF based tool.
- Fixed the dispatcher not notifying observers of state modified by another observer.
- Added
UxmlFactory
andUxmlTraits
toCollapseButton
to make it usable from uxml files.
- Moved the creation of the
IBlackboardGraphModel
to theStencil
. - Made the extension method
IGraphElementModel.GetAllUIs
public. - Made the members of
BlackboardSectionListPart
accessible from derived classes.
DisposableStateComponentUpdater
(no longer needed)IStateComponentUpdater.BeginStateChange
andIStateComponentUpdater.EndStateChange
. SinceIStateComponentUpdater
now implementsIDisposable
, use the Disposable pattern for updaters. A newInitialize
method now replaces theBeginStateChange
.
- Renamed
StateComponent.Updater
toStateComponent.UpdateScope
.
SelectElementsCommand
ClearSelectionCommand
and to select and unselect graph view elements.ReframeGraphViewCommand
to change the graph view pan and zoom.GetPlacematMinZOrder
,GetPlacematMaxZOrder
andGetSortedPlacematModels
extension methods onIGraphModel
.GraphModel.GetEdgeType
,GraphModel.GetStickyNoteType
,GraphModel.GetPlacematType
,GraphModel.GetVariableDeclarationType
andGraphModel.GetPortalType
virtual methods used to define the type of elements to create inGraphModel.CreateEdge
,GraphModel.CreateStickyNote
,GraphModel.CreatePlacemat
,GraphModel.CreateVariableDeclaration
andGraphModel.CreatePortal
, respectively.IGraphModel.CreateGraphVariableDeclaration
can take a type parameter to create anyIVariableDeclarationModel
-derived declaration. Also provided in a generic version of the same.- Support for shortcuts defined in Unity ShortcutManager.
- Class deriving from
Stencil
must implement theToolName
property that returns a unique, human readable tool name. GraphElementModel
class as the parent class for most classes implementingIGraphElementModel
IGraphElementModel
new membersColor
,HasUserColor
andResetColor()
to customize elements colorCapbilities.Colorable
to tell anIGraphElementColor
can change color.NodeModel
andPlacematModel
have this capability by default.PortModel
now save it'sAssetModel
instead of getting it from itsNodeModel
. Assigned duringCreatePort()
ResetElementColorCommand
andChangeElementColorCommand
can be called on anyIGraphElementModel
and will check forColorable
capability.GraphElementModel
introduces versioning withVersion
for backward compatibility.VerticalPortContainerPart
created to house the vertical ports on nodes.- New Vertical Flow sample showcasing the vertical flow.
- Dirty state displayed in the window title with an *.
IChangeset
andChangesetManager
to enableIStateComponent
to manage changesets.IStateComponentUpdater
to encapsulate updates to state components.IStateObserver
for classes that observesIStateComponent
s and want to be notified of their changes.Observation
, to encapsulate an observation of anIStateComponent
by anIStateObserver
VisualElement.SafeQ
, equivalent toVisualElement.Q
but does a null check first.- Searcher Size is kept between uses.
ISelection
; query or use commands to modify theGraphToolState.SelectionState
instead.ISelectableGraphElement
: useIGraphElement
instead. Query the selection or use commands to modify the selection usingGraphToolState.SelectionState
instead. React to change in selection inGraphElement.UpdateElementFromModel()
instead.GraphView.OnSelectionChangedCallback
; react to selected state inGraphElement.UpdateElementFromModel()
instead.VisualElementBridge
; derive fromVisualElement
instead and use extension methods fromGraphViewStaticBridge
.- Unused classes and interface
SearchTreeEntry
,SearchTreeGroupEntry
,SearchWindowContext
,ISearchWindowProvider
andSearchWindow
. IGraphViewSelection
,GraphViewUndoRedoSelection
andPersistedSelection
; functionality is now handled bySelectionStateComponent
.ViewTransformChangedCallback
. Install an observer onReframeGraphViewCommand
instead, usingCommandDispatcher.RegisterObserver
.GraphModel.NodesByGuid
; useGraphModel.TryGetModelFromGuid()
instead.ChangePlacematLayoutCommand
andChangeStickyNoteLayoutCommand
: useChangeElementLayoutCommand
instead.ResizeFlags
andIResizableGraphElement
GraphModel.CreateNodeInternal
was merged intoGraphModel.CreateNode
NodeModel.DataTypeString
NodeModel.VariableString
VariableDeclarationModel.Create
; useGraphModel.CreateGraphVariableDeclaration()
instead.GraphModel.DuplicateGraphVariableDeclaration
has been made generic for anyIVariableDeclarationModel
.ShortcutHandler
manipulator. Replaced by callbacks on subclasses ofShortcutEventBase
events.GraphView.ShortcutHandler
andGraphView.GetShortcutDictionary()
To define new shortcuts, create a subclass ofShortcutEventBase
and add the[ToolShortcutEvent]
attribute to it. See theShortcutFrameAllEvent
class for an example. To respond to shortcuts, register a callback on the new shortcut event subclass.GraphElement.IsDeletable()
: ask model insteadGraphElement.IsResizable()
: ask model insteadGraphElement.IsDroppable()
: ask model insteadGraphElement.IsRenamable()
: ask model insteadGraphElement.IsCopiable()
: ask model insteadGraphViewBridge
; derive fromVisualElement
instead.Stencil.GetThisType()
- Remove
IVariableDeclarationMetadataModel
fromIVariableDeclarationModel
- Remove
GetMetadataModel()
andSetMetadataModel()
fromVariableDeclarationModel
UndoRedoTraversal
IEdgeModel.ResetPorts()
: Found in Basic modelEdgeModel
.- Removed the distinction between pre- and post-command observers. CommandObservers are now all executed before the command handler.
PrefixRemoveFromClassList
; usePrefixEnableInClassList
instead.
GraphToolState.PushUndo()
now saves theGraphViewStateComponent
(graph view pan and zoom), theBlackboardViewStateComponent
(blackboard variable expanded state) andSelectionStateComponent
(the current selection).GraphView.Selection
changed toGraphView.GetSelection()
.ISelection
replaced byIDragSource
.- Renamed
NodeSerializationHelpers
to `SerializationHelpers - Renamed
BoolPref.LogAllDispatchedActions
toBoolPref.LogAllDispatchedCommands
PlacematContainer.CycleDirection
moved toPlacematCommandsExtension.CycleDirection
- The
MainToolbar
USS namevseMenu
has been removed. It now has the USS classge-main-toolbar
. - All list of graph element models in
GraphModel
are now private. Use the corresponding properties andAdd...
/Remove...
to access them. IVariableDeclarationModel.VariableName
was replaced byIVariableDeclarationModel.GetVariableName()
CreateGraphVariableDeclarationCommand
constructor can take a type parameter to create anyIVariableDeclarationModel
-derived declaration.GraphModel.GetVariableDeclarationType
was renamed toGraphModel.GetDefaultVariableDeclarationType
PromptSearcherEvent
moved from the internal bridge to the main code base.- Tools need to call
ShortcutHelper.RegisterDefaultShortcuts()
to use the default shortcuts provided by GTF. We suggest adding an[InitializeOnLoad]
static method in the tool editor window class. CollapisbleInOutNode
now has a top and bottom container for vertical ports.InOutPortContainerPart
only handles horizontal ports.NodeModel.DeletePort
has been deprecated. The default behavior (withremoveFromOrderedPorts = false
) did not actually delete any ports. UseNodeModel.DisconnectPort
instead. In the next release,NodeModel.DeletePort
will lost its extra parameter and will always delete the ports.INodeModel.CreatePort
now takes in anOrientation
parameter.INodeModel.AddInputPort
,INodeModel.AddOutputPort
,INodeModel.AddPlaceHolderPort
,INodeModel.AddDataInputPort
,INodeModel.AddDataOutputPort
,INodeModel.AddExecutionInputPort
andINodeModel.AddExecutionOutputPort
now all take in an optionalOrientation
parameter.- Moved and renamed
GraphViewBridge.contentContainer
toGraphView.ContentContainer
- Moved and renamed
GraphViewBridge.viewTransform
toGraphView.ViewTransform
- Moved and renamed
GraphViewBridge.redrawn
toGraphView.Redrawn
IPortNode
renamed toIPortNodeModel
IInOutPortsNode
renamed toIInputOutputPortsNodeModel
ISingleInputPortNode
renamed toISingleInputPortNodeModel
ISingleOutputPortNode
renamed toISingleOutputPortNodeModel
IReorderableEdgesPort
renamed toIReorderableEdgesPortModel
- Moved Debugging plugin (tracing) from
VisualScripting
toPlugins
directory. - Moved Debugging plugin(tracing) to
UnityEditor.GraphtoolFundation.Plugins.Debugging
namespace. - Renamed Debugging
Port
toDebuggingPort
. - Port height can be more than 24px in height.
EditorStateComponent
renamed toStateComponent
- State components interface is now read-only. Updates to state components should go through their Updater.
- UI update process (most of what was in
GraphViewEditorWindow.Update()
) was refactored into implementations ofIStateObserver
:GraphView.Updater
,BlackboardUpdateObserver
,GraphProcessingStatusObserver
,SidePanelObserver
, etc. - The graph processing was refactored into the
AutomaticGraphProcessor
observer. - Graph processing error badges are not part of the
IGraphModel
anymore. They are held by theGraphProcessingStateComponent
.
- PortContainer instantiate ports UI when it is built.
CollapsibleInOutNode.Progress
is now able to find the progress bar.- CopyPasteData only use interfaces
- Clear the models to select after rebuilding the UI.
- CalculateRectToFitAll works edges drawn using something else than the Edge class.
- Constant migration in nodes
- Obsolete names on
Enumeration
- Allow dragging multiple edges from the same port.
class BasicModel.GraphTemplate<TStencil>
which provides a defaultIGraphTemplate
implementationDefaultSearcherDatabaseProvider
which provides a defaultISearcherDatabaseProvider
implementationDropTarget
abstractModelUI
class handling drag and drop from SelectionDraggerIDragAndDropHandler
interface demonstrating ability to handle drag and drop events
GtfoGraphView
class was merged intoGraphView
GtfoEditorWindow
class was merged intoGraphViewEditorWindow
VariableType
enumITranslator.TranslateAndCompile
ITranslator.CanCompile
RequestCompilationAction
(moved to Visual Scripting ECS package)IGraphAssetModel.SourceFilePath
IDroppable
interfaceIDropTarget
. Use new classDropTarget
to catchGraphView
mouse drags as drag and drop instead of move.Resizer
GtfoWindow.GetShortcutDictionary()
is no longer abstract. It is a virtual that provides a default dictionary.IGraphElement
renamed toIModelUI
GraphElement
andPort
now inherits from new classModelUI
- Renamed
State
toGraphToolState
- Renamed
Store
toCommandDispatcher
- Renamed
StoreHelper
toCommandDispatcherHelper
- Renamed
BaseAction
toCommand
and all Action to Command - Renamed all
DefaultReducer
toCommandHandler
Preferences
class is not abstract anymore.GraphView
class is not abstract anymore.GraphViewEditorWindow
class is not abstract anymore.vse-blank-page
USS class name changed toge-blank-page
CompilationResult
renamed toGraphProcessingResult
CompilationStatus
renamed toGraphProcessingStatus
GraphViewEditorWindow.RecompilationTriggerActions
renamed toGraphViewEditorWindow.GraphProcessingTriggerActions
GraphViewEditorWindow.RecompileGraph
renamed toGraphViewEditorWindow.ProcessGraph
Stencil.CreateTranslator
renamed toStencil.CreateGraphProcessor
Stencil.OnCompilationStarted
renamed toStencil.OnGraphProcessingStarted
Stencil.OnCompilationSucceeded
renamed toStencil.OnGraphProcessingSucceeded
Stencil.OnCompilationFailed
renamed toStencil.OnGraphProcessingFailed
Stencil.GetCompilationPluginHandlers
renamed toStencil.GetGraphProcessingPluginHandlers
ITranslator
renamed toIGraphProcessor
ITranslator.Compile
renamed toIGraphProcessor.ProcessGraph
BoolPref.AutoRecompile
renamed toBoolPref.AutoProcess
CompilationStateComponent
renamed toGraphProcessingStateComponent
CompilationTimer
renamed toGraphProcessingTimer
GraphView.RecompilationTriggerActions
renamed toGraphView.GraphProcessingTriggerActions
NoOpTranslator
renamed toNoOpGraphProcessor
CompilerErrorBadgeModel
renamed toGraphProcessingErrorBadgeModel
CompilerError
renamed toGraphProcessingError
CompilerQuickFix
renamed toQuickFix
CompilationOptions
renamed toGraphProcessingOptions
BoolPref.AutoProcess
andBoolPref.AutoAlignDraggedEdges
are now false by default.IGraphElementPart
,BaseGraphElementPart
renamed toIModelUIPart
,BaseModelUIPart
respectively.GraphElementPartList
renamed toModelUIPartList
ICreatableGraphTemplate
merged intoIGraphTemplate
IOnboardingProvider
interface changed toOnboardingProvider
abstract class- Default title of
GraphViewEditorWindow
is changed from Visual Script to Graph Tool Stencil.MoveNodeDependenciesByDefault
is now initialized tofalse
GraphView
andPlaceMat
no longer implementIDropTarget
Stencil.DragNDropHandler
changed toStencil.GetExternalDragNDropHandler()
. Allows to dynamically select a drag and drop handler depending on context.Graphview.ExtractVariablesFromDroppedElements
changed toStencil.ExtractVariableFromGraphElement
SerializableGUID
is now backed by a Hash128 rather than a GUID.- The internal bridge was renamed from InternalAPIEngineBridgeDev.003 to InternalAPIEngineBridge.015
- Dragging a node to a port doesn't dispatch 2 actions anymore
IMovable.Move(delta)
correctly usesdelta
parameter forNodeModel
- Remove orphaned .meta files for empty folders.
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
INodeModel.OnCreateNode()
, called when usingGraphModel.CreateNode
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.INodeModel.DefineNode()
. UseOnCreateNode
instead if you don't implementBasicModel.NodeModel
- 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.
- 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 hiding edges
- Fix a bug where dragging a blackboard variable to a port wouldn't be allowed
- Stencil shouldn't be considered serialized anymore. Kept Serializable for backward compatibility
- 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
- TypeSerializer wasn't resolving TypeHandle marked with MovedFromAttribute when type wasn't in any namespace.
- 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
- 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
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
- 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.
ContextualMenuBuilder
, implementing the common functionality ofVseContextualMenuBuilder
BlankPage
, implementing the common functionality ofVseBlankPage
GtfoGraphView
, implementing the common functionality ofVseGraphView
GtfoWindow
, implementing the common functionality ofVseWindow
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.
- 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.
Drop-12
- Added an automatic spacing feature
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
.
PanToNodeAction
. CallGraphView.PanToNode
instead.RefreshUIAction
. CallStore.ForceRefreshUI
instead.
- 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 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
Drop 11
- Added dirty asset indicator in the window title
- Made VseWindow.Update virtual to enable derived classes to override it
- Fixed copy / paste issues with graph edges
- Mark graph asset dirty when edges are created or deleted
- Fixed resize issues with the sticky notes
- Enabling vertical alignment in out-of-stack nodes w/ execution ports
- AnimationCurve constant editor
- Allow support of polymorphic edges in graph.
- Allow windows to decide if they handle specific asset types
- Rework pills visual to tell apart read-only/write-only fields
- Fix graph dirty flag when renaming token
- Fixed package warnings
- Changed the handing of the MovedFrom attribute to accept assembly strings without version and fixed support for nested types
- Added support for migrating node types which have been moved or renamed
Short description of this release