public TerrainChunk CreateMesh() { GameObject chunkObject = MeshGenerator.CreateEmptyObject("TerrainChunk", "Ground"); MeshGenerator.ApplyMesh(chunkObject, Vertices, Triangles, MaterialHandler.Instance.TerrainColor); TerrainChunk chunk = chunkObject.AddComponent <TerrainChunk>(); return(chunk); }
void GenerateMap() { Map map = new Map(mapWidth, mapHeight); RandomFillMap(map); for (int i = 0; i < smoothingIterations; i++) { SmoothMap(map); } if (fillThreshold > 0) { RemoveSmallRegions(map, 1, 0); } MeshGenerator meshGen = GetComponent <MeshGenerator>(); Map tileMap = meshGen.GenerateMap(map); Map tileSheetMap = new Map(tileMap.Width, tileMap.Height); Map edgeMap = GenerateEdgeMap(tileMap, 0, 15); List <List <Coord> > landRegions = GetRegions(tileMap, 0); foreach (List <Coord> region in landRegions) { foreach (Coord coord in region) { byte tileByteAddress = edgeMap.ActiveNeighborByte(coord.X, coord.Y, 1); if (edgeMap.IsInRange(coord.X, coord.Y) && edgeMap.ActiveNeighborCount(coord.X, coord.Y, 1) > 0) { tileMap[coord.X, coord.Y] = tileByteAddress; tileSheetMap[coord.X, coord.Y] = 1; } } } gizmoMap = edgeMap; meshGen.ApplyTileMap(tileSheetMap, tileMap); meshGen.ApplyMesh(); }
private void TriangulateChunk() { grass.ClearMesh(); fog.ClearMesh(); liquid.ClearMesh(); foundation.ClearMesh(); structure.ClearMesh(); ceiling.ClearMesh(); ceilingMask.ClearMesh(); for (int i = 0; i < cells.Length; i++) { TriangulateCell(cells[i]); } grass.ApplyMesh(); fog.ApplyMesh(); liquid.ApplyMesh(); foundation.ApplyMesh(); structure.ApplyMesh(); ceiling.ApplyMesh(); ceilingMask.ApplyMesh(); }
public static WagonFloor GenerateWagonFloor() { GameObject floorObject = MeshGenerator.CreateEmptyObject("Floor", "Train"); Vector3[] vertices = new Vector3[0]; int[] triangles = new int[0]; float left = -Wagon.Width / 2; float right = Wagon.Width / 2; float front = 0f; float back = Wagon.Length; float bot = 0f; float top = WagonFloor.FloorHeight; MeshGenerator.AddCube(ref vertices, ref triangles, left, right, front, back, top, bot); MeshGenerator.ApplyMesh(floorObject, vertices, triangles, MaterialHandler.Instance.DefaultColor); WagonFloor floor = floorObject.AddComponent <WagonFloor>(); floor.Init(null); return(floor); }
private static void GeneratePlank(GameObject segmentObject, RailPathPoint p1, RailPathPoint p2, RailSettings settings, Vector3 toVector, Vector3 toVectorPpc) { GameObject plankObject = MeshGenerator.CreateEmptyObject("Plank", "Ground", segmentObject.transform); Vector3[] vertices = new Vector3[0]; int[] triangles = new int[0]; Vector3 frontOrigin = p1.Position + toVector / 3f; Vector3 backOrigin = p1.Position + toVector / 3f * 2f; Vector3 heightOffset = new Vector3(0f, settings.PlankHeight, 0f); Vector3 leftBackTop = backOrigin - (toVectorPpc * settings.PlankWidth / 2f) + heightOffset; Vector3 rightBackTop = backOrigin + (toVectorPpc * settings.PlankWidth / 2f) + heightOffset; Vector3 rightFrontTop = frontOrigin + (toVectorPpc * settings.PlankWidth / 2f) + heightOffset; Vector3 leftFrontTop = frontOrigin - (toVectorPpc * settings.PlankWidth / 2f) + heightOffset; Vector3 leftBackBot = backOrigin - (toVectorPpc * settings.PlankWidth / 2f); Vector3 rightBackBot = backOrigin + (toVectorPpc * settings.PlankWidth / 2f); Vector3 rightFrontBot = frontOrigin + (toVectorPpc * settings.PlankWidth / 2f); Vector3 leftFrontBot = frontOrigin - (toVectorPpc * settings.PlankWidth / 2f); MeshGenerator.AddCuboid(ref vertices, ref triangles, leftBackTop, rightBackTop, rightFrontTop, leftFrontTop, leftBackBot, rightBackBot, rightFrontBot, leftFrontBot); MeshGenerator.ApplyMesh(plankObject, vertices, triangles, MaterialHandler.Instance.RailPlankColor); }