diff --git a/Samples/Nodes/CheckSizeNode.cs b/Samples/Nodes/CheckSizeNode.cs index 2643fb3..9a7404c 100644 --- a/Samples/Nodes/CheckSizeNode.cs +++ b/Samples/Nodes/CheckSizeNode.cs @@ -1,5 +1,4 @@ -using TNode.TNodeCore.Runtime.Models; -using TNodeCore.Runtime.Attributes; +using TNodeCore.Runtime.Attributes; using TNodeCore.Runtime.Attributes.Ports; using TNodeCore.Runtime.Models; diff --git a/TNodeCore/Runtime/Models/ConditionalNode.cs b/TNodeCore/Runtime/Models/ConditionalNode.cs index f946a72..11e2eeb 100644 --- a/TNodeCore/Runtime/Models/ConditionalNode.cs +++ b/TNodeCore/Runtime/Models/ConditionalNode.cs @@ -1,9 +1,6 @@ -using TNodeCore.Runtime; -using TNodeCore.Runtime.Attributes.Ports; -using TNodeCore.Runtime.Models; -using Unity.Plastic.Newtonsoft.Json.Serialization; +using Unity.Plastic.Newtonsoft.Json.Serialization; -namespace TNode.TNodeCore.Runtime.Models{ +namespace TNodeCore.Runtime.Models{ public class ConditionalNode:NodeData{ } @@ -25,6 +22,10 @@ namespace TNode.TNodeCore.Runtime.Models{ public object GetValue(){ return DataFunc.Invoke(); } + + public static implicit operator T(TransitionCondition condition){ + return condition.DataFunc.Invoke(); + } } public interface IBaseTransition{ public bool Condition{ get; set; } diff --git a/TNodeCore/Runtime/RuntimeModels/ConditionalRuntimeNode.cs b/TNodeCore/Runtime/RuntimeModels/ConditionalRuntimeNode.cs index 6a15c5f..6bec7d6 100644 --- a/TNodeCore/Runtime/RuntimeModels/ConditionalRuntimeNode.cs +++ b/TNodeCore/Runtime/RuntimeModels/ConditionalRuntimeNode.cs @@ -1,18 +1,17 @@ using System; using System.Collections.Generic; using System.Linq; -using TNode.TNodeCore.Runtime.Models; using TNodeCore.Runtime.Models; using UnityEngine; namespace TNodeCore.Runtime{ public class ConditionalRuntimeNode:RuntimeNode{ - private readonly List>> _possibleTransition; + private readonly List>> _possibleTransition; public ConditionalRuntimeNode(NodeData nodeData) : base(nodeData){ if (nodeData is ConditionalNode conditionalNode){ - var transitionPort = GetPortsOfType(); - _possibleTransition = new List>>(); + var transitionPort = GetPortsOfType(); + _possibleTransition = new List>>(); var allOutput = GetPortsOfType().Where(x => GetPortDirection(x) == Direction.Output); var enumerable = allOutput as string[] ?? allOutput.ToArray(); if (enumerable.Count() != transitionPort.Length){ @@ -22,7 +21,7 @@ namespace TNodeCore.Runtime{ } foreach (var port in transitionPort){ if(GetPortDirection(port)==Direction.Input) continue; - _possibleTransition.Add(new Tuple>(port,() => (TransitionCondition)GetOutput(port)) ); + _possibleTransition.Add(new Tuple>(port,() => (IBaseTransition)GetOutput(port)) ); } } else{ @@ -39,8 +38,8 @@ namespace TNodeCore.Runtime{ } public string GetNextNodeId(){ - List> possibleCondition = _possibleTransition - .Select(x=>new Tuple(x.Item1,x.Item2())) + List> possibleCondition = _possibleTransition + .Select(x=>new Tuple(x.Item1,x.Item2())) .Where(x=>x.Item2.Condition).ToList(); possibleCondition.Sort((a, b) => { var compareTo = b.Item2.Priority.CompareTo(a.Item2.Priority); diff --git a/TNodeCore/Runtime/RuntimeModels/StaticGraph.cs b/TNodeCore/Runtime/RuntimeModels/StaticGraph.cs index a08cdfe..ee2e381 100644 --- a/TNodeCore/Runtime/RuntimeModels/StaticGraph.cs +++ b/TNodeCore/Runtime/RuntimeModels/StaticGraph.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using TNode.TNodeCore.Runtime.Models; using TNode.TNodeCore.Runtime.Tools; using TNodeCore.Runtime.Models; using UnityEngine; @@ -29,8 +28,6 @@ namespace TNodeCore.Runtime.RuntimeModels{ var nodes = graphData.NodeDictionary.Values.ToList(); var links = graphData.NodeLinks; _nodes = new Dictionary(); - - foreach (var nodeData in nodes){ if(_nodes.ContainsKey(nodeData.id)) continue; diff --git a/Tests/StaticGraphTest.cs b/Tests/StaticGraphTest.cs index addf6d2..c07b85d 100644 --- a/Tests/StaticGraphTest.cs +++ b/Tests/StaticGraphTest.cs @@ -1,13 +1,12 @@ using System.Linq; using NUnit.Framework; -using TNode.TNodeCore.Runtime.Models; using TNodeCore.Editor.Tools.NodeCreator; using TNodeCore.Runtime; using TNodeCore.Runtime.Attributes; using TNodeCore.Runtime.Attributes.Ports; using TNodeCore.Runtime.Models; using TNodeCore.Runtime.RuntimeModels; -using UnityEditor.VersionControl; + using UnityEngine; namespace Tests{