Data model node - Fixed pins disconnecting after restart

Data model event node - Fixed pins disconnecting after restart
Node editor - Fixed connecting already connected input pins to an output pin causing a crash
Node editor - Added auto-save every 2 minutes while nodes are open (profiles are already auto-saved whenever you make a change, nodes will get the same treatment later)
This commit is contained in:
Robert committed 2022-08-30 17:22:36 +02:00
1 parent 0120f37c93
commit 88f01abe0d
10 files changed
+156 -99

No files matched your search

@@ -11,17 +11,15 @@ namespace Artemis.Core.Services;
internal class ProcessMonitorService : IProcessMonitorService
{
private readonly ProcessComparer _comparer;
private readonly ILogger _logger;
private Process[] _lastScannedProcesses;
public ProcessMonitorService(ILogger logger)
public ProcessMonitorService()
{
_logger = logger;
_comparer = new ProcessComparer();
_lastScannedProcesses = Process.GetProcesses();
Timer processScanTimer = new(1000);
processScanTimer.Elapsed += OnTimerElapsed;
processScanTimer.Start();
_comparer = new ProcessComparer();
ProcessActivationRequirement.ProcessMonitorService = this;
}
@@ -30,16 +28,9 @@ internal class ProcessMonitorService : IProcessMonitorService
{
Process[] newProcesses = Process.GetProcesses();
foreach (Process startedProcess in newProcesses.Except(_lastScannedProcesses, _comparer))
{
ProcessStarted?.Invoke(this, new ProcessEventArgs(startedProcess));
//_logger.Verbose("Started Process: {startedProcess}", startedProcess.ProcessName);
}
foreach (Process stoppedProcess in _lastScannedProcesses.Except(newProcesses, _comparer))
{
ProcessStopped?.Invoke(this, new ProcessEventArgs(stoppedProcess));
//_logger.Verbose("Stopped Process: {stoppedProcess}", stoppedProcess.ProcessName);
}
_lastScannedProcesses = newProcesses;
}
@@ -8,7 +8,7 @@ namespace Artemis.Core;
/// <summary>
/// Represents a node script
/// </summary>
public interface INodeScript : INotifyPropertyChanged, IDisposable
public interface INodeScript : INotifyPropertyChanged, IDisposable, IStorageModel
{
/// <summary>
/// Gets the name of the node script.
@@ -66,6 +66,11 @@ public interface INodeScript : INotifyPropertyChanged, IDisposable
/// </summary>
/// <param name="node">The node to remove</param>
void RemoveNode(INode node);
/// <summary>
/// Loads missing connections between the nodes of this node script from storage
/// </summary>
void LoadConnections();
}
/// <summary>
@@ -12,7 +12,7 @@ namespace Artemis.Core;
/// <summary>
/// Represents a node script
/// </summary>
public abstract class NodeScript : CorePropertyChanged, INodeScript, IStorageModel
public abstract class NodeScript : CorePropertyChanged, INodeScript
{
private void NodeTypeStoreOnNodeTypeChanged(object? sender, NodeTypeStoreEvent e)
{
@@ -226,9 +226,7 @@ public abstract class NodeScript : CorePropertyChanged, INodeScript, IStorageMod
return node;
}
/// <summary>
/// Loads missing connections between the nodes of this node script from the <see cref="Entity" />
/// </summary>
/// <inheritdoc />
public void LoadConnections()
{
List<INode> nodes = Nodes.ToList();