0
Fixed

2.0.0a6 [Exception] InvalidOperationException: Graph instance not found via graph.

Ex-Crow 1 year ago updated by Lazlo Bonin (Lead Developer) 1 year ago 4

graph: https://imgur.com/Pc4q68f

New wait for seconds spazzed out.

[Exception] InvalidOperationException: Graph instance not found via graph.
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
Rethrow as InvalidOperationException: Failed to set accessor value for:
function(ClassDefinition).mybehaviour#4c292b8a#1154835712.elements.InvokeMember#9e187....ValueInput#%seconds.defaultValue
Rethrow as InvalidOperationException: Failed to set accessor value for:
function(ClassDefinition).mybehaviour#4c292b8a#1154835712.elements.InvokeMember#9e187....ValueInput#%seconds.defaultValue.(float)
GraphInstances.Uninstantiate() Assets/Ludiq/Bolt.Core/Runtime/Graphs/GraphInstances.cs:114
112: if (!byGraph.TryGetValue(instance.graph, out var instancesWithGraph))
113: {
-->114: throw new InvalidOperationException("Graph instance not found via graph.");
115: }

ClassHost.UninstantiateLive() Assets/Ludiq/Bolt.Core/Runtime/Architecture/ClassHost.cs:359
357: foreach (var graphInstance in live.graphInstances.Values)
358: {
-->359: GraphInstances.Uninstantiate(graphInstance);
360: }

ClassHost.Uninstantiate() Assets/Ludiq/Bolt.Core/Runtime/Architecture/ClassHost.cs:276
274: if (isLive)
275: {
-->276: UninstantiateLive();
277: }
278: else if (isGenerated)

ClassHost.OnDefinitionPropertyChanged() Assets/Ludiq/Bolt.Core/Runtime/Architecture/ClassHost.cs:158
156: if (wasInstantiated)
157: {
-->158: Uninstantiate();
159: }

TypeDefinition.OnPropertyChanged() Assets/Ludiq/Bolt.Core/Runtime/Architecture/TypeDefinition.cs:186
184: // Debug.Log($"{GetType().Name}.OnPropertyChanged({sender.GetType().Name}, {args.PropertyName})\n");
-->186: PropertyChanged?.Invoke(sender, args);
187: }

Ludiq.ParentMergedCollection`3[TParent,TKey,TItem].OnItemPropertyChanged() Assets/Ludiq/Ludiq.Core/Runtime/Collections/ParentMergedCollection.cs:42
40: protected virtual void OnItemPropertyChanged(object sender, PropertyChangedEventArgs args)
41: {
-->42: ItemPropertyChanged?.Invoke(sender, args);
43: }

Ludiq.ParentCollection`3[TParent,TKey,TItem].OnItemPropertyChanged() Assets/Ludiq/Ludiq.Core/Runtime/Collections/ParentCollection.cs:298
296: protected virtual void OnItemPropertyChanged(object sender, PropertyChangedEventArgs args)
297: {
-->298: ItemPropertyChanged?.Invoke(sender, args);
299: }

Graph.OnPropertyChanged() Assets/Ludiq/Bolt.Core/Runtime/Graphs/Graph.cs:162
160: protected virtual void OnPropertyChanged(object sender, PropertyChangedEventArgs args)
161: {
-->162: PropertyChanged?.Invoke(sender, args);
163: }

Ludiq.ParentMergedCollection`3[TParent,TKey,TItem].OnItemPropertyChanged() Assets/Ludiq/Ludiq.Core/Runtime/Collections/ParentMergedCollection.cs:42
40: protected virtual void OnItemPropertyChanged(object sender, PropertyChangedEventArgs args)
41: {
-->42: ItemPropertyChanged?.Invoke(sender, args);
43: }

Ludiq.ParentCollection`3[TParent,TKey,TItem].OnItemPropertyChanged() Assets/Ludiq/Ludiq.Core/Runtime/Collections/ParentCollection.cs:298
296: protected virtual void OnItemPropertyChanged(object sender, PropertyChangedEventArgs args)
297: {
-->298: ItemPropertyChanged?.Invoke(sender, args);
299: }

Ludiq.Bolt.GraphElement`1[TGraph].OnPropertyChanged() Assets/Ludiq/Bolt.Core/Runtime/Graphs/GraphElement.cs:162
160: protected virtual void OnPropertyChanged(object sender, PropertyChangedEventArgs args)
161: {
-->162: PropertyChanged?.Invoke(sender, args);
163: }

Ludiq.ParentMergedCollection`3[TParent,TKey,TItem].OnItemPropertyChanged() Assets/Ludiq/Ludiq.Core/Runtime/Collections/ParentMergedCollection.cs:42
40: protected virtual void OnItemPropertyChanged(object sender, PropertyChangedEventArgs args)
41: {
-->42: ItemPropertyChanged?.Invoke(sender, args);
43: }

Ludiq.ParentCollection`3[TParent,TKey,TItem].OnItemPropertyChanged() Assets/Ludiq/Ludiq.Core/Runtime/Collections/ParentCollection.cs:298
296: protected virtual void OnItemPropertyChanged(object sender, PropertyChangedEventArgs args)
297: {
-->298: ItemPropertyChanged?.Invoke(sender, args);
299: }

Ludiq.Bolt.UnitPort`5[TData,TValidOther,TInvalidOther,TExternalConnection,TDefinition].OnPropertyChanged() Assets/Ludiq/Bolt.Flow/Runtime/Ports/UnitPort.cs:208
206: protected virtual void OnPropertyChanged(object sender, PropertyChangedEventArgs args)
207: {
-->208: PropertyChanged?.Invoke(sender, args);
209: }

Ludiq.Bolt.UnitPort`5[TData,TValidOther,TInvalidOther,TExternalConnection,TDefinition].OnPropertyChanged() Assets/Ludiq/Bolt.Flow/Runtime/Ports/UnitPort.cs:213
211: protected void OnPropertyChanged([CallerMemberName] string propertyName = "")
212: {
-->213: OnPropertyChanged(this, new PropertyChangedEventArgs(propertyName));
214: }
215: }

ValueInput.set_defaultValue() Assets/Ludiq/Bolt.Flow/Runtime/Ports/ValueInput.cs:128
127: data.defaultValue = value;
-->128: OnPropertyChanged();
129: }
130: }

Ludiq.InstancePropertyAccessor`2[TTarget,TProperty].SetValueUnsafe() Assets/Ludiq/Ludiq.Core/Runtime/Reflection/Optimization/InstancePropertyAccessor.cs:146
144: private void SetValueUnsafe(object target, object value)
145: {
-->146: setter.Invoke((TTarget)target, (TProperty)value);
147: }
148: }

Ludiq.InstancePropertyAccessor`2[TTarget,TProperty].SetValue() Assets/Ludiq/Ludiq.Core/Runtime/Reflection/Optimization/InstancePropertyAccessor.cs:127
125: try
126: {
-->127: SetValueUnsafe(target, value);
128: }
129: catch (TargetInvocationException)

Ludiq.InstancePropertyAccessor`2[TTarget,TProperty].SetValue() Assets/Ludiq/Ludiq.Core/Runtime/Reflection/Optimization/InstancePropertyAccessor.cs:135
133: catch (Exception ex)
134: {
-->135: throw new TargetInvocationException(ex);
136: }
137: }

OptimizedReflection.SetValueOptimized() Assets/Ludiq/Ludiq.Core/Runtime/Reflection/Optimization/OptimizedReflection.cs:205
203: public static void SetValueOptimized(this PropertyInfo propertyInfo, object target, object value)
204: {
-->205: GetPropertyAccessor(propertyInfo).SetValue(target, value);
206: }

MemberAccessor.set_rawValue() Assets/Ludiq/Ludiq.Core/Editor/Meta/MemberAccessor.cs:57
55: break;
56: case Mode.Property:
-->57: property.SetValueOptimized(parent.value, value);
58: break;
59: default:

Accessor.set_instantiatedValue() Assets/Ludiq/Ludiq.Core/Editor/Meta/Accessor.cs:275
273: }
-->275: rawValue = value;
276: }
277: }

Accessor.set_value() Assets/Ludiq/Ludiq.Core/Editor/Meta/Accessor.cs:338
336: var previousValue = instantiatedValue;
-->338: lastObservedValue = instantiatedValue = value;
340: if (!ValueEquals(value, previousValue))

Accessor.set_value() Assets/Ludiq/Ludiq.Core/Editor/Meta/Accessor.cs:347
345: catch (Exception ex)
346: {
-->347: throw new InvalidOperationException("Failed to set accessor value for:\n" + this, ex);
348: }
349:   }

ProxyAccessor.set_rawValue() Assets/Ludiq/Ludiq.Core/Editor/Meta/ProxyAccessor.cs:38
36: }
-->38: binding.value = value;
39: }
40: }

Accessor.set_instantiatedValue() Assets/Ludiq/Ludiq.Core/Editor/Meta/Accessor.cs:275
273: }
-->275: rawValue = value;
276: }
277: }

Accessor.set_value() Assets/Ludiq/Ludiq.Core/Editor/Meta/Accessor.cs:338
336: var previousValue = instantiatedValue;
-->338: lastObservedValue = instantiatedValue = value;
340: if (!ValueEquals(value, previousValue))

Accessor.set_value() Assets/Ludiq/Ludiq.Core/Editor/Meta/Accessor.cs:347
345: catch (Exception ex)
346: {
-->347: throw new InvalidOperationException("Failed to set accessor value for:\n" + this, ex);
348: }
349:  }

Ludiq.ContinuousNumberInspector`1[T].OnControlGUI() Assets/Ludiq/Ludiq.Core/Editor/Inspection/Primitives/ContinuousNumberDrawer.cs.cs:35
33: {
34: accessor.RecordUndo();
-->35: accessor.value = newValue;
36: }
37: }

Inspector.DrawControl() Assets/Ludiq/Ludiq.Core/Editor/Inspection/Inspector.cs:456
454: EnsureLabelStyle();
455: BeginBlock(position);
-->456: OnControlGUI(position);
458: if (EndBlock())

Debug.LogException()

Inspector.ShieldDraw() Assets/Ludiq/Ludiq.Core/Editor/Inspection/Inspector.cs:431
429: if (GUI.Button(position, GUIContent.none, GUIStyle.none))
430: {
-->431: Debug.LogException(onGuiException);
432: }

Inspector.DrawControl() Assets/Ludiq/Ludiq.Core/Editor/Inspection/Inspector.cs:445
443: public void DrawControl(Rect position)
444: {
-->445: if (!ShieldDraw(position))
446: {
447: return;

UnitPortWidget`1.DrawInspector() Assets/Ludiq/Bolt.Flow/Editor/Ports/UnitPortWidget.cs:1059
1057: using (Inspector.adaptiveWidth.Override(true))
1058: {
-->1059: valueInspector.DrawControl(inspectorPosition);
1060: }

UnitPortWidget`1.DrawForeground() Assets/Ludiq/Bolt.Flow/Editor/Ports/UnitPortWidget.cs:753
751: if (showInspector && canvas.zoom >= FlowCanvas.inspectorZoomThreshold)
752: {
-->753: DrawInspector();
754: }

Canvas.DrawWidgetsForeground() Assets/Ludiq/Bolt.Core/Editor/Canvases/Canvas.cs:1972
1970: if (e.IsRepaint || widget.foregroundRequiresInput)
1971: {
-->1972: widget.DrawForeground();
1973: }
1974: }

Canvas.OnGUI() Assets/Ludiq/Bolt.Core/Editor/Canvases/Canvas.cs:294
292: // Draw the widgets
293: DrawWidgetsBackground();
-->294: DrawWidgetsForeground();
295: DrawWidgetsOverlay();

GraphWindow.OnGUI() Assets/Ludiq/Bolt.Core/Editor/Windows/GraphWindow.cs:679
678: {
-->679: canvas.OnGUI();
680: }

GUIUtility.ProcessEvent() C:/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:179

More stuff after trying to delete units in the graph:

[Exception] InvalidOperationException: Graph instance not found via graph.
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
GraphInstances.Uninstantiate() Assets/Ludiq/Bolt.Core/Runtime/Graphs/GraphInstances.cs:114
112: if (!byGraph.TryGetValue(instance.graph, out var instancesWithGraph))
113: {
-->114: throw new InvalidOperationException("Graph instance not found via graph.");
115: }

ClassHost.UninstantiateLive() Assets/Ludiq/Bolt.Core/Runtime/Architecture/ClassHost.cs:359
357: foreach (var graphInstance in live.graphInstances.Values)
358: {
-->359: GraphInstances.Uninstantiate(graphInstance);
360: }

ClassHost.Uninstantiate() Assets/Ludiq/Bolt.Core/Runtime/Architecture/ClassHost.cs:276
274: if (isLive)
275: {
-->276: UninstantiateLive();
277: }
278: else if (isGenerated)

ClassHost.OnDefinitionPropertyChanged() Assets/Ludiq/Bolt.Core/Runtime/Architecture/ClassHost.cs:158
156: if (wasInstantiated)
157: {
-->158: Uninstantiate();
159: }

TypeDefinition.OnPropertyChanged() Assets/Ludiq/Bolt.Core/Runtime/Architecture/TypeDefinition.cs:186
184: // Debug.Log($"{GetType().Name}.OnPropertyChanged({sender.GetType().Name}, {args.PropertyName})\n");
-->186: PropertyChanged?.Invoke(sender, args);
187: }

Ludiq.ParentMergedCollection`3[TParent,TKey,TItem].OnItemPropertyChanged() Assets/Ludiq/Ludiq.Core/Runtime/Collections/ParentMergedCollection.cs:42
40: protected virtual void OnItemPropertyChanged(object sender, PropertyChangedEventArgs args)
41: {
-->42: ItemPropertyChanged?.Invoke(sender, args);
43: }

Ludiq.ParentCollection`3[TParent,TKey,TItem].OnItemPropertyChanged() Assets/Ludiq/Ludiq.Core/Runtime/Collections/ParentCollection.cs:298
296: protected virtual void OnItemPropertyChanged(object sender, PropertyChangedEventArgs args)
297: {
-->298: ItemPropertyChanged?.Invoke(sender, args);
299: }

Graph.OnPropertyChanged() Assets/Ludiq/Bolt.Core/Runtime/Graphs/Graph.cs:162
160: protected virtual void OnPropertyChanged(object sender, PropertyChangedEventArgs args)
161: {
-->162: PropertyChanged?.Invoke(sender, args);
163: }

Graph.OnPropertyChanged() Assets/Ludiq/Bolt.Core/Runtime/Graphs/Graph.cs:167
165: protected void OnPropertyChanged([CallerMemberName] string propertyName = "")
166: {
-->167: OnPropertyChanged(this, new PropertyChangedEventArgs(propertyName));
168: }

Graph.OnElementsChanged() Assets/Ludiq/Bolt.Core/Runtime/Graphs/Graph.cs:172
170: protected virtual void OnElementsChanged(object sender, NotifyCollectionChangedEventArgs args)
171: {
-->172: OnPropertyChanged(nameof(elements));
173: }

FlowGraph.OnElementsChanged() Assets/Ludiq/Bolt.Flow/Runtime/Graphs/FlowGraph.cs:52
50: {
51: StructuralPass();
-->52: base.OnElementsChanged(sender, args);
53: }

Ludiq.ParentMergedCollection`3[TParent,TKey,TItem].OnCollectionChanged() Assets/Ludiq/Ludiq.Core/Runtime/Collections/ParentMergedCollection.cs:53
51: }
-->53: CollectionChanged?.Invoke(sender, args);
54: }

Ludiq.ParentCollection`3[TParent,TKey,TItem].OnCollectionChanged() Assets/Ludiq/Ludiq.Core/Runtime/Collections/ParentCollection.cs:303
301: protected virtual void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs args)
302: {
-->303: CollectionChanged?.Invoke(sender, args);
304: }

Ludiq.ParentCollection`3[TParent,TKey,TItem].RemoveItem() Assets/Ludiq/Ludiq.Core/Runtime/Collections/ParentCollection.cs:85
83: RawRemoveItem(index, item);
84: AfterRemove(item);
-->85: OnCollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, item, index));
86: }

System.Collections.ObjectModel.Collection`1[T].Remove() <567df3e0919241ba98db88bec4c6696f>:0

ControlInput.DisconnectFromValid() Assets/Ludiq/Bolt.Flow/Runtime/Ports/ControlInput.cs:86
84: if (connection != null)
85: {
-->86: unit.parentGraph.controlConnections.Remove(connection);
87: }
88: }

Ludiq.Bolt.UnitPort`5[TData,TValidOther,TInvalidOther,TExternalConnection,TDefinition].Disconnect() Assets/Ludiq/Bolt.Flow/Runtime/Ports/UnitPort.cs:136
134: while (validConnectedPorts.Any())
135: {
-->136: DisconnectFromValid(validConnectedPorts.First());
137: }

Ludiq.Bolt.Unit`1[TFlowGraph].Disconnect() Assets/Ludiq/Bolt.Flow/Runtime/Units/Unit.cs:343
341: while (ports.Any(p => p.hasAnyConnection))
342: {
-->343: ports.First(p => p.hasAnyConnection).Disconnect();
344: }
345: }

Ludiq.Bolt.Unit`1[TFlowGraph].BeforeRemove() Assets/Ludiq/Bolt.Flow/Runtime/Units/Unit.cs:103
101: protected override void BeforeRemove(TFlowGraph graph)
102: {
-->103: Disconnect();
105: base.BeforeRemove(graph);

Ludiq.Bolt.GraphElement`1[TGraph].Ludiq.INotifiedCollectionChild.BeforeRemove() Assets/Ludiq/Bolt.Core/Runtime/Graphs/GraphElement.cs:53
51: void INotifiedCollectionChild.BeforeRemove(IGraph graph)
52: {
-->53: BeforeRemove((TGraph)graph);
54: }

Ludiq.ParentCollection`3[TParent,TKey,TItem].BeforeRemove() Assets/Ludiq/Ludiq.Core/Runtime/Collections/ParentCollection.cs:255
253: if (item is INotifiedCollectionChild notified)
254: {
-->255: notified.BeforeRemove(parent);
256: }
257: }

Ludiq.ParentCollection`3[TParent,TKey,TItem].RemoveItem() Assets/Ludiq/Ludiq.Core/Runtime/Collections/ParentCollection.cs:82
80: {
81: var item = this[index];
-->82: BeforeRemove(item);
83: RawRemoveItem(index, item);
84: AfterRemove(item);

System.Collections.ObjectModel.Collection`1[T].Remove() <567df3e0919241ba98db88bec4c6696f>:0

Ludiq.VariantCollection`2[TBase,TImplementation].Remove() Assets/Ludiq/Ludiq.Core/Runtime/Collections/VariantCollection.cs:67
65: }
-->67: return implementation.Remove((TImplementation)item);
68: }

Ludiq.MergedKeyedCollection`2[TKey,TItem].Remove() Assets/Ludiq/Ludiq.Core/Runtime/Collections/MergedKeyedCollection.cs:173
171: public bool Remove(TItem item)
172: {
-->173: return GetCollectionForItem(item).Remove(item);
174: }

Canvas.DeleteSelection() Assets/Ludiq/Bolt.Core/Editor/Canvases/Canvas.cs:1374
1372: if (context.Widget(element).canDelete)
1373: {
-->1374: graph.elements.Remove(element);
1375: selection.Remove(element);
1376: deleted = true;

Canvas.HandleDeleting() Assets/Ludiq/Bolt.Core/Editor/Canvases/Canvas.cs:1402
1400: else if (e.IsKeyDown(KeyCode.Delete))
1401: {
-->1402: DeleteSelection();
1403: }
1404: }

Canvas.HandleLowPriorityInput() Assets/Ludiq/Bolt.Core/Editor/Canvases/Canvas.cs:371
369: HandleCarrying();
-->371: HandleDeleting();
373: HandleContext();

FlowCanvas.HandleLowPriorityInput() Assets/Ludiq/Bolt.Flow/Editor/FlowCanvas.cs:135
133: protected override void HandleLowPriorityInput()
134: {
-->135: base.HandleLowPriorityInput();
137: HandleReplacing();

Canvas.OnGUI() Assets/Ludiq/Bolt.Core/Editor/Canvases/Canvas.cs:312
311: // Handle any input that is less important than the widget's
-->312: HandleLowPriorityInput();
314: // Handle mouse / keyboard release

GraphWindow.OnGUI() Assets/Ludiq/Bolt.Core/Editor/Windows/GraphWindow.cs:679
678: {
-->679: canvas.OnGUI();
680: }

MonoMethod.Invoke() <567df3e0919241ba98db88bec4c6696f>:0

MonoMethod.Invoke() <567df3e0919241ba98db88bec4c6696f>:0

MethodBase.Invoke() <567df3e0919241ba98db88bec4c6696f>:0

HostView.Invoke() C:/buildslave/unity/build/Editor/Mono/HostView.cs:359

HostView.Invoke() C:/buildslave/unity/build/Editor/Mono/HostView.cs:353

HostView.InvokeOnGUI() C:/buildslave/unity/build/Editor/Mono/HostView.cs:329

DockArea.DrawView() C:/buildslave/unity/build/Editor/Mono/GUI/DockArea.cs:374

DockArea.OldOnGUI() C:/buildslave/unity/build/Editor/Mono/GUI/DockArea.cs:341

IMGUIContainer.DoOnGUI() C:/buildslave/unity/build/Modules/UIElements/IMGUIContainer.cs:298

IMGUIContainer.HandleIMGUIEvent() C:/buildslave/unity/build/Modules/UIElements/IMGUIContainer.cs:483

IMGUIContainer.HandleIMGUIEvent() C:/buildslave/unity/build/Modules/UIElements/IMGUIContainer.cs:466

KeyboardEventDispatchingStrategy.DispatchEvent() C:/buildslave/unity/build/Modules/UIElements/Events/KeyboardEventDispatchingStrategy.cs:21

EventDispatcher.ProcessEvent() C:/buildslave/unity/build/Modules/UIElements/EventDispatcher.cs:280

EventDispatcher.Dispatch() C:/buildslave/unity/build/Modules/UIElements/EventDispatcher.cs:156

BaseVisualElementPanel.SendEvent() C:/buildslave/unity/build/Modules/UIElements/Panel.cs:190

UIElementsUtility.DoDispatch() C:/buildslave/unity/build/Modules/UIElements/UIElementsUtility.cs:255

UIElementsUtility.ProcessEvent() C:/buildslave/unity/build/Modules/UIElements/UIElementsUtility.cs:78

GUIUtility.ProcessEvent() C:/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:179


[Exception] InvalidOperationException: Decorated object is not valid: InvokeMember#9e187....
Object has been disposed.
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
Ludiq.SingleDecoratorProvider`3[TDecorated,TDecorator,TAttribute].CreateDecorator() Assets/Ludiq/Ludiq.Core/Editor/Decorators/SingleDecoratorProvider.cs:42
40: if (!IsValid(decorated, out var reason))
41: {
-->42: throw new InvalidOperationException($"Decorated object is not valid: {decorated}.\n{reason}");
43: }

Ludiq.SingleDecoratorProvider`3[TDecorated,TDecorator,TAttribute].GetDecorator() Assets/Ludiq/Ludiq.Core/Editor/Decorators/SingleDecoratorProvider.cs:294
292: if (!decoratorExists)
293: {
-->294: decorator = CreateDecorator(decorated);
296: decorators.Add(decorated, decorator);

XWidgetProvider.Widget() Assets/Ludiq/Bolt.Core/Editor/Widgets/WidgetProvider.cs:38
36: public static IGraphElementWidget Widget(this IGraphContext context, IGraphElement element)
37: {
-->38: return (IGraphElementWidget)context.widgetProvider.GetDecorator(element);
39: }

Canvas.b__168_0() Assets/Ludiq/Bolt.Core/Editor/Canvases/Canvas.cs:1572
1570: public IEnumerable alignableAndDistributable
1571: {
-->1572: get { return selection.Select(element => context.Widget(element)).Where(element => element.canAlignAndDistribute); }
1573: }

System.Linq.Enumerable+SelectEnumerableIterator`2[TSource,TResult].MoveNext() <351e49e2a5bf4fd6beabb458ce2255f3>:0

System.Linq.Enumerable+WhereEnumerableIterator`1[TSource].GetCount() <351e49e2a5bf4fd6beabb458ce2255f3>:0

Enumerable.Count[TSource]() <351e49e2a5bf4fd6beabb458ce2255f3>:0

Canvas.OnActionToolbarGUI() Assets/Ludiq/Bolt.Core/Editor/Canvases/Canvas.cs:2281
2279: EditorGUI.EndDisabledGroup();
-->2281: EditorGUI.BeginDisabledGroup(alignableAndDistributable.Count() < 2);
2283: // Align

Canvas.OnToolbarGUI() Assets/Ludiq/Bolt.Core/Editor/Canvases/Canvas.cs:2389
2387: // Action
-->2389: OnActionToolbarGUI(true, true);
2391: GUILayout.Space(LudiqStyles.spaceBetweenCommandToolbars);

GraphWindow.OnToolbarGUI() Assets/Ludiq/Bolt.Core/Editor/Windows/GraphWindow.cs:746
744: GUILayout.FlexibleSpace();
-->746: context.canvas.OnToolbarGUI();
748: LudiqGUI.EndHorizontal();

GraphWindow.OnGUI() Assets/Ludiq/Bolt.Core/Editor/Windows/GraphWindow.cs:729
727: if (context != null)
728: {
-->729: OnToolbarGUI(toolbarPosition);
730: }
731: }

MonoMethod.Invoke() <567df3e0919241ba98db88bec4c6696f>:0

MonoMethod.Invoke() <567df3e0919241ba98db88bec4c6696f>:0

MethodBase.Invoke() <567df3e0919241ba98db88bec4c6696f>:0

HostView.Invoke() C:/buildslave/unity/build/Editor/Mono/HostView.cs:359

HostView.Invoke() C:/buildslave/unity/build/Editor/Mono/HostView.cs:353

HostView.InvokeOnGUI() C:/buildslave/unity/build/Editor/Mono/HostView.cs:329

DockArea.DrawView() C:/buildslave/unity/build/Editor/Mono/GUI/DockArea.cs:374

DockArea.OldOnGUI() C:/buildslave/unity/build/Editor/Mono/GUI/DockArea.cs:341

IMGUIContainer.DoOnGUI() C:/buildslave/unity/build/Modules/UIElements/IMGUIContainer.cs:281

GUIUtility.ProcessEvent() C:/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:179




Bolt Version:
2.0.0a6
Unity Version:
2019.2.15
Platform(s):
PC
Scripting Backend:
Mono
.NET Version (API Compatibility Level):
.NET 4.x
Bolt 2
Working on Fix

I didn't get that error specifically on my end, but I got like 4 others that seem related, so I'm working on it ;)

Can't add new units to the graph while coroutine is running in play mode. Throws a bunch of exceptions. 

Fixed (Unreleased)

Alright, here are some of the issues I fixed with coroutines:

  • You shouldn't have been able to create the WaitForSeconds instruction the way you did by default (using a constructor), because we have better native units to handle yield instructions. The reflected yield instruction units were supposed to excluded from extraction, but they weren't because the hierarchy toggle wasn't checked by default. This has been fixed.
  • In cases where somehow users did create a yield instruction manually like you did, I added a special case checking in the constructor unit to make sure the wait instruction is yielded. Basically, if you enter a constructor that returns a YieldInstruction or CustomYieldInstruction through the control input, the result will be yielded before execution continues. This also applies to the generated code.
  • Coroutines weren't disposing properly when there was no yield instruction in them at all, e.g. when they just returned in their first frame. That was happening in your case because the YieldInstruction wasn't being recognized as is, but it could theoretically happen in any coroutine where the user doesn't put any yield instruction. That has been fixed.

After those fixes, I wasn't able to trigger your specific error logs, even when adding new units to the coroutine while it was running. Maybe I fixed it as a side effect of the other fixes. Please let me know if you encounter them again in the next version (but this time with reproduction steps ;) ).