public static void translateMaptoMMap(out Vector3 localPos, Vector3 GlobalPose, Generate_Terrain map) { localPos = new Vector3(); localPos.x = GlobalPose.x + Generate_Terrain.tile_width; localPos.z = GlobalPose.z + Generate_Terrain.tile_height; localPos = localPos / map.map_width; localPos.y = (GlobalPose.y / map.map_width); }
private Texture2D combineTextures(Generate_Terrain map, int width, int height) { Texture2D ret = new Texture2D(width, height, TextureFormat.ARGB32, true); Texture2D [,] texs = new Texture2D[map.terrains_width, map.terrains_height]; for (int i = 0; i < map.terrains_width; i++) { for (int j = 0; j < map.terrains_height; j++) { texs[i, j] = new Texture2D(256, 256, TextureFormat.RGB24, true); } } int piece_width = width / map.terrains_width; int piece_height = height / map.terrains_height; //Scale down each texture to the wanted size for (int i = 0; i < map.terrains_width; i++) { for (int j = 0; j < map.terrains_height; j++) { try { //Graphics.CopyTexture(map.terrains[i, j].GetComponent<Terrain>().terrainData.splatPrototypes[0].texture, texs[i, j]); texs[i, j].LoadRawTextureData(map.terrains[i, j].GetComponent <Terrain>().terrainData.splatPrototypes[0].texture.GetRawTextureData()); TextureScale.Point(texs[i, j], piece_width, piece_height); } catch (System.Exception e) { Debug.LogError(map.terrains[i, j].GetComponent <Terrain>().terrainData.splatPrototypes[0].texture.height); Debug.LogError(map.terrains[i, j].GetComponent <Terrain>().terrainData.splatPrototypes[0].texture.width); Debug.LogError(map.terrains[i, j].GetComponent <Terrain>().terrainData.splatPrototypes[0].texture.format); Debug.LogError(e.Message); } } } for (int i = 0; i < map.terrains_width; i++) { for (int j = 0; j < map.terrains_height; j++) { for (int k = 0; k < piece_width; k++) { for (int q = 0; q < piece_height; q++) { ret.SetPixel((i * piece_width) + k, (j * piece_height) + q, (texs[i, j].GetPixel(k, q))); } } } } ret.Apply(); return(ret); }
float [,] createHeightmap(Generate_Terrain maps, int tiles_width, int tiles_height) { float[,] heights = new float[Generate_Terrain.tile_width * tiles_width, Generate_Terrain.tile_height *tiles_height]; for (int k = 0; k < tiles_width; k++) { for (int q = 0; q < tiles_height; q++) { float[,] aHeight = maps.terrains[q, k].GetComponent <Terrain>().terrainData.GetHeights(0, 0, Generate_Terrain.tile_width, Generate_Terrain.tile_height); for (int i = 0; i < Generate_Terrain.tile_width; i++) { for (int j = 0; j < Generate_Terrain.tile_height; j++) { heights[i + k * Generate_Terrain.tile_width, j + q * Generate_Terrain.tile_height] = aHeight[i, j]; } } } } return(heights); }