Ejemplo n.º 1
0
        private void WriteLane(ILaneDefinition lane, XmlDocument xml, XmlNode node)
        {
            var widthNode = xml.CreateElement("width");

            widthNode.InnerText = lane.Width.ToString(CultureInfo.InvariantCulture);
            node.AppendChild(widthNode);

            var typeNode = xml.CreateElement("type");

            typeNode.InnerText = lane.LaneType.ToString();
            node.AppendChild(typeNode);

            var flagsNode = xml.CreateElement("flags");

            flagsNode.InnerText = lane.LaneFlags.ToString();
            node.AppendChild(flagsNode);

            var centerOffsetNode = xml.CreateElement("centerOffset");

            centerOffsetNode.InnerText = lane.CenterOffset.ToString();
            node.AppendChild(centerOffsetNode);

            var rangeFlagsNode = xml.CreateElement("rangeFlags");

            node.AppendChild(rangeFlagsNode);
            for (var i = 0; i < lane.RangeFlags.Count; i++)
            {
                var rangeFlagNode  = xml.CreateElement("rangeFlag");
                var indexAttribute = xml.CreateAttribute("index");
                indexAttribute.Value = i.ToString();
                rangeFlagNode.Attributes.Append(indexAttribute);
                WriteRangeFlag(lane.RangeFlags[i], xml, rangeFlagNode);
                rangeFlagsNode.AppendChild(rangeFlagNode);
            }
        }
Ejemplo n.º 2
0
        private void ReadLane(ILaneDefinition lane, IRoadmapFactory roadmapFactory, XmlNode laneNode)
        {
            var width        = float.Parse(laneNode.GetFieldValue("width"));
            var type         = (LaneType)Enum.Parse(typeof(LaneType), laneNode.GetFieldValue("type"));
            var flags        = (LaneFlags)Enum.Parse(typeof(LaneFlags), laneNode.GetFieldValue("flags"));
            var centerOffset = ushort.Parse(laneNode.GetFieldValue("centerOffset"));

            lane.Width        = width;
            lane.LaneType     = type;
            lane.LaneFlags    = flags;
            lane.CenterOffset = centerOffset;

            var rangeFlagNodes = laneNode.SelectNodes("rangeFlags/rangeFlag");

            foreach (XmlNode rangeFlagNode in rangeFlagNodes)
            {
                IRangeFlag rangeFlag = roadmapFactory.RangeFlag();
                ReadRangeFlag(rangeFlag, rangeFlagNode);
                lane.RangeFlags.Add(rangeFlag);
            }
        }
Ejemplo n.º 3
0
        private void ReadRoad(IRoadDefinition road, IRoadmapFactory roadmapFactory, XmlNode roadNode)
        {
            var roadGraphEdgeIndex         = StrWithMaxValueNegativeOneToUshort(roadNode.GetFieldValue("roadGraphEdgeIndex"));
            var oppositeRoadGraphEdgeIndex = StrWithMaxValueNegativeOneToUshort(roadNode.GetFieldValue("oppositeRoadGraphEdgeIndex"));
            var oppositeLanesCount         = byte.Parse(roadNode.GetFieldValue("oppositeLanesCount"));
            var forwardLanesCount          = byte.Parse(roadNode.GetFieldValue("forwardLanesCount"));
            var maxSpawnedCars             = byte.Parse(roadNode.GetFieldValue("maxSpawnedCars"));
            var direction   = (RoadDirection)Enum.Parse(typeof(RoadDirection), roadNode.GetFieldValue("direction"));
            var splineIndex = ushort.Parse(roadNode.GetFieldValue("splineIndex"));
            var type        = (RoadType)Enum.Parse(typeof(RoadType), roadNode.GetFieldValue("type"));

            road.RoadGraphEdgeIndex         = roadGraphEdgeIndex;
            road.OppositeRoadGraphEdgeIndex = oppositeRoadGraphEdgeIndex;
            road.OppositeLanesCount         = oppositeLanesCount;
            road.ForwardLanesCount          = forwardLanesCount;
            road.MaxSpawnedCars             = maxSpawnedCars;
            road.Direction       = direction;
            road.RoadSplineIndex = splineIndex;
            road.RoadType        = type;

            var laneNodes = roadNode.SelectNodes("lanes/lane");

            foreach (XmlNode laneNode in laneNodes)
            {
                ILaneDefinition lane = roadmapFactory.Lane();
                ReadLane(lane, roadmapFactory, laneNode);
                road.Lanes.Add(lane);
            }

            var rangeFlagNodes = roadNode.SelectNodes("rangeFlags/rangeFlag");

            foreach (XmlNode rangeFlagNode in rangeFlagNodes)
            {
                IRangeFlag rangeFlag = roadmapFactory.RangeFlag();
                ReadRangeFlag(rangeFlag, rangeFlagNode);
                road.RangeFlags.Add(rangeFlag);
            }
        }