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);
    }
Ejemplo n.º 2
0
    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);
    }
Ejemplo n.º 3
0
    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);
    }