Beispiel #1
0
    private void Update()
    {
        if (parse)
        {
            parse = false;
            scMap.ParseSCMapFile(filePath);
            texture            = (Texture2D)scMap.header.preview;
            texture.anisoLevel = 0;
            texture.filterMode = FilterMode.Point;

            float[,] heights = new float[(int)scMap.terrain.size.x + 1, (int)scMap.terrain.size.y + 1];
            for (int i = 0; i < scMap.terrain.size.x + 1; i++)
            {
                for (int j = 0; j < scMap.terrain.size.y + 1; j++)
                {
//                    Debug.LogFormat("i={0},j={1}:{2}", i, j, i + ((scMap.heightMapSizeY+1) - j - 1) * (scMap.heightMapSizeX+1));
                    heights[j, i] = scMap.terrain.heights[i + (((int)scMap.terrain.size.y + 1) - j - 1) * ((int)scMap.terrain.size.x + 1)] / 65535f;
//                    heights[j, i] = scMap.heightMap[i + j * ((int)scMap.terrainSize.x + 1)] / 65535f;
                }
            }
//            mapTerrain.terrainData.size = new Vector3(((int)scMap.terrainSize.x + 1), 513, ((int)scMap.terrainSize.y + 1));
//            mapTerrain.terrainData.SetHeights(0, 0, heights);
//            mapTerrain.ApplyDelayedHeightmapModification();

//            terrainManager.Init(heights, new Vector2(0, 0), new Vector2(254, 254), 513);
            terrainManager.Init(heights, new Vector3(scMap.terrain.size.x, 513, scMap.terrain.size.y));

            scMap.layers[0].Prepare();
            terrainManager.GetLayer(0).SetTexture((Texture2D)scMap.layers[0].albedo, (Texture2D)scMap.layers[0].normal);
            terrainManager.GetLayer(0).SetTiling(1 / scMap.layers[0].tiling_albedo, 1 / scMap.layers[0].tiling_normal);
            terrainManager.GetLayer(0).Apply();

//            for (int i = 1; i < scMap.layers.Count; i++)
//            {
//                try
//                {
//                    scMap.layers[i].Prepare();
//                    Layer layer = scMap.layers[i];
//                    terrainManager.AddLayer((Texture2D) layer.albedo,1/layer.tiling_albedo, (Texture2D) layer.normal, 1/layer.tiling_normal);
//                }
//                catch (Exception e)
//                {
//
//                }
//            }

            texture = (Texture2D)scMap.layers[0].normal;

            byte[] bytes = texture.EncodeToPNG();
            File.WriteAllBytes(Application.dataPath + "/../test.png", bytes);
        }
    }