コード例 #1
0
 public void setEbxFile(DAIEbx ebxFile)
 {
     if (ebxFile != null)
     {
         setData(EbxDataContainers.fromDAIEbx(ebxFile, statusConsumer));
     }
 }
コード例 #2
0
 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));
     }
 }
コード例 #3
0
        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");
            }
        }
コード例 #4
0
 public void setEbxFile(DAIEbx ebxFile)
 {
     if (ebxFile != null)
     {
         currentFile = EbxDataContainers.fromDAIEbx(ebxFile, newStatus => {});
         render();
     }
 }
コード例 #5
0
            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));
                }
            }
コード例 #6
0
        /* 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());
        }
コード例 #7
0
        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);
        }
コード例 #8
0
            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);
                }
            }
コード例 #9
0
        private string findAsset(EbxDataContainers containers, string type)
        {
            foreach (var instance in containers.instances)
            {
                if (instance.Value.hasPartial(type))
                {
                    return(instance.Key);
                }
            }

            return(null);
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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 });
                }
            }
        }
コード例 #12
0
 public void setData(EbxDataContainers ebxData)
 {
     currentEbx = ebxData;
     redrawTree();
 }
コード例 #13
0
        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);
        }
コード例 #14
0
 internal abstract void doExpand(TreeNode myNode, EbxDataContainers ebx, TreeSettings settings);
コード例 #15
0
 public void expand(TreeNode myNode, EbxDataContainers ebx, TreeSettings settings)
 {
     doExpand(myNode, ebx, settings);
     myNode.Tag = null; // deactivate expansion logic
 }
コード例 #16
0
 public UIGraphAssetViz(EbxDataContainers ebxDataContainers, string assetGuid)
 {
     this.ebxDataContainers = ebxDataContainers;
     this.assetGuid         = assetGuid;
     InitializeComponent();
 }