From 7176aba0d64acd3ffa33fd8b3810c90d4596993e Mon Sep 17 00:00:00 2001 From: Robert Date: Fri, 14 Feb 2025 22:15:03 +0100 Subject: [PATCH] Nodes - Inform nodes they are being loaded using the new IsLoading property --- src/Artemis.Core/VisualScripting/Interfaces/INode.cs | 5 +++++ src/Artemis.Core/VisualScripting/NodeData.cs | 1 + src/Artemis.Core/VisualScripting/NodeScript.cs | 3 +++ src/Artemis.Core/VisualScripting/Nodes/Node.cs | 3 +++ 4 files changed, 12 insertions(+) diff --git a/src/Artemis.Core/VisualScripting/Interfaces/INode.cs b/src/Artemis.Core/VisualScripting/Interfaces/INode.cs index 06c382749..15d21588c 100644 --- a/src/Artemis.Core/VisualScripting/Interfaces/INode.cs +++ b/src/Artemis.Core/VisualScripting/Interfaces/INode.cs @@ -39,6 +39,11 @@ public interface INode : INotifyPropertyChanged, IBreakableModel, IPluginFeature /// Gets a boolean indicating whether the node is a default node that connot be removed /// bool IsDefaultNode { get; } + + /// + /// Gets a boolean indicating whether the node is currently loading, use this to disable pin type changes etc. + /// + bool IsLoading { get; set; } /// /// Gets or sets the X-position of the node diff --git a/src/Artemis.Core/VisualScripting/NodeData.cs b/src/Artemis.Core/VisualScripting/NodeData.cs index dff2a5a2d..133414e9b 100644 --- a/src/Artemis.Core/VisualScripting/NodeData.cs +++ b/src/Artemis.Core/VisualScripting/NodeData.cs @@ -46,6 +46,7 @@ public class NodeData if (entity != null) { + node.IsLoading = true; node.X = entity.X; node.Y = entity.Y; try diff --git a/src/Artemis.Core/VisualScripting/NodeScript.cs b/src/Artemis.Core/VisualScripting/NodeScript.cs index 8f281f6c3..edf08cdb0 100644 --- a/src/Artemis.Core/VisualScripting/NodeScript.cs +++ b/src/Artemis.Core/VisualScripting/NodeScript.cs @@ -206,6 +206,8 @@ public abstract class NodeScript : CorePropertyChanged, INodeScript } LoadConnections(); + foreach (INode node in Nodes) + node.IsLoading = false; } internal void LoadFromEntity(NodeScriptEntity entity) @@ -216,6 +218,7 @@ public abstract class NodeScript : CorePropertyChanged, INodeScript private void LoadExistingNode(INode node, NodeEntity nodeEntity) { + node.IsLoading = true; node.Id = nodeEntity.Id; node.X = nodeEntity.X; node.Y = nodeEntity.Y; diff --git a/src/Artemis.Core/VisualScripting/Nodes/Node.cs b/src/Artemis.Core/VisualScripting/Nodes/Node.cs index b3c4ad3ee..97254c03d 100644 --- a/src/Artemis.Core/VisualScripting/Nodes/Node.cs +++ b/src/Artemis.Core/VisualScripting/Nodes/Node.cs @@ -92,6 +92,9 @@ public abstract class Node : BreakableModel, INode /// public virtual bool IsDefaultNode => false; + /// + public bool IsLoading { get; set; } + private readonly List _pins = new(); ///