Exemplo n.º 1
0
    NodeRegistry NodeRegistryProvider.GetRegistry(NodeRegistry prev)
    {
        var nr = prev.Derive();

        RegisterNode(nr);
        return(nr);
    }
Exemplo n.º 2
0
 protected override void RegisterNode(NodeRegistry nr)
 {
     base.RegisterNode(nr);
     nr.AddAction <PlayJumpNode>("playJump");
     nr.AddAction <JumpUntilFallToGroundNode>("jumpUntilFallToGround");
     nr.AddAction <ScreenShakeNode>("screenShake");
 }
Exemplo n.º 3
0
        public void StepByStepFirstAndLastCallIsSingle()
        {
            var provider = new NodeDefinitionProvider();

            provider.Register("FirstCall");
            provider.Register("ManyCalls", "FirstCall");
            provider.Register("LastCall", "ManyCalls");
            provider.SetRoot("LastCall");
            var node = provider.GetByName("LastCall");

            node.SingleCall = true;
            node            = provider.GetByName("FirstCall");
            node.SingleCall = true;
            List <string> messages     = new List <string>();
            var           nodeRegistry = new NodeRegistry <string>();

            nodeRegistry.Register("FirstCall", new BaseNode <string>(new FirstCallDataDriver(messages), provider.GetByName("FirstCall")));
            nodeRegistry.Register("ManyCalls", new BaseNode <string>(new ManyCallsDataDriver(messages), provider.GetByName("ManyCalls")));
            nodeRegistry.Register("LastCall", new BaseNode <string>(new LastCallDataDriver(messages), provider.GetByName("LastCall")));

            var runner = new DataNodeRunner <string>(provider, nodeRegistry);

            runner.Run();
            Assert.AreEqual("FirstCall", messages[0]);
            Assert.AreEqual("Data0", messages[1]);
            Assert.AreEqual("LastCall", messages[2]);
            Assert.AreEqual("Data1", messages[3]);
            Assert.AreEqual("Data2", messages[4]);
        }
Exemplo n.º 4
0
        public void ThreeRowsSimple()
        {
            var definitionC = new NodeDefinition
            {
                Name      = "C",
                DependsOn = new List <string>
                {
                    "B"
                }
            };

            var definitionB = new NodeDefinition
            {
                Name      = "B",
                DependsOn = new List <string>
                {
                    "A"
                }
            };

            var definitionA = new NodeDefinition
            {
                Name = "A"
            };
            var counterWrapper = new TestCounterWrapper();
            var nodeRegistry   = new NodeRegistry <string>();

            nodeRegistry.Register("A", new BaseNode <string>(new TestActionProcess(p =>
            {
                if (p.Number < 3)
                {
                    p.Item = $"AAA{counterWrapper.Counter++}";
                }
                else
                {
                    p.Stop();
                }
            }), definitionA));
            nodeRegistry.Register("B",
                                  new BaseNode <string>(new TestActionProcess(p => { p.Item = p.Item += "BBB"; }), definitionB));
            nodeRegistry.Register("C",
                                  new BaseNode <string>(new TestActionProcess(p => { p.Item = p.Item += "CCC"; }), definitionC));

            var provider = new NodeDefinitionProvider("C");

            provider.Register("C", definitionC);
            provider.Register("B", definitionB);
            provider.Register("A", definitionA);

            var runner  = new DataNodeRunner <string>(provider, nodeRegistry);
            var wrapper = new DataItemWrapper <string>();

            runner.Step(wrapper);
            Assert.AreEqual("AAA0BBBCCC", wrapper.Item);
            runner.Step(wrapper);
            Assert.AreEqual("AAA1BBBCCC", wrapper.Item);
            runner.Step(wrapper);
            Assert.AreEqual("AAA2BBBCCC", wrapper.Item);
        }
Exemplo n.º 5
0
        public void ThreeRowsSimpleRunAllNodesMustBeDisposed()
        {
            var definitionC = new NodeDefinition
            {
                Name      = "C",
                DependsOn = new List <string>
                {
                    "B"
                }
            };

            var definitionB = new NodeDefinition
            {
                Name      = "B",
                DependsOn = new List <string>
                {
                    "A"
                }
            };

            var definitionA = new NodeDefinition
            {
                Name = "A"
            };
            var counterWrapper = new TestCounterWrapper();
            var nodeRegistry   = new NodeRegistry <string>();
            var a = new TestActionProcess(p =>
            {
                if (p.Number < 3)
                {
                    p.Item = $"AAA{counterWrapper.Counter++}";
                }
                if (p.Number == 2)
                {
                    p.Stop();
                }
            });
            var b = new TestActionProcess(p => { p.Item = p.Item += "BBB"; });
            var c = new TestActionProcess(p => { p.Item = p.Item += "CCC"; });

            nodeRegistry.Register("A", new BaseNode <string>(a, definitionA));
            nodeRegistry.Register("B", new BaseNode <string>(b, definitionB));
            nodeRegistry.Register("C", new BaseNode <string>(c, definitionC));

            var provider = new NodeDefinitionProvider("C");

            provider.Register("C", definitionC);
            provider.Register("B", definitionB);
            provider.Register("A", definitionA);

            var runner = new DataNodeRunner <string>(provider, nodeRegistry);

            runner.Run();
            runner.Dispose();
            Assert.IsTrue(a.IsDisposed);
            Assert.IsTrue(b.IsDisposed);
            Assert.IsTrue(c.IsDisposed);
        }
Exemplo n.º 6
0
        public void CommitThrowsTest()
        {
            var definitionC = new NodeDefinition
            {
                Name      = "C",
                DependsOn = new List <string>
                {
                    "B"
                }
            };

            var definitionB = new NodeDefinition
            {
                Name      = "B",
                DependsOn = new List <string>
                {
                    "A"
                }
            };

            var definitionA = new NodeDefinition
            {
                Name = "A"
            };
            var nodeRegistry = new NodeRegistry <string>();

            nodeRegistry.Register("A", new BaseNode <string>(new TestActionProcess(p =>
            {
                if (p.Number < 3)
                {
                    p.Item = $"AAA{p.Number}";
                }
                if (p.Number == 2)
                {
                    p.Stop();
                }
            }, () => throw new Exception("Houston we have a problem")), definitionA));
            nodeRegistry.Register("B",
                                  new BaseNode <string>(new TestActionProcess(p => { p.Item = p.Item += "BBB"; }), definitionB));
            nodeRegistry.Register("C",
                                  new BaseNode <string>(new TestActionProcess(p => { p.Item = p.Item += "CCC"; }), definitionC));

            var provider = new NodeDefinitionProvider("C");

            provider.Register("C", definitionC);
            provider.Register("B", definitionB);
            provider.Register("A", definitionA);

            var runner = new DataNodeRunner <string>(provider, nodeRegistry);

            runner.Run();
            var current = runner.Current;

            Assert.AreEqual(1, current.CommitExceptions.Count);
        }
Exemplo n.º 7
0
        public void CommitTest()
        {
            var definitionC = new NodeDefinition
            {
                Name      = "C",
                DependsOn = new List <string>
                {
                    "B"
                }
            };

            var definitionB = new NodeDefinition
            {
                Name      = "B",
                DependsOn = new List <string>
                {
                    "A"
                }
            };

            var definitionA = new NodeDefinition
            {
                Name = "A"
            };
            var nodeRegistry = new NodeRegistry <string>();
            var flag         = new TestFlag();

            nodeRegistry.Register("A", new BaseNode <string>(new TestActionProcess(p =>
            {
                if (p.Number < 3)
                {
                    p.Item = $"AAA{p.Number}";
                }
                if (p.Number == 2)
                {
                    p.Stop();
                }
            }, () => { flag.Flag = true; }), definitionA));
            nodeRegistry.Register("B",
                                  new BaseNode <string>(new TestActionProcess(p => { p.Item = p.Item += "BBB"; }), definitionB));
            nodeRegistry.Register("C",
                                  new BaseNode <string>(new TestActionProcess(p => { p.Item = p.Item += "CCC"; }), definitionC));

            var provider = new NodeDefinitionProvider("C");

            provider.Register("C", definitionC);
            provider.Register("B", definitionB);
            provider.Register("A", definitionA);

            var runner = new DataNodeRunner <string>(provider, nodeRegistry);

            runner.Run();
            Assert.IsTrue(flag.Flag);
        }
Exemplo n.º 8
0
        public void Run()
        {
            var provider = new NodeDefinitionProvider("FileWriter");

            provider.Register("FileReader", new NodeDefinition()
            {
                Name = "FileReader"
            });
            provider.Register("FileWriter", new NodeDefinition()
            {
                Name      = "FileWriter",
                DependsOn = new List <string>()
                {
                    "ErrorWriter"
                }
            });
            provider.Register("ErrorWriter", new NodeDefinition()
            {
                Name      = "ErrorWriter",
                DependsOn = new List <string>()
                {
                    "FileReader"
                }
            });
            var input  = @"C:\Temp\My\1.txt";
            var output = @"C:\Temp\My\2.txt";
            var error  = @"C:\Temp\My\errors.txt";

            using (StreamWriter sw = new StreamWriter(input))
            {
                for (int i = 0; i < 100000; i++)
                {
                    if (i % 3000 == 0)
                    {
                        sw.WriteLine($"POOP{i}");
                    }
                    else
                    {
                        sw.WriteLine(i);
                    }
                }
            }
            var nodeRegistry = new NodeRegistry <FileMoverData>();

            nodeRegistry.Register("FileReader", new BaseNode <FileMoverData>(new FileReader(input), provider.GetByName("FileReader")));
            nodeRegistry.Register("FileWriter", new BaseNode <FileMoverData>(new FileWriter(output), provider.GetByName("FileWriter")));
            nodeRegistry.Register("ErrorWriter", new BaseNode <FileMoverData>(new ErrorWriter(error), provider.GetByName("ErrorWriter")));


            var runner = new DataNodeRunner <FileMoverData>(provider, nodeRegistry);

            runner.Run();
            runner.Dispose();
        }
Exemplo n.º 9
0
 protected virtual void RegisterNode(NodeRegistry nr)
 {
     nr.AddAction <RunToEdgeNode>("runToEdge");
     nr.AddAction <TurnAroundNode>("turnAround");
     nr.AddAction <SpineAnimateNode>("playAnim");
     nr.AddAction <SpineAnimateOffsetNode>("animOffset");
     nr.AddAction <FallToGroundNode>("fallToGround");
     nr.AddAction <FaceToPlayerNode>("faceToPlayer");
     nr.AddAction <JumpNode>("jump");
     nr.AddAction <StandNode>("stand");
     nr.AddAction <PlaySoundNode>("playSound");
 }
Exemplo n.º 10
0
        public Transform FindLCA(Transform a, Transform b)
        {
            NodeRegistry nodeA = _nodeIndex[a];

            if (nodeA == null)
            {
                return(null);
            }
            NodeRegistry nodeB = _nodeIndex[b];

            if (nodeB == null)
            {
                return(null);
            }

            if (a == b)
            {
                return(a);
            }

            int indexA = nodeA.firstVisitIndex;
            int indexB = nodeB.firstVisitIndex;

            if (indexB < indexA)
            {
                int temp = indexA;
                indexA = indexB;
                indexB = temp;
            }
            else if (indexA == indexB)
            {
                return(_nodes[indexA]);
            }

            //Find the lowest value.
            int lowest = int.MaxValue;

            for (int i = indexA; i < indexB; i++)
            {
                if (_eulerianPath[i] < lowest)
                {
                    lowest = _eulerianPath[i];
                }
            }

            if (lowest >= _nodes.Count)
            {
                return(null);
            }

            return(_nodes[lowest]);
        }
Exemplo n.º 11
0
 public void NodeName([SelectionList("Channels")]string name, string[] channels)
 {
     _registry = Context.State.Retrieve<ServiceBusNodes>().CreateNew(name);
     channels.Each(channelName =>
     {
         var prop = ServiceBusNodes.Channels.First(x => x.Name == name);
         _registry.AlterSettings<ChannelGraph>(graph =>
         {
             var channel = graph.ChannelFor(new SingleProperty(prop));
             channel.Incoming = true;
         });
     });
 }
Exemplo n.º 12
0
        void EulerTour(int rootIndex)
        {
            Transform node = _nodes[rootIndex];

            _nodeIndex[node] = new NodeRegistry()
            {
                transform = node, firstVisitIndex = _eulerianPath.Count
            };
            _eulerianPath.Add(rootIndex);

            for (int i = 0; i < node.childCount; i++)
            {
                _nodes.Add(node.GetChild(i));
                EulerTour(_nodes.Count - 1);
                _eulerianPath.Add(rootIndex);
            }
        }
Exemplo n.º 13
0
        public void InitializeChannels()
        {
            var nodeExchange = NodeConfiguration.NodeChannel;
            var nodeQueue    = NodeConfiguration.NodeChannel + "Q";
            var meshExchange = NodeConfiguration.MeshChannel;

            Bus.AddRabbitExchange(x => x
                                  .Direct(nodeExchange)
                                  .Immediate()
                                  .Mandatory()
                                  .AutoDelete()
                                  .PersistentDelivery()
                                  // we do want messages sticking around even if the broker dies
                                  );


            Bus.AddRabbitQueue(x => x
                               .QueueName(nodeQueue)
                               .ExchangeName(nodeExchange)
                               .Durable()           // we do want messages sticking around even if the broker dies
                               .AutoDelete()        // we don't want queues lingering after the node is gone
                               .StartSubscription());


            Bus.AddRabbitExchange(x => x
                                  .Fanout(meshExchange)
                                  .Durable()
                                  );


            //Now for the magic
            Bus.BindExchangeToQueue(meshExchange, nodeExchange, NodeConfiguration.NodeChannel);

            //If not an 'edge' node then add 'self' to the node registry
            if (!NodeConfiguration.AsProxy)
            {
                NodeRegistry.AddNode(NodeConfiguration.IdentityProvider.Identity);
            }

            //Start the monitor
            if (!NodeConfiguration.AsProxy)
            {
                NodeMonitor.Start();
            }
        }
Exemplo n.º 14
0
        public override void OnReady <T>(T node, System.Reflection.MemberInfo memberInfo)
        {
            if (Name == null)
            {
                Name = FilterName(memberInfo.Name);
            }
            var val = NodeRegistry.GetOrNull(Name);

            if (val == null)
            {
                if (!Required)
                {
                    return;
                }
                var err = $"Node '{Name}' must be registered but could not be found.";
                if (!Engine.EditorHint)
                {
                    throw new NullReferenceException(err);
                }
                Logger.PushError(err);
                return;
            }

            var varInfo = new VariableMemberInfo(memberInfo);

            if (varInfo.VariableType.ContainsGenericParameters &&
                typeof(IEnumerable <>)
                .MakeGenericType(varInfo.VariableType.GenericTypeArguments[0])
                .IsAssignableFrom(varInfo.VariableType))
            {
                var assignable = val.GetChildren <Node>().Where(n => varInfo.VariableType.GenericTypeArguments[0].IsInstanceOfType(n));
                varInfo.SetValue(node, varInfo.VariableType == typeof(IList <>)
                                 .MakeGenericType(varInfo.VariableType.GenericTypeArguments[0])
                    ? assignable.ToList()
                    : assignable);
            }
            else if (varInfo.VariableType.IsInstanceOfType(val))
            {
                varInfo.SetValue(node, val);
            }
            else
            {
                GD.PushWarning($"{val} not of type {varInfo.VariableType.FullName}");
            }
        }
Exemplo n.º 15
0
        public void ABBCSimpleWhenANodeShouldntBeCalledTwice()
        {
            var definitionC = new NodeDefinition
            {
                Name      = "C",
                DependsOn = new List <string>
                {
                    "B",
                    "A"
                }
            };

            var definitionB = new NodeDefinition
            {
                Name      = "B",
                DependsOn = new List <string>
                {
                    "A"
                }
            };

            var definitionA = new NodeDefinition
            {
                Name = "A"
            };
            var nodeRegistry = new NodeRegistry <string>();

            nodeRegistry.Register("A", new BaseNode <string>(new TestActionProcess(p => { p.Item = "AAA"; }), definitionA));
            nodeRegistry.Register("B",
                                  new BaseNode <string>(new TestActionProcess(p => { p.Item = p.Item += "BBB"; }), definitionB));
            nodeRegistry.Register("C",
                                  new BaseNode <string>(new TestActionProcess(p => { p.Item = p.Item += "CCC"; }), definitionC));

            var provider = new NodeDefinitionProvider("C");

            provider.Register("C", definitionC);
            provider.Register("B", definitionB);
            provider.Register("A", definitionA);

            var runner  = new DataNodeRunner <string>(provider, nodeRegistry);
            var wrapper = new DataItemWrapper <string>();

            runner.Step(wrapper);
            Assert.AreEqual("AAABBBCCC", wrapper.Item);
        }
Exemplo n.º 16
0
        public override void OnConstructor <T>(T node, MemberInfo info)
        {
            if (Name == null)
            {
                Name = node.GetType().Name;
            }
            var counter     = 2;
            var currentName = string.Format(Name, "");

            switch (Singular)
            {
            case false:
                while (NodeRegistry.IsRegistered(currentName))
                {
                    currentName = string.Format(Name, counter++);
                }
                break;

            case true:
                if (NodeRegistry.IsRegistered(Name))
                {
                    GD.PushError($"{Name} already register in {nameof(NodeRegistry)}");
                    return;
                }
                break;

            default:
                if (NodeRegistry.IsRegistered(Name))
                {
                    node.RegisterOrReplace(Name);
                    return;
                }
                break;
            }
            node.Register(currentName);
        }
Exemplo n.º 17
0
 static GameLogger()
 {
     _baseConsole = NodeRegistry.Get <BaseConsole>();
 }
 public AbstractNode(NodeRegistry registry, string id)
 {
     this._registry = registry;
     this._id       = id;
 }
Exemplo n.º 19
0
 static GameData()
 {
     controlGroups = new BaseUnit.InternalSelectList[NodeRegistry.Get <ControlGroupButtonList>().ControlGroupMaxCount];
 }
 public Digraph(NodeRegistry registry, string title) : this(registry, title, null)
 {
 }
 public Node(NodeRegistry registry, string id) : base(registry, id)
 {
 }
Exemplo n.º 22
0
        public void ThreeRowsAndBThrowsErrorOnTheSecond()
        {
            var definitionC = new NodeDefinition
            {
                Name      = "C",
                DependsOn = new List <string>
                {
                    "B"
                }
            };

            var definitionB = new NodeDefinition
            {
                Name      = "B",
                DependsOn = new List <string>
                {
                    "A"
                }
            };

            var definitionA = new NodeDefinition
            {
                Name = "A"
            };
            var counterWrapper = new TestCounterWrapper();
            var nodeRegistry   = new NodeRegistry <string>();

            nodeRegistry.Register("A", new BaseNode <string>(new TestActionProcess(p =>
            {
                if (p.Number < 3)
                {
                    p.Item = $"AAA{counterWrapper.Counter++}";
                }
                if (p.Number == 2)
                {
                    p.Stop();
                }
            }), definitionA));
            nodeRegistry.Register("B", new BaseNode <string>(new TestActionProcess(p =>
            {
                if (p.Number == 1)
                {
                    throw new Exception("Houston we have a problem");
                }
                p.Item += "BBB";
            }), definitionB));
            nodeRegistry.Register("C",
                                  new BaseNode <string>(new TestActionProcess(p => { p.Item = p.Item += "CCC"; }), definitionC));

            var provider = new NodeDefinitionProvider("C");

            provider.Register("C", definitionC);
            provider.Register("B", definitionB);
            provider.Register("A", definitionA);

            var runner = new DataNodeRunner <string>(provider, nodeRegistry);

            runner.Run();
            var result = runner.Current;

            Assert.AreEqual("AAA2BBBCCC", result.Item);
        }
Exemplo n.º 23
0
 public FullTreeStrategy(NodeRegistry nodeRegistry, IValueProviderRegistry valueProviderRegistry)
 {
     _nodeRegistry          = nodeRegistry;
     _valueProviderRegistry = valueProviderRegistry;
 }
Exemplo n.º 24
0
        public void ThreeRowsTheSecondSkip()
        {
            var definitionC = new NodeDefinition
            {
                Name      = "C",
                DependsOn = new List <string>
                {
                    "B"
                }
            };

            var definitionB = new NodeDefinition
            {
                Name      = "B",
                DependsOn = new List <string>
                {
                    "A"
                }
            };

            var definitionA = new NodeDefinition
            {
                Name = "A"
            };
            var counterWrapper = new TestCounterWrapper();
            var nodeRegistry   = new NodeRegistry <string>();

            nodeRegistry.Register("A", new BaseNode <string>(new TestActionProcess(p =>
            {
                if (p.Number < 3)
                {
                    if (p.Item == null)
                    {
                        p.Item = "";
                    }
                    p.Item = p.Item + $"AAA{counterWrapper.Counter++}";
                }
                if (p.Number == 2)
                {
                    p.Stop();
                }
            }), definitionA));
            nodeRegistry.Register("B", new BaseNode <string>(new TestActionProcess(p =>
            {
                if (p.Number == 1)
                {
                    p.Skip();
                }
                else
                {
                    p.Item = p.Item += "BBB";
                }
            }), definitionB));
            nodeRegistry.Register("C",
                                  new BaseNode <string>(new TestActionProcess(p => { p.Item = p.Item += "CCC"; }), definitionC));

            var provider = new NodeDefinitionProvider("C");

            provider.Register("C", definitionC);
            provider.Register("B", definitionB);
            provider.Register("A", definitionA);

            var runner = new DataNodeRunner <string>(provider, nodeRegistry);

            runner.Run();
            var result = runner.Current;

            Assert.AreEqual("AAA0BBBCCCAAA1AAA2BBBCCC", result.Item);
        }
Exemplo n.º 25
0
        protected override void Execute(ICommandInterface console, ArgList arguments)
        {
            var coreInterface = NodeRegistry.Get <Control>(nameof(GameFrontend));

            coreInterface.Visible = !coreInterface.Visible;
        }
 public Cluster(NodeRegistry registry, string id) : base(registry, id)
 {
 }
            public Digraph(NodeRegistry registry, string title, string dir) : base(registry, title)
            {
                this._dir = dir;

                SetLabel(title);
            }
Exemplo n.º 28
0
 public void NodeRegistry_can_scan_assembly_without_crashing()
 {
     var registry = new NodeRegistry(new Container(), new MockValueProviderRegistry());
 }