public void Initialize(GeneTree tree) { target = tree; BuildVisualElement(); openedTrees.Add(target, this); this.titleContent = new GUIContent($"GeneTree Editor ({target.name})"); }
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); } } }
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(); }
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); }