private static void DrawAndSaveBlockchainTree(List <NodeModel> models, string directoryPath, string fileName) { var imagePath = $@"{directoryPath}\{fileName}"; var drawer = new TreeDrawer(imagePath); drawer.DrawGraph(models); }
private void Init() { if (_statusBar == null) { _statusBar = new StatusBarDrawer(); } if (_paramPanel == null) { _paramPanel = new ParamPanelDrawer(); } _cursorChangeRect = new Rect(_currentViewWidth, 0f, 5f, position.height); if (Selection.activeObject is AiBehaviour && EditorUtility.IsPersistent(Selection.activeObject)) { _target = (AiBehaviour)Selection.activeObject; _statusBar.Blackboard = _target; _paramPanel.Blackboard = _target; _treeDrawer = new TreeDrawer(_statusBar.CurrentTree); _statusBar.OnSelectedAiTree += _treeDrawer.RebuildTreeView; } else if (Selection.activeGameObject != null && Selection.activeGameObject.GetComponent <AiController>() != null && Selection.activeGameObject.GetComponent <AiController>().Behaviour != null) { _target = Selection.activeGameObject.GetComponent <AiController>().Behaviour; _statusBar.Blackboard = _target; _paramPanel.Blackboard = _target; _treeDrawer = new TreeDrawer(_statusBar.CurrentTree); _statusBar.OnSelectedAiTree += _treeDrawer.RebuildTreeView; } Repaint(); }
private void OnProjectChange() { if (Selection.activeObject == null && Selection.activeGameObject == null) { _treeDrawer = null; _target = null; _statusBar.Blackboard = null; _paramPanel.Blackboard = null; } if (_target == null) { Init(); } }
public static CompositeSpriteBatchDrawer[] HallowedTree() { int[] tileSets = { 3 }; TreeDrawer drawer = MakeTreeDrawer(tileSets, "5_2", topFrames: 9, branchFrames: 9, minHeight: 2, maxHeight: 4); drawer.trunkHeadstartFrames = 3; return(new CompositeSpriteBatchDrawer[] { drawer, new ClutterDrawer(GetTexture("Terraria/Tiles_110"), new int[] { Main.rand.Next(20), -1, -1, Main.rand.Next(20) }, height: 20), new TileDrawer(GetTexture("Terraria/Tiles_109"), 39) }); }
void UpdateData() { MainTree.Nodes.Clear(); if (Projects.Length == 0) { return; } StartModelIndex.Items.Clear(); if (ProjectsList.SelectedIndex != -1) { StartModelIndex.Items.AddRange(Projects[ProjectsList.SelectedIndex].Competition.Teams.TeamClumps.ToArray()); StartModelIndex.SelectedIndex = 0; //return; } var CC = Projects[ProjectsList.SelectedIndex]; var C = CC.Competition; TeamsCount.Text = "Количество команд: " + C.Teams.Count.ToString(); PeopleCount.Text = "Количество участников: " + C.Teams.Participants().Count.ToString(); ModelsCount.Text = "Количество моделей в соревновании: " + C.Teams.TeamClumps.Count.ToString(); RoundsCount.Text = "Количество проведённых туров: ~" + C.Teams.GetTeams()[0].Rounds.Count; string MJ = (CC.MainJudge.Length < 5) ? ((CC.MainJudge == "" | CC.MainJudge.Length < 2) ? ("Не задан") : ("[!] " + CC.MainJudge)) : (CC.MainJudge); string SK = (CC.Scorekeeper.Length < 5) ? ((CC.Scorekeeper == "" | CC.Scorekeeper.Length < 2) ? ("Не задан") : ("[!] " + CC.Scorekeeper)) : (CC.Scorekeeper); string LS = (CC.LaunchSupervisor.Length < 5) ? ((CC.LaunchSupervisor == "" | CC.LaunchSupervisor.Length < 2) ? ("Не задан") : ("[!] " + CC.LaunchSupervisor)) : (CC.LaunchSupervisor); MainJudge.Text = "Главный судья: " + MJ; Scorekeeper.Text = "Секретарь: " + SK; HeadOfAStart.Text = "Начальник старта: " + LS; var TCs = C.Teams?.TeamClumps; TreeDrawer.DrawCompetitionStructure(MainTree, TCs, C); }
private void Init() { if (_statusBar == null) { _statusBar = new StatusBarDrawer(); } if (_paramPanel == null) { _paramPanel = new ParamPanelDrawer(); } _cursorChangeRect = new Rect(_currentViewWidth, 0f, 5f, position.height); if (Selection.activeObject is AiBehaviour && EditorUtility.IsPersistent(Selection.activeObject)) { _target = (AiBehaviour)Selection.activeObject; _statusBar.Blackboard = _target; _paramPanel.Blackboard = _target; _treeDrawer = new TreeDrawer(_statusBar.CurrentTree); _statusBar.OnSelectedAiTree += _treeDrawer.RebuildTreeView; } else if (Selection.activeGameObject != null && Selection.activeGameObject.GetComponent<AiController>() != null && Selection.activeGameObject.GetComponent<AiController>().Behaviour != null) { _target = Selection.activeGameObject.GetComponent<AiController>().Behaviour; _statusBar.Blackboard = _target; _paramPanel.Blackboard = _target; _treeDrawer = new TreeDrawer(_statusBar.CurrentTree); _statusBar.OnSelectedAiTree += _treeDrawer.RebuildTreeView; } Repaint(); }
public static void Main(string[] args) { ClearImagesDirectory(); var input = File.ReadAllText(args[0]); var root = new Node { Type = NodeType.Null, Weight = 0 }; var nyt = root; var treeDrawer = new TreeDrawer(); var dataWriter = new TableWriter(); var nodesByCharacter = new Dictionary <char, Node>(); var statsTable = new List <StatsTableRow>(); var rows = new DataTableRow[0]; foreach (char c in input) { if (nodesByCharacter.TryGetValue(c, out var existingCharacterNode)) { existingCharacterNode.Weight++; } else { var parentNode = Node.NewInternal; var newCharacterNode = Node.NewCharacter(c); nodesByCharacter.Add(c, newCharacterNode); var oldNytParent = nyt.Parent; if (oldNytParent is null) { root = parentNode; } else { oldNytParent.SetChildren(parentNode, oldNytParent.Right); } parentNode.SetChildren(nyt, newCharacterNode); } //treeDrawer.DrawNodesToFile($"{ResultsDirectory}/tree{i}.png", NodeUtils.PrepareDrawNodes(root).ToDictionary(dn => dn.OrderNumber)); var characterNodesWithOrderNumberByCharacter = NodeUtils.FlattenNodes(new[] { root }) .Reverse() .Select((node, index) => (node, index)) .Where(t => t.node.Type == NodeType.Character) .ToDictionary(t => t.node.Character); rows = root.BuildDataTable(string.Empty).Select(t => new DataTableRow( characterNodesWithOrderNumberByCharacter[t.character].index, t.character, t.occurrences, t.code)).OrderByDescending(r => r.OrderNumber) .ToArray(); var probabilityByChar = GetProbabilityByChar(rows); var averageCodeWordLength = CalculateAverageCodewordLength(rows, probabilityByChar); var entropy = CalculateEntropy(probabilityByChar.Values); statsTable.Add(new StatsTableRow(c, averageCodeWordLength, entropy)); dataWriter.WriteToFile( $"{ResultsDirectory}/tree{rows.Sum(r => r.Occurrences)}.csv", new[] { "Order number", "Character", "Occurrences", "Codeword" }, rows); Console.WriteLine($"Odczytano znak [{c}], pomyślnie zapisano grafikę oraz tabelę danych."); } dataWriter.WriteToFile( $"{ResultsDirectory}/_stats.csv", new[] { "Character", "Average Codeword Length", "Entropy" }, statsTable); var compressed = CompressText( rows.ToDictionary(r => r.Character, r => r.CodeWord), input); File.WriteAllBytes($"{ResultsDirectory}/compressed.huf", compressed); Console.WriteLine("Kodowanie zakończone"); Console.ReadKey(); }
void RedrawTree() { TreeDrawer.DrawCompetitionStructure(MainTree); }
private void OnProjectChange() { if (Selection.activeObject == null && Selection.activeGameObject == null) { _treeDrawer = null; _target = null; _statusBar.Blackboard = null; _paramPanel.Blackboard = null; } if (_target == null) { Init(); } }