mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
Nodes - Fixed nodes provided by plugins not saving correctly
This commit is contained in:
parent
88f01abe0d
commit
cd537051ca
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -14,13 +14,6 @@ namespace Artemis.Core;
|
||||
/// </summary>
|
||||
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();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public event EventHandler<SingleValueEventArgs<INode>>? 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
|
||||
/// <inheritdoc />
|
||||
public void Dispose()
|
||||
{
|
||||
NodeTypeStore.NodeTypeAdded -= NodeTypeStoreOnNodeTypeChanged;
|
||||
NodeTypeStore.NodeTypeRemoved -= NodeTypeStoreOnNodeTypeChanged;
|
||||
NodeTypeStore.NodeTypeAdded -= NodeTypeStoreOnNodeTypeAdded;
|
||||
NodeTypeStore.NodeTypeRemoved -= NodeTypeStoreOnNodeTypeRemoved;
|
||||
|
||||
lock (_nodes)
|
||||
{
|
||||
@ -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<INode> nodes = Nodes.Where(n => n.GetType() == e.TypeRegistration.NodeData.Type).ToList();
|
||||
foreach (INode node in nodes)
|
||||
RemoveNode(node);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user