Exemplo n.º 1
0
 public void Initialize(GeneTree tree)
 {
     target = tree;
     BuildVisualElement();
     openedTrees.Add(target, this);
     this.titleContent = new GUIContent($"GeneTree Editor ({target.name})");
 }
Exemplo n.º 2
0
        public GeneTreeGraphView(EditorWindow host, GeneTree target) : base()
        {
            SetupZoom(ContentZoomer.DefaultMinScale, ContentZoomer.DefaultMaxScale);
            Insert(0, new GridBackground());
            this.AddManipulator(new SelectionDragger());

            nodeCreationRequest += context =>
            {
                var n = new GeneNode(AddGeneToTree());
                var p = context.screenMousePosition;
                p -= host.position.position;

                n.SetPosition(new Rect(p.x, p.y, 0, 0));
                AddElement(n);
            };

            //ロード
            this.target = target;
            //ノード
            if (target.Genes != null)
            {
                foreach (var gene in target.Genes)
                {
                    var n = new GeneNode(gene);
                    AddElement(n);
                }
            }

            //接続
            var nodeList = nodes.ToList();

            if (target.Edges != null)
            {
                foreach (var edge in target.Edges)
                {
                    var geneNodes = nodeList.OfType <GeneNode>();
                    var childNode = geneNodes.FirstOrDefault(n => n.TargetGene.Guid == edge.ChildGeneGuid);
                    if (childNode == default)
                    {
                        continue;
                    }
                    var parentNode = geneNodes.FirstOrDefault(n => n.TargetGene.Guid == edge.ParentGeneGuid);
                    if (parentNode == default)
                    {
                        continue;
                    }
                    var graphEdge = new Edge()
                    {
                        output = parentNode.OutPort,
                        input  = childNode.InPort
                    };
                    graphEdge.input.Connect(graphEdge);
                    graphEdge.output.Connect(graphEdge);
                    AddElement(graphEdge);
                }
            }
        }
Exemplo n.º 3
0
        public static void Open(GeneTree tree)
        {
            if (openedTrees.ContainsKey(tree))
            {
                var w = openedTrees[tree];
                if (w)
                {
                    w.Focus();
                    return;
                }

                openedTrees.Remove(tree);
            }

            var windowInstance = CreateInstance <GeneTreeEditorWindow>();

            windowInstance.Initialize(tree);
            windowInstance.Show();
        }
Exemplo n.º 4
0
    public void Generate()
    {
        //create chromosomes, add genes
        //chromosome 1    chromosome 2    chromosome 3
        // ___________     ___________     ___________
        //(___A___B___)   (_____C_____)   (_____D_____)

        gt = new GeneTree();
        gt.AddChromosome();
        gt.PushGene(aGamete1, aGamete2, false);
        gt.PushGene(bGamete1, bGamete2, false);

        gt.AddChromosome();
        gt.PushGene(cGamete1, cGamete2, false);

        gt.AddChromosome();
        gt.PushGene(dGamete1, dGamete2, true);


        treePrefab = (GameObject)Instantiate(Resources.Load("Tree Prefabs/Tree" + gt.GetPhenotypeReadout()), this.transform.position, Quaternion.Euler(0, Random.Range(0, 360), 0), this.transform);
    }