Пример #1
0
        public MainWindow()
        {
            InitializeComponent();

            var nodeEngine = new NodeEngine();

            DataContext = nodeEngine.BuildViewModel();

            nodeEngine.Connect("Root", "Child1");
            nodeEngine.Connect("Root", "Child2");
            nodeEngine.Connect("Root", "Child3");
            nodeEngine.Connect("Child2", "Child4");
            nodeEngine.Connect("Child2", "Child5");
            nodeEngine.Connect("Child3", "Child6");
            nodeEngine.Connect("Child4", "Child7");
            nodeEngine.Connect("Child7", "Child8");

            // 自動配置のテスト
            nodeEngine.AutoArrange();

            // 配置されたノードにフィットさせる
            NetworkView.FitToSelectionNode(0);

            // ミニマップテスト
            CreateMinimap();
        }
Пример #2
0
        public void BuildViewModelTest()
        {
            var engine = new NodeEngine();
            var vm     = engine.BuildViewModel();

            engine.GetOrCreateNode("Node1");
            engine.GetOrCreateNode("Node2");
            engine.Connect("Node1", "Node2");
            engine.Connect("Node2", "Node1");

            // engineAPIにより ViewModelの数が更新されていることを確認する
            Assert.Equal(2, vm.Nodes.Count);
            Assert.Equal(2, vm.Connections.Count);
            Assert.Equal(4, vm.Nodes.SelectMany(x => x.GetInputPlugs()).Concat(vm.Nodes.SelectMany(y => y.GetOutputPlugs())).Count());

            engine.GetOrCreateNode("Node1")
            .Remove();

            // 削除が反映されることを確認
            Assert.Equal(1, vm.Nodes.Count);
            Assert.Equal(0, vm.Connections.Count);
            Assert.Equal(2, vm.Nodes.SelectMany(x => x.GetInputPlugs()).Concat(vm.Nodes.SelectMany(y => y.GetOutputPlugs())).Count());

            engine.GetOrCreateNode("Node2")
            .Remove();

            var network = engine.Network;

            // モデルも消えていることを確認
            Assert.Equal(0, network.Nodes.Count);
            Assert.Equal(0, network.Connections.Count);
            Assert.Equal(0, network.Nodes.SelectMany(x => x.InputPlugs).Concat(network.Nodes.SelectMany(y => y.OutputPlugs)).Count());
        }
Пример #3
0
        public MainWindow()
        {
            InitializeComponent();
            var nodeEngine = new NodeEngine();

            // 組み込み用のViewModelを生成する。
            // ViewModelの実装などをすべて自前で行いたい場合は別のサンプルなどを参照してください。
            DataContext = nodeEngine.BuildViewModel();

            //新規ノードの追加
            var root = nodeEngine.GetOrCreateNode("Root")
                       .SetColor(Colors.IndianRed) // ヘッダカラーを設定する
                       .AddInputPlug("Plug1", 0);  // int型の入力プラグを追加する

            // NodeEngine.Connect()を使ってノードを接続
            // (存在しないノードは自動的に生成される。)
            nodeEngine.Connect("Root", "Child1");
            nodeEngine.Connect("Root", "Child2");
            nodeEngine.Connect("Root", "Child3");
            nodeEngine.Connect("Child2", "Child4");
            nodeEngine.Connect("Child2", "Child5");
            nodeEngine.Connect("Child3", "Child6");
            nodeEngine.Connect("Child3", "Child10");
            nodeEngine.Connect("Child4", "Child7");
            nodeEngine.Connect("Child7", "Child8");
            nodeEngine.Connect("Child7", "Child9");

            // 自動整列を行う ※自動配置されている場合は破棄される
            nodeEngine.AutoArrange();

            // ルートノードだけ座標を変える。
            root.SetPos(-50, -200);

            // ノード全体がViewに収める
            NetworkView.FitToSelectionNode(0);

            // NodeEngineで作成したネットワークをファイルとして出力する
            nodeEngine.SerializeToFile("output.json", SerializeFormat.Json);
        }