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)
|
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)
|
public static Plugin? GetPlugin(INode node)
|
||||||
{
|
{
|
||||||
|
Type nodeType = node.GetType();
|
||||||
lock (Registrations)
|
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>
|
/// </summary>
|
||||||
public abstract class NodeScript : CorePropertyChanged, INodeScript
|
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 />
|
/// <inheritdoc />
|
||||||
public event EventHandler<SingleValueEventArgs<INode>>? NodeAdded;
|
public event EventHandler<SingleValueEventArgs<INode>>? NodeAdded;
|
||||||
|
|
||||||
@ -79,8 +72,8 @@ public abstract class NodeScript : CorePropertyChanged, INodeScript
|
|||||||
Entity = new NodeScriptEntity();
|
Entity = new NodeScriptEntity();
|
||||||
ExitNode = null!;
|
ExitNode = null!;
|
||||||
|
|
||||||
NodeTypeStore.NodeTypeAdded += NodeTypeStoreOnNodeTypeChanged;
|
NodeTypeStore.NodeTypeAdded += NodeTypeStoreOnNodeTypeAdded;
|
||||||
NodeTypeStore.NodeTypeRemoved += NodeTypeStoreOnNodeTypeChanged;
|
NodeTypeStore.NodeTypeRemoved += NodeTypeStoreOnNodeTypeRemoved;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal NodeScript(string name, string description, NodeScriptEntity entity, object? context = null)
|
internal NodeScript(string name, string description, NodeScriptEntity entity, object? context = null)
|
||||||
@ -91,8 +84,8 @@ public abstract class NodeScript : CorePropertyChanged, INodeScript
|
|||||||
Context = context;
|
Context = context;
|
||||||
ExitNode = null!;
|
ExitNode = null!;
|
||||||
|
|
||||||
NodeTypeStore.NodeTypeAdded += NodeTypeStoreOnNodeTypeChanged;
|
NodeTypeStore.NodeTypeAdded += NodeTypeStoreOnNodeTypeAdded;
|
||||||
NodeTypeStore.NodeTypeRemoved += NodeTypeStoreOnNodeTypeChanged;
|
NodeTypeStore.NodeTypeRemoved += NodeTypeStoreOnNodeTypeRemoved;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -136,8 +129,8 @@ public abstract class NodeScript : CorePropertyChanged, INodeScript
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
NodeTypeStore.NodeTypeAdded -= NodeTypeStoreOnNodeTypeChanged;
|
NodeTypeStore.NodeTypeAdded -= NodeTypeStoreOnNodeTypeAdded;
|
||||||
NodeTypeStore.NodeTypeRemoved -= NodeTypeStoreOnNodeTypeChanged;
|
NodeTypeStore.NodeTypeRemoved -= NodeTypeStoreOnNodeTypeRemoved;
|
||||||
|
|
||||||
lock (_nodes)
|
lock (_nodes)
|
||||||
{
|
{
|
||||||
@ -346,7 +339,7 @@ public abstract class NodeScript : CorePropertyChanged, INodeScript
|
|||||||
sourcePinId++;
|
sourcePinId++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (IPin targetPin in sourcePin.ConnectedTo)
|
foreach (IPin targetPin in sourcePin.ConnectedTo)
|
||||||
{
|
{
|
||||||
int targetPinCollectionId = -1;
|
int targetPinCollectionId = -1;
|
||||||
@ -381,6 +374,19 @@ public abstract class NodeScript : CorePropertyChanged, INodeScript
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#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>
|
/// <summary>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user