mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-12 03:48:56 +00:00
Nodes editor - Fixed cables not connecting with dynamic pins in some cases
This commit is contained in:
1 parent
ddfdbee340
commit
7e39a64fdf
4 files changed
+69
-20
No files matched your search
@@ -66,7 +66,8 @@ public class NodeScriptViewModel : ActivatableViewModelBase
|
||||
});
|
||||
NodeViewModels = nodeViewModels;
|
||||
|
||||
NodeViewModels.ToObservableChangeSet().TransformMany(vm => vm.PinViewModels)
|
||||
NodeViewModels.ToObservableChangeSet()
|
||||
.TransformMany(vm => vm.PinViewModels)
|
||||
.Bind(out ReadOnlyObservableCollection<PinViewModel> pinViewModels)
|
||||
.Subscribe();
|
||||
PinViewModels = pinViewModels;
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Collections.ObjectModel;
|
||||
using System.Reactive;
|
||||
using System.Reactive.Linq;
|
||||
using Artemis.Core;
|
||||
using Artemis.Core.Events;
|
||||
using Artemis.UI.Ninject.Factories;
|
||||
using Artemis.UI.Screens.VisualScripting.Pins;
|
||||
using Artemis.UI.Shared;
|
||||
@@ -99,18 +100,31 @@ public class NodeViewModel : ActivatableViewModelBase
|
||||
.DisposeWith(d);
|
||||
|
||||
// Subscribe to pin changes
|
||||
Node.WhenAnyValue(n => n.Pins).Subscribe(p => nodePins.Edit(source =>
|
||||
Observable.FromEventPattern<SingleValueEventArgs<IPin>>(x => Node.PinAdded += x, x => Node.PinAdded -= x)
|
||||
.Subscribe(p => nodePins.Add(p.EventArgs.Value))
|
||||
.DisposeWith(d);
|
||||
Observable.FromEventPattern<SingleValueEventArgs<IPin>>(x => Node.PinRemoved += x, x => Node.PinRemoved -= x)
|
||||
.Subscribe(p => nodePins.Remove(p.EventArgs.Value))
|
||||
.DisposeWith(d);
|
||||
nodePins.Edit(l =>
|
||||
{
|
||||
source.Clear();
|
||||
source.AddRange(p);
|
||||
})).DisposeWith(d);
|
||||
l.Clear();
|
||||
l.AddRange(Node.Pins);
|
||||
});
|
||||
|
||||
// Subscribe to pin collection changes
|
||||
Node.WhenAnyValue(n => n.PinCollections).Subscribe(c => nodePinCollections.Edit(source =>
|
||||
Observable.FromEventPattern<SingleValueEventArgs<IPinCollection>>(x => Node.PinCollectionAdded += x, x => Node.PinCollectionAdded -= x)
|
||||
.Subscribe(p => nodePinCollections.Add(p.EventArgs.Value))
|
||||
.DisposeWith(d);
|
||||
Observable.FromEventPattern<SingleValueEventArgs<IPinCollection>>(x => Node.PinCollectionRemoved += x, x => Node.PinCollectionRemoved -= x)
|
||||
.Subscribe(p => nodePinCollections.Remove(p.EventArgs.Value))
|
||||
.DisposeWith(d);
|
||||
nodePinCollections.Edit(l =>
|
||||
{
|
||||
source.Clear();
|
||||
source.AddRange(c);
|
||||
})).DisposeWith(d);
|
||||
|
||||
l.Clear();
|
||||
l.AddRange(Node.PinCollections);
|
||||
});
|
||||
|
||||
if (Node is Node coreNode)
|
||||
CustomNodeViewModel = coreNode.GetCustomViewModel(nodeScriptViewModel.NodeScript);
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user