public void SaveDataToFileCaches(int bitMask, VFTile tile, double[][] nData, float[][] hData, float[][] gData, RandomMapType[][] tData)
    {
        if (_voxelTileCachesFS == null)
        {
            return;
        }

        IntVector4 xzlh = new IntVector4(tile.tileX, tile.tileZ, tile.tileL, tile.tileH);

        if (_voxelTileCacheDescsList.ContainsKey(xzlh))
        {
            Debug.LogWarning("[VFDataRTGen]:Try to append a existing voxel tile to cache file." + xzlh);
            return;
        }
        try
        {
            _voxelTileCachesFS.Seek(0, SeekOrigin.End); //Append
            VFTerTileCacheDesc desc = VFTerTileCacheDesc.WriteDataToCache(_bw, bitMask, tile, nData, hData, gData, tData);
            _voxelTileCacheDescsList.Add(xzlh, desc);
        }
        catch (Exception e)
        {
            string strE = e.ToString();
            Debug.LogWarning("[VFDataRTGen]:Failed to append voxel tile to cache file" + xzlh + e);
            if (strE.Contains("IOException: Win32 IO returned 112."))
            {
                GameLog.HandleExceptionInThread(e);
            }
        }
    }