public void CurveType( NodePosition startPosition1, RoadType startType1, NodePosition endPosition1, RoadType endType1, NodePosition startPosition2, RoadType startType2, NodePosition endPosition2, RoadType endType2, RoadTextureType expectedCurveType) { var start1 = new MapObject(NodePositions[startPosition1], 0, startType1, default); var end1 = new MapObject(NodePositions[endPosition1], 0, endType1, default); var start2 = new MapObject(NodePositions[startPosition2], 0, startType2, default); var end2 = new MapObject(NodePositions[endPosition2], 0, endType2, default); var template = new RoadTemplate("SideWalk3"); var topology = new RoadTopology(); topology.AddSegment(template, start1, end1); topology.AddSegment(template, start2, end2); topology.AlignOrientation(); var curveNode = topology.Nodes.Single(n => n.Edges.Count == 2); var actualCurveType = CurvedRoadSegment.ChooseCurveType(topology.Edges[0], topology.Edges[1], curveNode.Position); Assert.Equal(expectedCurveType, actualCurveType); }
public static RoadTopology FromMapObjects(MapObject[] mapObjects) { var roadTopology = new RoadTopology(); var templates = new Dictionary <string, RoadTemplate>(); for (var i = 0; i < mapObjects.Length; i++) { var mapObject = mapObjects[i]; switch (mapObject.RoadType & RoadType.PrimaryType) { case RoadType.Start: case RoadType.End: var roadEnd = mapObjects[++i]; // Some maps have roads with invalid start- or endpoints. // We'll skip processing them altogether. if (mapObject.TypeName == "" || roadEnd.TypeName == "") { continue; } if (!templates.TryGetValue(mapObject.TypeName, out var template)) { template = new RoadTemplate(mapObject.TypeName); templates.Add(mapObject.TypeName, template); } roadTopology.AddSegment(template, mapObject, roadEnd); break; } } return(roadTopology); }
public void ShowSubRoadBlockCombinationEffect(GameObject parentRoad) { RoadTemplate tempRoad = roadList[0].GetComponent <RoadTemplate>(); if (null != tempRoad) { tempRoad.SetSubRoadCombinationEffect(); } roadList.RemoveAt(0); }
public void ShowSubRoadBlockBreakupEffect(GameObject parentRoad) { RoadTemplate tempRoad = parentRoad.GetComponent <RoadTemplate>(); if (null != tempRoad) { tempRoad.SetSubRoadBreakupEffect(); roadList.Add(parentRoad); } }
public void DarkOldDirtFourGravel() { var gravel = new RoadTemplate("GravelRoad"); var dirt = new RoadTemplate("DirtRoad"); var four = new RoadTemplate("FourLane"); var old = new RoadTemplate("TwoLaneOld"); var dark = new RoadTemplate("TwoLaneDark"); var templates = new[] { dark, old, four, dirt, gravel, }; var roadTemplateList = new RoadTemplateList(templates); roadTemplateList.HandleRoadJoin(dark, old); var expectedOrder = new[] { gravel, dirt, four, old, dark, }; Assert.Equal(expectedOrder, roadTemplateList); roadTemplateList.HandleRoadJoin(old, dirt); Assert.Equal(expectedOrder, roadTemplateList); roadTemplateList.HandleRoadJoin(dirt, four); expectedOrder = new[] { gravel, four, dirt, old, dark, }; roadTemplateList.HandleRoadJoin(four, gravel); Assert.Equal(expectedOrder, roadTemplateList); roadTemplateList.HandleRoadJoin(gravel, dark); Assert.Equal(expectedOrder, roadTemplateList); }
public RoadTopologyEdge( RoadTemplate template, RoadTopologyNode start, RoadType startType, RoadTopologyNode end, RoadType endType) { Template = template; Start = start; StartType = startType; End = end; EndType = endType; }
public RoadNetwork(RoadTemplate template) { Template = template; }