public override void Process(uint seed) { List <PathList> roads = TerrainMeta.Path.Roads; TerrainHeightMap heightMap = TerrainMeta.HeightMap; foreach (PathList item in roads) { if (!World.Networked) { PathInterpolator path = item.Path; Vector3[] points = path.Points; for (int i = 0; i < points.Length; i++) { Vector3 vector = points[i]; vector.y = heightMap.GetHeight(vector); points[i] = vector; } item.TrimTopology(2048); path.Smoothen(8, Vector3.up); path.RecalculateTangents(); item.ResetTrims(); } heightMap.Push(); item.AdjustTerrainHeight(); heightMap.Pop(); } foreach (PathList item2 in roads.AsEnumerable().Reverse()) { item2.AdjustTerrainTexture(); item2.AdjustTerrainTopology(); } MarkRoadside(); TerrainMeta.PlacementMap.Reset(); }
public override void Process(uint seed) { List <PathList> roads = TerrainMeta.Path.Roads; TerrainHeightMap heightmap = TerrainMeta.HeightMap; TerrainTopologyMap topomap = TerrainMeta.TopologyMap; foreach (PathList pathList in roads) { pathList.Path.RecalculateTangents(); } heightmap.Push(); foreach (PathList pathList in roads) { pathList.AdjustTerrainHeight(); pathList.AdjustTerrainTexture(); pathList.AdjustTerrainTopology(); } heightmap.Pop(); int[] map = topomap.dst; int res = topomap.res; ImageProcessing.Dilate2D(map, res, res, 6144, 6, (Action <int, int>)((x, y) => { if ((map[x * res + y] & 49) != 0) { map[x * res + y] |= 4096; } if ((double)heightmap.GetSlope(topomap.Coordinate(x), topomap.Coordinate(y)) <= 40.0) { return; } map[x * res + y] |= 2; })); }
public override void Process(uint seed) { List <PathList> rivers = TerrainMeta.Path.Rivers; TerrainHeightMap heightMap = TerrainMeta.HeightMap; foreach (PathList item in rivers) { if (!World.Networked) { PathInterpolator path = item.Path; item.TrimTopology(16384); path.Smoothen(8, Vector3.up); path.RecalculateTangents(); item.ResetTrims(); } heightMap.Push(); item.AdjustTerrainHeight(); heightMap.Pop(); } foreach (PathList item2 in rivers.AsEnumerable().Reverse()) { item2.AdjustTerrainTexture(); item2.AdjustTerrainTopology(); } MarkRiverside(); }
public override void Process(uint seed) { List <PathList> rivers = TerrainMeta.Path.Rivers; TerrainHeightMap heightMap = TerrainMeta.HeightMap; TerrainTopologyMap topologyMap = TerrainMeta.TopologyMap; foreach (PathList river in rivers) { river.Path.RecalculateTangents(); } heightMap.Push(); foreach (PathList pathList in rivers) { pathList.AdjustTerrainHeight(); pathList.AdjustTerrainTexture(); pathList.AdjustTerrainTopology(); } heightMap.Pop(); int[] numArray = topologyMap.dst; int num = topologyMap.res; ImageProcessing.Dilate2D(numArray, num, num, 49152, 6, (int x, int y) => { if ((numArray[x * num + y] & 49) != 0) { numArray[x * num + y] |= 32768; } float single = topologyMap.Coordinate(x); float single1 = topologyMap.Coordinate(y); if (heightMap.GetSlope(single, single1) > 40f) { numArray[x * num + y] |= 2; } }); }