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"); }
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(); }