コード例 #1
0
ファイル: Node.cs プロジェクト: SlOneRPC/RPF-Converter
        public void WriteXml(StringBuilder sb, int indent)
        {
            YndXml.ValueTag(sb, indent, "VehicleNodeCount", NodesCountVehicle.ToString());
            YndXml.ValueTag(sb, indent, "PedNodeCount", NodesCountPed.ToString());

            XmlNodeWrapper[] nodes = null;
            int nodecount          = Nodes?.Length ?? 0;

            if (nodecount > 0)
            {
                nodes = new XmlNodeWrapper[nodecount];
                for (int i = 0; i < nodecount; i++)
                {
                    nodes[i] = new XmlNodeWrapper(Nodes[i], Links);
                }
            }
            YndXml.WriteItemArray(sb, nodes, indent, "Nodes");


            XmlJunctionWrapper[] juncs = null;
            int junccount = Junctions?.Length ?? 0;

            if (junccount > 0)
            {
                juncs = new XmlJunctionWrapper[junccount];
                for (int i = 0; i < junccount; i++)
                {
                    juncs[i] = new XmlJunctionWrapper(Junctions[i], JunctionHeightmapBytes);
                }
            }
            YndXml.WriteItemArray(sb, juncs, indent, "Junctions");

            YndXml.WriteItemArray(sb, JunctionRefs, indent, "JunctionRefs");
        }
コード例 #2
0
ファイル: Node.cs プロジェクト: SlOneRPC/RPF-Converter
        public void ReadXml(XmlNode node)
        {
            NodesCountVehicle = Xml.GetChildUIntAttribute(node, "VehicleNodeCount", "value");
            NodesCountPed     = Xml.GetChildUIntAttribute(node, "PedNodeCount", "value");

            List <Node>            nodelist = new List <Node>();
            List <NodeLink>        linklist = new List <NodeLink>();
            List <NodeJunction>    junclist = new List <NodeJunction>();
            List <byte>            jhmblist = new List <byte>();
            List <NodeJunctionRef> jreflist = new List <NodeJunctionRef>();

            var nodesnode = node.SelectSingleNode("Nodes");

            if (nodesnode != null)
            {
                var nodeitems = nodesnode.SelectNodes("Item");
                foreach (XmlNode nodeitem in nodeitems)
                {
                    XmlNodeWrapper n = new XmlNodeWrapper(linklist);
                    n.ReadXml(nodeitem);
                    nodelist.Add(n.Node);
                }
            }

            var juncsnode = node.SelectSingleNode("Junctions");

            if (juncsnode != null)
            {
                var juncitems = juncsnode.SelectNodes("Item");
                foreach (XmlNode juncitem in juncitems)
                {
                    XmlJunctionWrapper j = new XmlJunctionWrapper(jhmblist);
                    j.ReadXml(juncitem);
                    junclist.Add(j.Junction);
                }
            }

            var jrefsnode = node.SelectSingleNode("JunctionRefs");

            if (jrefsnode != null)
            {
                var jrefitems = jrefsnode.SelectNodes("Item");
                foreach (XmlNode jrefitem in jrefitems)
                {
                    NodeJunctionRef jref = new NodeJunctionRef();
                    jref.ReadXml(jrefitem);
                    jreflist.Add(jref);
                }
            }

            NodesCount     = (uint)nodelist.Count;
            Nodes          = nodelist.ToArray();
            LinksCount     = (uint)linklist.Count;
            Links          = linklist.ToArray();
            JunctionsCount = (uint)junclist.Count;
            Junctions      = junclist.ToArray();
            JunctionHeightmapBytesCount = (uint)jhmblist.Count;
            JunctionHeightmapBytes      = jhmblist.ToArray();
            JunctionRefsCount0          = (ushort)jreflist.Count;
            JunctionRefsCount1          = JunctionRefsCount0;
            JunctionRefs = jreflist.ToArray();
        }