コード例 #1
0
        public void process()
        {
            int numChildren = mRootNode.getNumChildren();

            for (int i = 0; i < numChildren; i++)
            {
                processRecurse(mRootNode.getChild(i));
            }
        }
コード例 #2
0
        private void getAssetListRecurse(DependencyNode node, List <string> assetList)
        {
            if (!node.mFileInfo.bExists)
            {
                return;
            }

            // disregard DEP files
            if (String.Compare(Path.GetExtension(node.filename), ".dep", true) != 0)
            {
                // Add file to list
                if (!assetList.Contains(node.filename))
                {
                    assetList.Add(node.filename);
                }
            }

            // Now recurse into the child nodes
            int numChildren = node.getNumChildren();

            for (int i = 0; i < numChildren; i++)
            {
                getAssetListRecurse(node.getChild(i), assetList);
            }
        }
コード例 #3
0
        private void processRecurse(DependencyNode node)
        {
            if (!node.mFileInfo.bExists)
            {
                return;
            }

            // Create list of files that this node depends on
            List <FileInfo> dependencies = new List <FileInfo>();

            DependencyManager.getDependencyList(node.filename, dependencies, node.mUnitList);


            // Add a child node to given node for each dependency file in the list
            foreach (FileInfo dependentFileInfo in dependencies)
            {
                DependencyNode childNode = new DependencyNode(dependentFileInfo);
                node.addChild(childNode);
            }

            // Now recurse into the child nodes
            int numChildren = node.getNumChildren();

            for (int i = 0; i < numChildren; i++)
            {
                processRecurse(node.getChild(i));
            }
        }
コード例 #4
0
        private void getUnitListRecurse(DependencyNode node, List <string> unitList)
        {
            foreach (string unitName in node.mUnitList)
            {
                if (!unitList.Contains(unitName))
                {
                    unitList.Add(unitName);
                }
            }

            // Now recurse into the child nodes
            int numChildren = node.getNumChildren();

            for (int i = 0; i < numChildren; i++)
            {
                getUnitListRecurse(node.getChild(i), unitList);
            }
        }
コード例 #5
0
        private void createXMLDocRecurse(DependencyNode node, XmlDocument doc, XmlElement element, bool includeFileSizes)
        {
            XmlAttribute attrib = doc.CreateAttribute("file");

            // Make filename lowercase and add correct extension
            string name      = node.filename.ToLower();
            string extension = Path.GetExtension(name);

            switch (extension)
            {
            case ".vis":
            case ".pfx":
            case ".scn":
            case ".sc2":
            case ".sc3":
            case ".gls":
            case ".dmg":
            case ".cin":
                name = name + ".xmb";
                break;
            }

            attrib.Value = name;

            element.Attributes.Append(attrib);

            if (includeFileSizes)
            {
                XmlAttribute sizeAttr = doc.CreateAttribute("size");
                sizeAttr.Value = node.mFileInfo.lFilesize.ToString();

                element.Attributes.Append(sizeAttr);
            }

            // Now recurse into the child nodes
            int numChildren = node.getNumChildren();

            for (int i = 0; i < numChildren; i++)
            {
                XmlElement childElement = doc.CreateElement("node");
                createXMLDocRecurse(node.getChild(i), doc, childElement, includeFileSizes);
                element.AppendChild(childElement);
            }
        }
コード例 #6
0
        private void createDOTRecurse(DependencyNode node, GraphNode grNodeParent, ref Dictionary <string, GraphNode> graphNodeTable, ref List <GraphEdge> graphEdgeList)
        {
            GraphNode grNode;
            bool      nodeFound = graphNodeTable.TryGetValue(node.filename, out grNode);


            if (nodeFound)
            {
                // Since the node is found just add an edge
                //

                // Create edge
                GraphEdge grEdge = new GraphEdge();
                grEdge.parentNode  = grNodeParent;
                grEdge.childNode   = grNode;
                grEdge.bFileExists = grNode.bFileExists;
                graphEdgeList.Add(grEdge);
            }
            else
            {
                // The node is not found, so we must create a new node,
                // add the edge and recurse into the node.
                //


                // Skip dep nodes since they add confusion.
                if (String.Compare(Path.GetExtension(node.mFileInfo.mFilename), ".dep", true) == 0)
                {
                    // Recurse with children
                    int numChildren = node.getNumChildren();
                    for (int i = 0; i < numChildren; i++)
                    {
                        DependencyNode childNode = node.getChild(i);
                        createDOTRecurse(childNode, grNodeParent, ref graphNodeTable, ref graphEdgeList);
                    }
                }
                else
                {
                    // Create new GraphNode
                    grNode             = new GraphNode();
                    grNode.label       = node.filename;
                    grNode.name        = "node" + graphNodeTable.Count;
                    grNode.bFileExists = node.mFileInfo.bExists;

                    graphNodeTable.Add(node.filename, grNode);


                    // Create edge
                    GraphEdge grEdge = new GraphEdge();
                    grEdge.parentNode  = grNodeParent;
                    grEdge.childNode   = grNode;
                    grEdge.bFileExists = node.mFileInfo.bExists;
                    graphEdgeList.Add(grEdge);


                    // Recurse with children
                    int numChildren = node.getNumChildren();
                    for (int i = 0; i < numChildren; i++)
                    {
                        DependencyNode childNode = node.getChild(i);
                        createDOTRecurse(childNode, grNode, ref graphNodeTable, ref graphEdgeList);
                    }
                }
            }
        }