public void setEbxFile(DAIEbx ebxFile) { if (ebxFile != null) { setData(EbxDataContainers.fromDAIEbx(ebxFile, statusConsumer)); } }
internal override void doExpand(TreeNode myNode, EbxDataContainers ebx, TreeSettings settings) { foreach (var childField in astruct.fields) { myNode.Nodes.Add(processField(childField.Key, childField.Value, ebx, settings)); } }
private void exportAllButton_Click(object sender, EventArgs e) { FolderBrowserDialog d = new FolderBrowserDialog(); if (d.ShowDialog() == DialogResult.OK) { var entries = Database.LoadAllEbxEntries(); var stopwatch = new Stopwatch(); stopwatch.Start(); for (int i = 0; i < entries.Count; i++) { var ebxEntry = entries[i]; var bytes = Tools.GetDataBySHA1(ebxEntry.sha1, GlobalStuff.getCatFile()); var daiEbx = new DAIEbx(); daiEbx.Serialize(new MemoryStream(bytes)); var ebxContainers = EbxDataContainers.fromDAIEbx(daiEbx, str => {}, false); var txt = ebxContainers.toText(); var outPath = Path.Combine(d.SelectedPath, $"{ebxEntry.path}_{ebxEntry.sha1.Substring(0, 8)}"); var dir = Path.GetDirectoryName(outPath); Directory.CreateDirectory(dir); File.WriteAllText(outPath, txt, Encoding.UTF8); if (i % 100 == 0) { Frontend.updateStatus($"Exported {i}/{entries.Count}, elapsec {stopwatch.ElapsedMilliseconds/1000}s"); } } Frontend.updateStatus("Finished export"); } }
public void setEbxFile(DAIEbx ebxFile) { if (ebxFile != null) { currentFile = EbxDataContainers.fromDAIEbx(ebxFile, newStatus => {}); render(); } }
internal override void doExpand(TreeNode myNode, EbxDataContainers ebx, TreeSettings settings) { var elements = aarray.elements; for (int idx = 0; idx < elements.Count; idx++) { myNode.Nodes.Add(processField(idx.ToString(), elements[idx], ebx, settings)); } }
/* todo: write partials info, indent+1 */ public static string toText(this EbxDataContainers containers) { var sb = new StringBuilder(); foreach (var instance in containers.instances.Values) { convertToText(instance.guid, containers.getFlattenedDataFor(instance.guid), 0, sb, instance.partialsList); } return(sb.ToString()); }
private EbxDataContainers loadEbx(string ebxGuid) { byte[] data = Tools.GetDataBySHA1(ebxGuid, GlobalStuff.getCatFile()); DAIEbx ebxFile = new DAIEbx(); ebxFile.Serialize(new MemoryStream(data)); var containers = EbxDataContainers.fromDAIEbx(ebxFile, statusConsumer); return(containers); }
internal override void doExpand(TreeNode myNode, EbxDataContainers ebx, TreeSettings settings) { foreach (var container in containers) { AStruct dataRoot = settings.flattened ? ebx.getFlattenedDataFor(container.guid) : container.data; var fieldName = settings.showGuids ? container.guid : ""; var tnode = processField(fieldName, dataRoot, ebx, settings); myNode.Nodes.Add(tnode); guidToTreeNode.Add(container.guid, tnode); } }
private string findAsset(EbxDataContainers containers, string type) { foreach (var instance in containers.instances) { if (instance.Value.hasPartial(type)) { return(instance.Key); } } return(null); }
public BlueprintViz(EbxDataContainers ebxContainers, string assetGuid, Action <string> statusConsumer) { this.ebxDataContainers = ebxContainers; this.assetGuid = assetGuid; this.statusConsumer = statusConsumer; InitializeComponent(); ebxTreeViewer = new EbxTreeXmlViewer(statusConsumer); toolsSplitContainer.Panel2.Controls.Add(ebxTreeViewer); ebxTreeViewer.Visible = true; ebxTreeViewer.setData(ebxContainers); }
public void setEbxFile(DAIEbx ebxFile) { assetList.Rows.Clear(); currentContainers = null; currentlySelectedAsset = null; graphVizButton.Enabled = false; if (ebxFile != null) { currentContainers = EbxDataContainers.fromDAIEbx(ebxFile, statusConsumer); var assets = currentContainers.getAllWithPartial("Asset"); foreach (var asset in assets) { var assetType = asset.data.name; var assetName = asset.getPartial("Asset").fields["Name"].castTo <ASimpleValue>().Val; assetList.Rows.Add(new string[] { assetType, assetName, asset.guid }); } } }
public void setData(EbxDataContainers ebxData) { currentEbx = ebxData; redrawTree(); }
private static TreeNode processField(String fieldName, AValue fieldValue, EbxDataContainers containers, TreeSettings settings) { TreeNode tnode = null; switch (fieldValue.Type) { case ValueTypes.SIMPLE: tnode = simpleFieldTNode(fieldName, fieldValue.castTo <ASimpleValue>().Val); break; case ValueTypes.NULL_REF: tnode = simpleFieldTNode(fieldName, "[null]"); break; case ValueTypes.IN_REF: var aintref = fieldValue.castTo <AIntRef>(); switch (aintref.refStatus) { case RefStatus.UNRESOLVED: throw new Exception("At this point intrefs should be resolved!"); case RefStatus.RESOLVED_SUCCESS: if (settings.flatRefs) { var targetAStruct = settings.flattened ? containers.getFlattenedDataFor(aintref.instanceGuid) : containers.instances[aintref.instanceGuid].data; tnode = simpleFieldTNode(fieldName, targetAStruct.name); tnode.Tag = new TNStructTag(targetAStruct); } else { tnode = simpleFieldTNode(fieldName, "INTREF"); var singletonContainerList = new List <DataContainer>(); singletonContainerList.Add(containers.instances[aintref.instanceGuid]); tnode.Tag = new TNDataRootTag(singletonContainerList); } break; case RefStatus.RESOLVED_FAILURE: tnode = simpleFieldTNode(fieldName, "Unresolved INTREF: " + aintref.instanceGuid); break; default: throw new ArgumentOutOfRangeException(); } break; case ValueTypes.EX_REF: var aexref = fieldValue.castTo <AExRef>(); var axrefStrRepr = settings.showGuids ? (aexref.instanceGuid + " ") : ""; axrefStrRepr += (aexref.refStatus == RefStatus.RESOLVED_SUCCESS) ? $"[{aexref.refType}] {aexref.refName}" : "Unresolved"; tnode = simpleFieldTNode(fieldName, axrefStrRepr); break; case ValueTypes.STRUCT: var astruct = fieldValue.castTo <AStruct>(); var tnodeText = ""; if (fieldName.Length > 0) { tnodeText += fieldName + " -> "; } tnodeText += astruct.name; tnode = new TreeNode(tnodeText); tnode.Tag = new TNStructTag(astruct); break; case ValueTypes.ARRAY: tnode = new TreeNode(fieldName); tnode.Tag = new TNArrayTag(fieldValue.castTo <AArray>()); break; } return(tnode); }
internal abstract void doExpand(TreeNode myNode, EbxDataContainers ebx, TreeSettings settings);
public void expand(TreeNode myNode, EbxDataContainers ebx, TreeSettings settings) { doExpand(myNode, ebx, settings); myNode.Tag = null; // deactivate expansion logic }
public UIGraphAssetViz(EbxDataContainers ebxDataContainers, string assetGuid) { this.ebxDataContainers = ebxDataContainers; this.assetGuid = assetGuid; InitializeComponent(); }