Merge remote-tracking branch 'origin/VisualScripting' into VisualScripting

This commit is contained in:
Robert committed 2021-08-31 21:02:23 +02:00
commit ecdca26cd3
18 files changed
+547 -54

No files matched your search

@@ -0,0 +1,22 @@
using System;
namespace Artemis.Core.Events
{
public class SingleValueEventArgs<T> : EventArgs
{
#region Properties & Fields
public T Value { get; }
#endregion
#region Constructors
public SingleValueEventArgs(T value)
{
this.Value = value;
}
#endregion
}
}
+4 -2
View File
@@ -42,10 +42,12 @@ namespace Artemis.Core
#endregion
#region Methods
private void Evaluate()
{
Value = ConnectedTo.Count > 0 ? (T)ConnectedTo[0].PinValue : default;
if (ConnectedTo.Count > 0)
if (ConnectedTo[0].PinValue is T value)
Value = value;
}
#endregion
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using Artemis.Core.Events;
namespace Artemis.Core
{
@@ -16,8 +17,8 @@ namespace Artemis.Core
object? Context { get; set; }
event EventHandler<INode>? NodeAdded;
event EventHandler<INode>? NodeRemoved;
event EventHandler<SingleValueEventArgs<INode>>? NodeAdded;
event EventHandler<SingleValueEventArgs<INode>>? NodeRemoved;
void Run();
void AddNode(INode node);
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using Artemis.Core.Events;
namespace Artemis.Core
{
@@ -16,8 +17,8 @@ namespace Artemis.Core
bool IsEvaluated { get; set; }
event EventHandler<IPin> PinConnected;
event EventHandler<IPin> PinDisconnected;
event EventHandler<SingleValueEventArgs<IPin>> PinConnected;
event EventHandler<SingleValueEventArgs<IPin>> PinDisconnected;
void ConnectTo(IPin pin);
void DisconnectFrom(IPin pin);
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using Artemis.Core.Events;
namespace Artemis.Core
{
@@ -9,8 +10,8 @@ namespace Artemis.Core
PinDirection Direction { get; }
Type Type { get; }
event EventHandler<IPin> PinAdded;
event EventHandler<IPin> PinRemoved;
event EventHandler<SingleValueEventArgs<IPin>> PinAdded;
event EventHandler<SingleValueEventArgs<IPin>> PinRemoved;
IPin AddPin();
bool Remove(IPin pin);
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using Artemis.Core.Events;
using Artemis.Core.Internal;
using Artemis.Core.Properties;
using Artemis.Storage.Entities.Profile.Nodes;
@@ -15,8 +16,8 @@ namespace Artemis.Core
Load();
}
public event EventHandler<INode>? NodeAdded;
public event EventHandler<INode>? NodeRemoved;
public event EventHandler<SingleValueEventArgs<INode>>? NodeAdded;
public event EventHandler<SingleValueEventArgs<INode>>? NodeRemoved;
#region Properties & Fields
@@ -76,7 +77,7 @@ namespace Artemis.Core
{
_nodes.Add(node);
NodeAdded?.Invoke(this, node);
NodeAdded?.Invoke(this, new SingleValueEventArgs<INode>(node));
}
public void RemoveNode(INode node)
@@ -86,7 +87,7 @@ namespace Artemis.Core
if (node is IDisposable disposable)
disposable.Dispose();
NodeRemoved?.Invoke(this, node);
NodeRemoved?.Invoke(this, new SingleValueEventArgs<INode>(node));
}
public void Dispose()
@@ -109,7 +110,7 @@ namespace Artemis.Core
public void Load()
{
List<INode> removeNodes = _nodes.Where(n => !n.IsExitNode).ToList();
foreach (INode removeNode in removeNodes)
foreach (INode removeNode in removeNodes)
RemoveNode(removeNode);
// Create nodes
@@ -148,7 +149,7 @@ namespace Artemis.Core
{
IPinCollection? collection = node.PinCollections.FirstOrDefault(c => c.Name == entityNodePinCollection.Name &&
c.Type.Name == entityNodePinCollection.Type &&
(int) c.Direction == entityNodePinCollection.Direction);
(int)c.Direction == entityNodePinCollection.Direction);
if (collection == null)
continue;
@@ -230,7 +231,7 @@ namespace Artemis.Core
{
Name = nodePinCollection.Name,
Type = nodePinCollection.Type.Name,
Direction = (int) nodePinCollection.Direction,
Direction = (int)nodePinCollection.Direction,
Amount = nodePinCollection.Count()
});
}
@@ -300,7 +301,7 @@ namespace Artemis.Core
{
#region Properties & Fields
public T Result => ((ExitNode<T>) ExitNode).Value;
public T Result => ((ExitNode<T>)ExitNode).Value;
public override Type ResultType => typeof(T);
+6 -5
View File
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using Artemis.Core.Events;
namespace Artemis.Core
{
@@ -29,8 +30,8 @@ namespace Artemis.Core
#region Events
public event EventHandler<IPin> PinConnected;
public event EventHandler<IPin> PinDisconnected;
public event EventHandler<SingleValueEventArgs<IPin>> PinConnected;
public event EventHandler<SingleValueEventArgs<IPin>> PinDisconnected;
#endregion
@@ -54,7 +55,7 @@ namespace Artemis.Core
_connectedTo.Add(pin);
OnPropertyChanged(nameof(ConnectedTo));
PinConnected?.Invoke(this, pin);
PinConnected?.Invoke(this, new SingleValueEventArgs<IPin>(pin));
}
public void DisconnectFrom(IPin pin)
@@ -62,7 +63,7 @@ namespace Artemis.Core
_connectedTo.Remove(pin);
OnPropertyChanged(nameof(ConnectedTo));
PinDisconnected?.Invoke(this, pin);
PinDisconnected?.Invoke(this, new SingleValueEventArgs<IPin>(pin));
}
public void DisconnectAll()
@@ -73,7 +74,7 @@ namespace Artemis.Core
OnPropertyChanged(nameof(ConnectedTo));
foreach (IPin pin in connectedPins)
PinDisconnected?.Invoke(this, pin);
PinDisconnected?.Invoke(this, new SingleValueEventArgs<IPin>(pin));
}
private void OnNodeResetting(object sender, EventArgs e)
@@ -2,6 +2,7 @@
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using Artemis.Core.Events;
namespace Artemis.Core
{
@@ -22,8 +23,8 @@ namespace Artemis.Core
#region Events
public event EventHandler<IPin> PinAdded;
public event EventHandler<IPin> PinRemoved;
public event EventHandler<SingleValueEventArgs<IPin>> PinAdded;
public event EventHandler<SingleValueEventArgs<IPin>> PinRemoved;
#endregion
@@ -48,7 +49,7 @@ namespace Artemis.Core
IPin pin = CreatePin();
_pins.Add(pin);
PinAdded?.Invoke(this, pin);
PinAdded?.Invoke(this, new SingleValueEventArgs<IPin>(pin));
return pin;
}
@@ -58,7 +59,7 @@ namespace Artemis.Core
bool removed = _pins.Remove(pin);
if (removed)
PinRemoved?.Invoke(this, pin);
PinRemoved?.Invoke(this, new SingleValueEventArgs<IPin>(pin));
return removed;
}