protected override void ExecuteThread() { Intmap surfaceIntmap = new Intmap(alphamapWidth, alphamapWidth); while (areasQueue.Count() > 0) { Area area = areasQueue.Dequeue(); if (area.Nodes.Length < 3) { continue; } Point2D[] points = new Point2D[area.Nodes.Length]; for (int i = 0; i < points.Length; i++) { points[i] = GetTerrainMapPoint(area.Nodes[i]); } surfaceIntmap.DrawFilledPolygon(points, GetTerrainLayerByName(Enum.GetName(typeof(Area.AreaType), area.Type))); } while (roadsQueue.Count() > 0) { Road road = roadsQueue.Dequeue(); if (road.Nodes.Length < 2) { continue; } for (int i = 1; i < road.Nodes.Length; i++) { Point2D point1 = GetTerrainMapPoint(road.Nodes[i - 1]); Point2D point2 = GetTerrainMapPoint(road.Nodes[i]); surfaceIntmap.DrawLine(point1, point2, GetTerrainLayerByName(Enum.GetName(typeof(Road.RoadType), road.Type)), MetersToTerrainMapCells(road.GetRoadWidth())); } } Alphamap = new float[alphamapWidth, alphamapWidth, alphamapLayers]; for (int x = 0; x < Alphamap.GetLength(0); x++) { for (int y = 0; y < Alphamap.GetLength(1); y++) { Alphamap[y, x, surfaceIntmap.Map[x, y]] = 1; } } }
protected override void ExecuteThread() { Intmap surfaceIntmap = new Intmap(mapWidth, mapWidth); while (areasQueue.Count() > 0) { Area area = areasQueue.Dequeue(); if (area.Nodes.Length < 3) { continue; } Point2D[] points = new Point2D[area.Nodes.Length]; for (int i = 0; i < points.Length; i++) { points[i] = GetSurfaceMapCell(area.Nodes[i]); } surfaceIntmap.DrawFilledPolygon(points, GetSurfaceLayerByName(Enum.GetName(typeof(Area.AreaType), area.Type))); } while (roadsQueue.Count() > 0) { Road road = roadsQueue.Dequeue(); if (road.Nodes.Length < 2) { continue; } for (int i = 1; i < road.Nodes.Length; i++) { Point2D point1 = GetSurfaceMapCell(road.Nodes[i - 1]); Point2D point2 = GetSurfaceMapCell(road.Nodes[i]); surfaceIntmap.DrawLine(point1, point2, GetSurfaceLayerByName(Enum.GetName(typeof(Road.RoadType), road.Type)), MetersToSurfaceMapCells(road.GetRoadWidth())); } } SurfaceMap = surfaceIntmap.Map; }