RealityStop / Bolt.Addons.Community

A community-driven project for extending Unity Bolt
MIT License
250 stars 34 forks source link

Warning when entering a script machine for the first time (Unity 2022 LTS) #63

Closed DragonMapMaker closed 3 months ago

DragonMapMaker commented 9 months ago

I am getting a warning whenever I enter a flow graph (script machine) for the first time. Using both Unity 2022.3.13f1 LTS and 2022.3.7f1 LTS (Visual scripting v1.9.1) with the latest version of Bolt.Addons.Community v3.1.2 (no warning in v3.1.1).

Multiple 'Unity.VisualScripting.IWidget' for 'Unity.VisualScripting.ControlConnection'. Ignoring 'ControlConnectionWidget'. UnityEngine.Debug:LogWarning (object) Unity.VisualScripting.SingleDecoratorProvider3<Unity.VisualScripting.IGraphItem, Unity.VisualScripting.IWidget, Unity.VisualScripting.WidgetAttribute>:MapAttributeTypes () (at ./Library/PackageCache/com.unity.visualscripting@1.9.1/Editor/VisualScripting.Core/Decorators/SingleDecoratorProvider.cs:63) Unity.VisualScripting.SingleDecoratorProvider3<Unity.VisualScripting.IGraphItem, Unity.VisualScripting.IWidget, Unity.VisualScripting.WidgetAttribute>:.ctor () (at ./Library/PackageCache/com.unity.visualscripting@1.9.1/Editor/VisualScripting.Core/Decorators/SingleDecoratorProvider.cs:23) Unity.VisualScripting.WidgetProvider:.ctor (Unity.VisualScripting.ICanvas) (at ./Library/PackageCache/com.unity.visualscripting@1.9.1/Editor/VisualScripting.Core/Widgets/WidgetProvider.cs:9) Unity.VisualScripting.VisualScriptingCanvas1<Unity.VisualScripting.FlowGraph>:.ctor (Unity.VisualScripting.FlowGraph) (at ./Library/PackageCache/com.unity.visualscripting@1.9.1/Editor/VisualScripting.Core/Canvases/VisualScriptingCanvas.cs:35) Unity.VisualScripting.FlowCanvas:.ctor (Unity.VisualScripting.FlowGraph) (at ./Library/PackageCache/com.unity.visualscripting@1.9.1/Editor/VisualScripting.Flow/FlowCanvas.cs:13) System.Reflection.ConstructorInfo:Invoke (object[]) Unity.VisualScripting.TypeUtility/<>c__DisplayClass8_0:<Instantiator>b__1 (object[]) (at ./Library/PackageCache/com.unity.visualscripting@1.9.1/Runtime/VisualScripting.Core/Reflection/TypeUtility.cs:125) Unity.VisualScripting.TypeUtility:Instantiate (System.Type,bool,object[]) (at ./Library/PackageCache/com.unity.visualscripting@1.9.1/Runtime/VisualScripting.Core/Reflection/TypeUtility.cs:154) Unity.VisualScripting.SingleDecoratorProvider3<Unity.VisualScripting.IGraph, Unity.VisualScripting.ICanvas, Unity.VisualScripting.CanvasAttribute>:CreateDecorator (System.Type,Unity.VisualScripting.IGraph) (at ./Library/PackageCache/com.unity.visualscripting@1.9.1/Editor/VisualScripting.Core/Decorators/SingleDecoratorProvider.cs:32) Unity.VisualScripting.SingleDecoratorProvider3<Unity.VisualScripting.IGraph, Unity.VisualScripting.ICanvas, Unity.VisualScripting.CanvasAttribute>:CreateDecorator (Unity.VisualScripting.IGraph) (at ./Library/PackageCache/com.unity.visualscripting@1.9.1/Editor/VisualScripting.Core/Decorators/SingleDecoratorProvider.cs:42) Unity.VisualScripting.SingleDecoratorProvider3<Unity.VisualScripting.IGraph, Unity.VisualScripting.ICanvas, Unity.VisualScripting.CanvasAttribute>:GetDecorator (Unity.VisualScripting.IGraph) (at ./Library/PackageCache/com.unity.visualscripting@1.9.1/Editor/VisualScripting.Core/Decorators/SingleDecoratorProvider.cs:251) Unity.VisualScripting.XCanvasProvider:Canvas (Unity.VisualScripting.IGraph) (at ./Library/PackageCache/com.unity.visualscripting@1.9.1/Editor/VisualScripting.Core/Canvases/CanvasProvider.cs:24) Unity.VisualScripting.GraphContext2<Unity.VisualScripting.FlowGraph, Unity.VisualScripting.FlowCanvas>:get_canvas () (at ./Library/PackageCache/com.unity.visualscripting@1.9.1/Editor/VisualScripting.Core/Context/GraphContext.cs:30) Unity.VisualScripting.GraphContext2<Unity.VisualScripting.FlowGraph, Unity.VisualScripting.FlowCanvas>:Unity.VisualScripting.IGraphContext.get_canvas () (at ./Library/PackageCache/com.unity.visualscripting@1.9.1/Editor/VisualScripting.Core/Context/GraphContext.cs:32) Unity.VisualScripting.GraphWindow:SetReference (Unity.VisualScripting.GraphReference,bool) (at ./Library/PackageCache/com.unity.visualscripting@1.9.1/Editor/VisualScripting.Core/Windows/GraphWindow.cs:107) Unity.VisualScripting.GraphWindow:set_reference (Unity.VisualScripting.GraphReference) (at ./Library/PackageCache/com.unity.visualscripting@1.9.1/Editor/VisualScripting.Core/Windows/GraphWindow.cs:74) Unity.VisualScripting.GraphWindow:b__64_0 () (at ./Library/PackageCache/com.unity.visualscripting@1.9.1/Editor/VisualScripting.Core/Windows/GraphWindow.cs:330) Unity.VisualScripting.PluginContainer:add_delayCall (System.Action) (at ./Library/PackageCache/com.unity.visualscripting@1.9.1/Editor/VisualScripting.Core/Plugins/PluginContainer.cs:53) Unity.VisualScripting.GraphWindow:OnEnable () (at ./Library/PackageCache/com.unity.visualscripting@1.9.1/Editor/VisualScripting.Core/Windows/GraphWindow.cs:322) UnityEditor.WindowLayout:LoadDefaultWindowPreferences ()

Blitz54 commented 9 months ago

Just want to add, I'm getting similar issues. But it also happens when I open a state graph for the first time. I also have logs for "Unity.VisualScripting.ControlConnection" and "Unity.VisualScripting.ValueConnection"

Using 2023.3.0a16 though.

Multiple 'Unity.VisualScripting.IWidget' for 'Unity.VisualScripting.ValueConnection'. Ignoring 'Unity.VisualScripting.ValueConnectionWidget'. UnityEngine.Debug:LogWarning (object) (at ?) Unity.VisualScripting.SingleDecoratorProvider3<Unity.VisualScripting.IGraphItem, Unity.VisualScripting.IWidget, Unity.VisualScripting.WidgetAttribute>:MapAttributeTypes () (at ./Library/PackageCache/com.unity.visualscripting/Editor/VisualScripting.Core/Decorators/SingleDecoratorProvider.cs:63) Unity.VisualScripting.SingleDecoratorProvider3<Unity.VisualScripting.IGraphItem, Unity.VisualScripting.IWidget, Unity.VisualScripting.WidgetAttribute>:.ctor () (at ./Library/PackageCache/com.unity.visualscripting/Editor/VisualScripting.Core/Decorators/SingleDecoratorProvider.cs:23) Unity.VisualScripting.WidgetProvider:.ctor (Unity.VisualScripting.ICanvas) (at ./Library/PackageCache/com.unity.visualscripting/Editor/VisualScripting.Core/Widgets/WidgetProvider.cs:9) Unity.VisualScripting.VisualScriptingCanvas1:.ctor (Unity.VisualScripting.StateGraph) (at ./Library/PackageCache/com.unity.visualscripting/Editor/VisualScripting.Core/Canvases/VisualScriptingCanvas.cs:35) Unity.VisualScripting.StateCanvas:.ctor (Unity.VisualScripting.StateGraph) (at ./Library/PackageCache/com.unity.visualscripting/Editor/VisualScripting.State/Graph/StateCanvas.cs:12) System.Reflection.ConstructorInfo:Invoke (object[]) (at ?) Unity.VisualScripting.TypeUtility/<>c__DisplayClass8_0:b__1 (object[]) (at ./Library/PackageCache/com.unity.visualscripting/Runtime/VisualScripting.Core/Reflection/TypeUtility.cs:125) Unity.VisualScripting.TypeUtility:Instantiate (System.Type,bool,object[]) (at ./Library/PackageCache/com.unity.visualscripting/Runtime/VisualScripting.Core/Reflection/TypeUtility.cs:154) Unity.VisualScripting.SingleDecoratorProvider3<Unity.VisualScripting.IGraph, Unity.VisualScripting.ICanvas, Unity.VisualScripting.CanvasAttribute>:CreateDecorator (System.Type,Unity.VisualScripting.IGraph) (at ./Library/PackageCache/com.unity.visualscripting/Editor/VisualScripting.Core/Decorators/SingleDecoratorProvider.cs:32) Unity.VisualScripting.SingleDecoratorProvider3<Unity.VisualScripting.IGraph, Unity.VisualScripting.ICanvas, Unity.VisualScripting.CanvasAttribute>:CreateDecorator (Unity.VisualScripting.IGraph) (at ./Library/PackageCache/com.unity.visualscripting/Editor/VisualScripting.Core/Decorators/SingleDecoratorProvider.cs:42) Unity.VisualScripting.SingleDecoratorProvider3<Unity.VisualScripting.IGraph, Unity.VisualScripting.ICanvas, Unity.VisualScripting.CanvasAttribute>:GetDecorator (Unity.VisualScripting.IGraph) (at ./Library/PackageCache/com.unity.visualscripting/Editor/VisualScripting.Core/Decorators/SingleDecoratorProvider.cs:251) Unity.VisualScripting.XCanvasProvider:Canvas (Unity.VisualScripting.IGraph) (at ./Library/PackageCache/com.unity.visualscripting/Editor/VisualScripting.Core/Canvases/CanvasProvider.cs:24) Unity.VisualScripting.GraphContext2<Unity.VisualScripting.StateGraph, Unity.VisualScripting.StateCanvas>:get_canvas () (at ./Library/PackageCache/com.unity.visualscripting/Editor/VisualScripting.Core/Context/GraphContext.cs:30) Unity.VisualScripting.GraphContext2<Unity.VisualScripting.StateGraph, Unity.VisualScripting.StateCanvas>:Unity.VisualScripting.IGraphContext.get_canvas () (at ./Library/PackageCache/com.unity.visualscripting/Editor/VisualScripting.Core/Context/GraphContext.cs:32) Unity.VisualScripting.GraphWindow:SetReference (Unity.VisualScripting.GraphReference,bool) (at ./Library/PackageCache/com.unity.visualscripting/Editor/VisualScripting.Core/Windows/GraphWindow.cs:107) Unity.VisualScripting.GraphWindow:set_reference (Unity.VisualScripting.GraphReference) (at ./Library/PackageCache/com.unity.visualscripting/Editor/VisualScripting.Core/Windows/GraphWindow.cs:74) Unity.VisualScripting.GraphWindow:MatchSelection (bool) (at ./Library/PackageCache/com.unity.visualscripting/Editor/VisualScripting.Core/Windows/GraphWindow.cs:182) Unity.VisualScripting.GraphWindow:_OnSelectionChange () (at ./Library/PackageCache/com.unity.visualscripting/Editor/VisualScripting.Core/Windows/GraphWindow.cs:271) Unity.VisualScripting.EditorApplicationUtility:OnSelectionChange () (at ./Library/PackageCache/com.unity.visualscripting/Editor/VisualScripting.Core/Utilities/EditorApplicationUtility.cs:135) UnityEditor.Selection:Internal_CallSelectionChanged () (at ?)

S2NX7 commented 9 months ago

Yea i found the problem with this when it should be fixed in the next update

camerondwills commented 4 months ago

Yea i found the problem with this when it should be fixed in the next update

Mind sharing the fix? These warnings are annoying :)

S2NX7 commented 4 months ago

Yea i found the problem with this when it should be fixed in the next update

Mind sharing the fix? These warnings are annoying :)

Replace the FlowEditor script with this:


// using UnityEngine;
// using Unity.VisualScripting;
// using System;
// using System.Collections.Generic;
// using Unity.VisualScripting.Community;

//TODO Fix warning popup

// public sealed class CommunityControlConnectionWidget : UnitConnectionWidget<ControlConnection>
// {
//     private bool canTrigger = true;
//     private Color _color = Color.white;

//     public CommunityControlConnectionWidget(FlowCanvas canvas, ControlConnection connection) : base(canvas, connection)
//     {
//     }

//     public override void HandleInput()
//     {
//         base.HandleInput();

//         var outputFlowReroute = (connection.source.unit as FlowReroute);
//         var inputFlowReroute = (connection.destination.unit as FlowReroute);

//         if (selection.Contains(connection.destination.unit) && outputFlowReroute != null)
//         {
//             if (selection.Contains(outputFlowReroute))
//             {
//                 if (e.keyCode == KeyCode.Backspace && e.rawType == EventType.KeyDown && canTrigger)
//                 {
//                     canTrigger = false;

//                     outputFlowReroute.OutputVisible = !outputFlowReroute.OutputVisible;

//                 }

//                 if (e.keyCode == KeyCode.Backspace && e.rawType == EventType.KeyUp)
//                 {
//                     canTrigger = true;
//                 }
//             }
//         }

//         if (selection.Contains(connection.source.unit) && inputFlowReroute != null)
//         {
//             if (selection.Contains(inputFlowReroute))
//             {
//                 if (e.keyCode == KeyCode.Backspace && e.rawType == EventType.KeyDown && canTrigger)
//                 {
//                     canTrigger = false;

//                     inputFlowReroute.InputVisible = !inputFlowReroute.InputVisible;

//                 }

//                 if (e.keyCode == KeyCode.Backspace && e.rawType == EventType.KeyUp)
//                 {
//                     canTrigger = true;
//                 }
//             }
//         }
//     }

//     protected override void DrawConnection()
//     {
//         var outputFlowReroute = (connection.source.unit as FlowReroute);
//         var inputFlowReroute = (connection.destination.unit as FlowReroute);

//         if (outputFlowReroute != null && !outputFlowReroute.OutputVisible)
//         {
//             _color = outputFlowReroute.OutputColor;
//             if (clippingPosition.Contains(mousePosition) && outputFlowReroute.showFlowOnHover)
//             {
//                 base.DrawConnection();
//             }
//             return;
//         }
//         else if (inputFlowReroute != null && !inputFlowReroute.InputVisible)
//         {
//             _color = inputFlowReroute.InputColor;
//             if (clippingPosition.Contains(mousePosition) && inputFlowReroute.showFlowOnHover)
//             {
//                 base.DrawConnection();
//             }
//             return;
//         }

//         if (outputFlowReroute != null && outputFlowReroute.OutputVisible)
//         {
//             _color = outputFlowReroute.OutputColor;
//         }
//         else if (inputFlowReroute != null && inputFlowReroute.InputVisible)
//         {
//             _color = inputFlowReroute.InputColor;
//         }

//         // Draw the connection as usual
//         base.DrawConnection();
//     }

//     public override Color color => Color.red;

//     #region Droplets

//     protected override Vector2 GetDropletSize()
//     {
//         return BoltFlow.Icons.valuePortConnected?[12].Size() ?? 13 * Vector2.one;
//     }

//     protected override void DrawDroplet(Rect position)
//     {
//         if (BoltFlow.Icons.valuePortConnected != null)
//         {
//             GUI.DrawTexture(position, BoltFlow.Icons.valuePortConnected[12]);
//         }
//     }

//     #endregion
// }

And replace the ValueFlowEditor with this :


// using UnityEngine;
// using Unity.VisualScripting;
// using System;
// using System.Collections.Generic;
// using Unity.VisualScripting.Community;

// [Widget(typeof(ValueConnection))]
// public sealed class ValueConnectionWidget : UnitConnectionWidget<ValueConnection>
// {
//     private bool canTrigger = true;
//     private Color _color = Color.white;

//     public ValueConnectionWidget(FlowCanvas canvas, ValueConnection connection) : base(canvas, connection)
//     {
//     }

//     public override void HandleInput()
//     {
//         base.HandleInput();

//         var outputFlowReroute = (connection.source.unit as ValueReroute);
//         var inputFlowReroute = (connection.destination.unit as ValueReroute);

//         if (selection.Contains(connection.destination.unit) && outputFlowReroute != null)
//         {
//             if (selection.Contains(outputFlowReroute))
//             {
//                 if (e.keyCode == KeyCode.Backspace && e.rawType == EventType.KeyDown && canTrigger)
//                 {
//                     canTrigger = false;

//                     outputFlowReroute.outputVisible = !outputFlowReroute.outputVisible;

//                 }

//                 if (e.keyCode == KeyCode.Backspace && e.rawType == EventType.KeyUp)
//                 {
//                     canTrigger = true;
//                 }
//             }
//         }

//         if (selection.Contains(connection.source.unit) && inputFlowReroute != null)
//         {
//             if (selection.Contains(inputFlowReroute))
//             {
//                 if (e.keyCode == KeyCode.Backspace && e.rawType == EventType.KeyDown && canTrigger)
//                 {
//                     canTrigger = false;

//                     inputFlowReroute.inputVisible = !inputFlowReroute.inputVisible;

//                 }

//                 if (e.keyCode == KeyCode.Backspace && e.rawType == EventType.KeyUp)
//                 {
//                     canTrigger = true;
//                 }
//             }
//         }
//     }

//     protected override void DrawConnection()
//     {
//         var outputFlowReroute = (connection.source.unit as ValueReroute);
//         var inputFlowReroute = (connection.destination.unit as ValueReroute);

//         if (outputFlowReroute != null && !outputFlowReroute.outputVisible)
//         {
//             if (clippingPosition.Contains(mousePosition) && outputFlowReroute.showFlowOnHover)
//             {
//                 base.DrawConnection();
//             }
//             return;
//         }
//         else if (inputFlowReroute != null && !inputFlowReroute.inputVisible)
//         {
//             if (clippingPosition.Contains(mousePosition) && inputFlowReroute.showFlowOnHover)
//             {
//                 base.DrawConnection();
//             }
//             return;
//         }

//         base.DrawConnection();
//     }

//     protected override bool colorIfActive => !BoltFlow.Configuration.animateControlConnections || !BoltFlow.Configuration.animateValueConnections;

//     #region Droplets

//     public override IEnumerable<IWidget> subWidgets => base.subWidgets;

//     protected override bool showDroplets => BoltFlow.Configuration.animateControlConnections;

//     public override Color color => Unity.VisualScripting.ValueConnectionWidget.DetermineColor(connection.source.type, connection.destination.type);

//     protected override Vector2 GetDropletSize()
//     {
//         return BoltFlow.Icons.valuePortConnected?[12].Size() ?? 13 * Vector2.one;
//     }

//     protected override void DrawDroplet(Rect position)
//     {
//         if (BoltFlow.Icons.valuePortConnected != null)
//         {
//             GUI.DrawTexture(position, BoltFlow.Icons.valuePortConnected[12]);
//         }
//     }

//     #endregion
// }