diff --git a/src/Artemis.Core/Services/PluginManagementService.cs b/src/Artemis.Core/Services/PluginManagementService.cs
index c5eba9608..dc5d1e3b1 100644
--- a/src/Artemis.Core/Services/PluginManagementService.cs
+++ b/src/Artemis.Core/Services/PluginManagementService.cs
@@ -233,7 +233,7 @@ internal class PluginManagementService : IPluginManagementService
}
catch (Exception e)
{
- _logger.Warning(new ArtemisPluginException("Failed to load plugin", e), "Plugin exception");
+ _logger.Warning(new ArtemisPluginException($"Failed to load plugin at {subDirectory}", e), "Plugin exception");
}
}
diff --git a/src/Artemis.Core/Stores/NodeTypeStore.cs b/src/Artemis.Core/Stores/NodeTypeStore.cs
index 401db6406..fb96f2794 100644
--- a/src/Artemis.Core/Stores/NodeTypeStore.cs
+++ b/src/Artemis.Core/Stores/NodeTypeStore.cs
@@ -62,9 +62,10 @@ internal class NodeTypeStore
public static Plugin? GetPlugin(INode node)
{
+ Type nodeType = node.GetType();
lock (Registrations)
{
- return Registrations.FirstOrDefault(r => r.Plugin.GetType().Assembly == node.GetType().Assembly)?.Plugin;
+ return Registrations.FirstOrDefault(r => r.NodeData.Type == nodeType)?.Plugin;
}
}
diff --git a/src/Artemis.Core/VisualScripting/NodeScript.cs b/src/Artemis.Core/VisualScripting/NodeScript.cs
index 8abc29fbd..8644c06b0 100644
--- a/src/Artemis.Core/VisualScripting/NodeScript.cs
+++ b/src/Artemis.Core/VisualScripting/NodeScript.cs
@@ -14,13 +14,6 @@ namespace Artemis.Core;
///
public abstract class NodeScript : CorePropertyChanged, INodeScript
{
- private void NodeTypeStoreOnNodeTypeChanged(object? sender, NodeTypeStoreEvent e)
- {
- // Only respond to node changes applicable to the current script
- if (Entity.Nodes.Any(n => e.TypeRegistration.MatchesEntity(n)))
- Load();
- }
-
///
public event EventHandler>? NodeAdded;
@@ -79,8 +72,8 @@ public abstract class NodeScript : CorePropertyChanged, INodeScript
Entity = new NodeScriptEntity();
ExitNode = null!;
- NodeTypeStore.NodeTypeAdded += NodeTypeStoreOnNodeTypeChanged;
- NodeTypeStore.NodeTypeRemoved += NodeTypeStoreOnNodeTypeChanged;
+ NodeTypeStore.NodeTypeAdded += NodeTypeStoreOnNodeTypeAdded;
+ NodeTypeStore.NodeTypeRemoved += NodeTypeStoreOnNodeTypeRemoved;
}
internal NodeScript(string name, string description, NodeScriptEntity entity, object? context = null)
@@ -91,8 +84,8 @@ public abstract class NodeScript : CorePropertyChanged, INodeScript
Context = context;
ExitNode = null!;
- NodeTypeStore.NodeTypeAdded += NodeTypeStoreOnNodeTypeChanged;
- NodeTypeStore.NodeTypeRemoved += NodeTypeStoreOnNodeTypeChanged;
+ NodeTypeStore.NodeTypeAdded += NodeTypeStoreOnNodeTypeAdded;
+ NodeTypeStore.NodeTypeRemoved += NodeTypeStoreOnNodeTypeRemoved;
}
#endregion
@@ -136,8 +129,8 @@ public abstract class NodeScript : CorePropertyChanged, INodeScript
///
public void Dispose()
{
- NodeTypeStore.NodeTypeAdded -= NodeTypeStoreOnNodeTypeChanged;
- NodeTypeStore.NodeTypeRemoved -= NodeTypeStoreOnNodeTypeChanged;
+ NodeTypeStore.NodeTypeAdded -= NodeTypeStoreOnNodeTypeAdded;
+ NodeTypeStore.NodeTypeRemoved -= NodeTypeStoreOnNodeTypeRemoved;
lock (_nodes)
{
@@ -346,7 +339,7 @@ public abstract class NodeScript : CorePropertyChanged, INodeScript
sourcePinId++;
continue;
}
-
+
foreach (IPin targetPin in sourcePin.ConnectedTo)
{
int targetPinCollectionId = -1;
@@ -381,6 +374,19 @@ public abstract class NodeScript : CorePropertyChanged, INodeScript
}
#endregion
+
+ private void NodeTypeStoreOnNodeTypeAdded(object? sender, NodeTypeStoreEvent e)
+ {
+ if (Entity.Nodes.Any(n => e.TypeRegistration.MatchesEntity(n)))
+ Load();
+ }
+
+ private void NodeTypeStoreOnNodeTypeRemoved(object? sender, NodeTypeStoreEvent e)
+ {
+ List nodes = Nodes.Where(n => n.GetType() == e.TypeRegistration.NodeData.Type).ToList();
+ foreach (INode node in nodes)
+ RemoveNode(node);
+ }
}
///