private void RenderPillar(GameObject prefab, LowPolyTerrainTile tile, float height, bool rotateDownwards, float heightScale = 1.0f) { var newObj = Instantiate(prefab); newObj.transform.parent = transform; newObj.transform.localPosition = MatchHighest(tile.Center, height); if (rotateDownwards) { newObj.transform.Rotate(180, 0, 0); } newObj.transform.localScale = new Vector3(1.0f, heightScale, 1.0f); }
private void RenderFloorTile(LowPolyTerrainTile tile, float height, bool swapOrder) { vertices.Add(MatchHighest(tile.Corner1, height)); var corner2 = MatchHighest(tile.Corner2, height); var corner3 = MatchHighest(tile.Corner3, height); vertices.Add(swapOrder ? corner3 : corner2); vertices.Add(swapOrder ? corner2 : corner3); triangles.Add(triangles.Count); triangles.Add(triangles.Count); triangles.Add(triangles.Count); }
private void AddTree(LowPolyTerrainTile tile) { if (TreePrefab == null) { return; } var center = (tile.Corner1 + tile.Corner2 + tile.Corner3) / 3.0f; var newTree = Instantiate(TreePrefab, center, Quaternion.identity) as GameObject; newTree.transform.localScale = Vector3.one * tile.TreeScale; newTree.transform.localEulerAngles = new Vector3(0, tile.TreeRotation, 0); newTree.transform.parent = transform; }
private void RenderUpwardWall(LowPolyTerrainTile tile, float offset, float upper, float lower, int edge, bool swapOrder) { var edgePair = tile.GetEdgeCorners(edge, offset); vertices.Add(MatchHighest(swapOrder ? edgePair.V2 : edgePair.V1, upper)); vertices.Add(MatchHighest(swapOrder ? edgePair.V2 : edgePair.V1, lower)); vertices.Add(MatchHighest(swapOrder ? edgePair.V1 : edgePair.V2, upper)); vertices.Add(MatchHighest(swapOrder ? edgePair.V1 : edgePair.V2, upper)); vertices.Add(MatchHighest(swapOrder ? edgePair.V2 : edgePair.V1, lower)); vertices.Add(MatchHighest(swapOrder ? edgePair.V1 : edgePair.V2, lower)); for (var i = 0; i < 6; i++) { triangles.Add(triangles.Count); } }
private void RenderDownwall(LowPolyTerrainTile tile, float upper, float lower, int edge) { var edgePair = tile.GetEdgeCorners(edge); vertices.Add(MatchHighest(edgePair.V1, upper)); vertices.Add(MatchHighest(edgePair.V1, lower)); vertices.Add(MatchHighest(edgePair.V2, upper)); vertices.Add(MatchHighest(edgePair.V2, upper)); vertices.Add(MatchHighest(edgePair.V1, lower)); vertices.Add(MatchHighest(edgePair.V2, lower)); for (var i = 0; i < 6; i++) { triangles.Add(triangles.Count); } }
public LowPolyTerrainData(int width, int height) { Width = width; Height = height; var total = width * height; Data = new LowPolyTerrainTile[total]; for (var y = 0; y < height; y++) { for (var x = 0; x < width; x++) { Data[x + y * Width] = new LowPolyTerrainTile(x, y); } } TileTypes.Add(Data[0].Type); }