VisualScripting: Fixed Preview; Added auto-fit mode

This commit is contained in:
DarthAffe committed 2021-08-21 21:48:09 +02:00
1 parent 405d5b756c
commit 7422a9667d
14 files changed
+372 -86

No files matched your search

@@ -15,7 +15,10 @@ namespace Artemis.Core
Type ResultType { get; }
object? Context { get; set; }
event EventHandler<INode>? NodeAdded;
event EventHandler<INode>? NodeRemoved;
void Run();
void AddNode(INode node);
void RemoveNode(INode node);
@@ -16,6 +16,9 @@ namespace Artemis.Core
bool IsEvaluated { get; set; }
event EventHandler<IPin> PinConnected;
event EventHandler<IPin> PinDisconnected;
void ConnectTo(IPin pin);
void DisconnectFrom(IPin pin);
}
@@ -9,6 +9,9 @@ namespace Artemis.Core
PinDirection Direction { get; }
Type Type { get; }
event EventHandler<IPin> PinAdded;
event EventHandler<IPin> PinRemoved;
IPin AddPin();
bool Remove(IPin pin);
}
+12 -20
View File
@@ -1,18 +1,14 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
namespace Artemis.Core
{
public abstract class Node : CorePropertyChanged, INode
{
public event EventHandler Resetting;
#region Properties & Fields
private string _name;
public string Name
{
get => _name;
@@ -20,7 +16,6 @@ namespace Artemis.Core
}
private string _description;
public string Description
{
get => _description;
@@ -28,7 +23,6 @@ namespace Artemis.Core
}
private double _x;
public double X
{
get => _x;
@@ -36,7 +30,6 @@ namespace Artemis.Core
}
private double _y;
public double Y
{
get => _y;
@@ -44,7 +37,6 @@ namespace Artemis.Core
}
private object? _storage;
public object? Storage
{
get => _storage;
@@ -61,11 +53,16 @@ namespace Artemis.Core
#endregion
#region Events
public event EventHandler Resetting;
#endregion
#region Construtors
protected Node()
{
}
{ }
protected Node(string name, string description)
{
@@ -138,8 +135,7 @@ namespace Artemis.Core
}
public virtual void Initialize(INodeScript script)
{
}
{ }
public abstract void Evaluate();
@@ -154,12 +150,10 @@ namespace Artemis.Core
public abstract class Node<T> : CustomViewModelNode where T : ICustomNodeViewModel
{
protected Node()
{
}
{ }
protected Node(string name, string description) : base(name, description)
{
}
{ }
public override Type CustomViewModelType => typeof(T);
public T CustomViewModel => (T) BaseCustomViewModel!;
@@ -169,13 +163,11 @@ namespace Artemis.Core
{
/// <inheritdoc />
protected CustomViewModelNode()
{
}
{ }
/// <inheritdoc />
protected CustomViewModelNode(string name, string description) : base(name, description)
{
}
{ }
public abstract Type CustomViewModelType { get; }
public object? BaseCustomViewModel { get; set; }
@@ -28,6 +28,13 @@ namespace Artemis.Core
#endregion
#region Events
public event EventHandler<INode>? NodeAdded;
public event EventHandler<INode>? NodeRemoved;
#endregion
#region Constructors
public NodeScript(string name, string description, object? context = null)
@@ -67,11 +74,15 @@ namespace Artemis.Core
public void AddNode(INode node)
{
_nodes.Add(node);
NodeAdded?.Invoke(this, node);
}
public void RemoveNode(INode node)
{
_nodes.Remove(node);
NodeRemoved?.Invoke(this, node);
}
public void Dispose()
+16
View File
@@ -27,6 +27,13 @@ namespace Artemis.Core
#endregion
#region Events
public event EventHandler<IPin> PinConnected;
public event EventHandler<IPin> PinDisconnected;
#endregion
#region Constructors
protected Pin(INode node, string name = "")
@@ -46,18 +53,27 @@ namespace Artemis.Core
{
_connectedTo.Add(pin);
OnPropertyChanged(nameof(ConnectedTo));
PinConnected?.Invoke(this, pin);
}
public void DisconnectFrom(IPin pin)
{
_connectedTo.Remove(pin);
OnPropertyChanged(nameof(ConnectedTo));
PinDisconnected?.Invoke(this, pin);
}
public void DisconnectAll()
{
List<IPin> connectedPins = new(_connectedTo);
_connectedTo.Clear();
OnPropertyChanged(nameof(ConnectedTo));
foreach (IPin pin in connectedPins)
PinDisconnected?.Invoke(this, pin);
}
private void OnNodeResetting(object sender, EventArgs e)
@@ -20,6 +20,13 @@ namespace Artemis.Core
#endregion
#region Events
public event EventHandler<IPin> PinAdded;
public event EventHandler<IPin> PinRemoved;
#endregion
#region Constructors
protected PinCollection(INode node, string name, int initialCount)
@@ -35,14 +42,26 @@ namespace Artemis.Core
#region Methods
public IPin AddPin()
{
IPin pin = CreatePin();
_pins.Add(pin);
PinAdded?.Invoke(this, pin);
return pin;
}
public bool Remove(IPin pin) => _pins.Remove(pin);
public bool Remove(IPin pin)
{
bool removed = _pins.Remove(pin);
if (removed)
PinRemoved?.Invoke(this, pin);
return removed;
}
protected abstract IPin CreatePin();