public void SaveChunk(Chunk chunk)
        {
            WorldPos   regionPos          = GetRegionPos(chunk.worldPos);
            RegionFile regionFile         = GetRegionFile(regionPos);
            WorldPos   regionFileChunkPos = GetRegionFileChunkPos(chunk.worldPos, regionPos);

            regionFile.SaveChunkData(regionFileChunkPos.x, regionFileChunkPos.z, chunk);
        }
        public void SaveNetChunk(NetChunkData netChunkData)
        {
            WorldPos   regionPos          = GetRegionPos(netChunkData.worldPos);
            RegionFile regionFile         = GetNetRegionFile(regionPos);
            WorldPos   regionFileChunkPos = GetRegionFileChunkPos(netChunkData.worldPos, regionPos);

            regionFile.SaveChunkData(regionFileChunkPos.x, regionFileChunkPos.z, netChunkData.data);
        }
        public bool LoadChunk(Chunk chunk)
        {
            WorldPos   regionPos          = GetRegionPos(chunk.worldPos);
            RegionFile regionFile         = GetRegionFile(regionPos);
            WorldPos   regionFileChunkPos = GetRegionFileChunkPos(chunk.worldPos, regionPos);
            bool       succ = regionFile.GetChunkData(regionFileChunkPos.x, regionFileChunkPos.z, chunk);

            return(succ);
        }
        public bool LoadNetChunk(NetChunkData netChunkData)
        {
            WorldPos   regionPos          = GetRegionPos(netChunkData.worldPos);
            RegionFile regionFile         = GetNetRegionFile(regionPos);
            WorldPos   regionFileChunkPos = GetRegionFileChunkPos(netChunkData.worldPos, regionPos);
            bool       succ = regionFile.GetChunkData(regionFileChunkPos.x, regionFileChunkPos.z, netChunkData.data);

            return(succ);
        }
        private RegionFile GetRegionFile(WorldPos worldPos)
        {
            RegionFile regionFile = null;

            _map.TryGetValue(worldPos, out regionFile);
            if (regionFile != null)
            {
                return(regionFile);
            }
            string regionFileName = GetRegionFileName(worldPos);
            //			Debug.Log("FullName:" + regionFileName + " worldPos:x=" + worldPos.x + ",z=" + worldPos.z);
            RegionFile file = new RegionFile(regionFileName, MTBCompressType.ZLib);

            file.Init();
            _map.Add(worldPos, file);
            return(file);
        }
        private RegionFile GetNetRegionFile(WorldPos worldPos)
        {
            RegionFile regionFile = null;

            _map.TryGetValue(worldPos, out regionFile);
            if (regionFile != null)
            {
                return(regionFile);
            }
            else
            {
                _netMap.TryGetValue(worldPos, out regionFile);
            }
            if (regionFile != null)
            {
                return(regionFile);
            }
            string     regionFileName = GetRegionFileName(worldPos);
            RegionFile file           = new RegionFile(regionFileName, MTBCompressType.ZLib);

            file.Init();
            _netMap.Add(worldPos, file);
            return(file);
        }