Exemple #1
0
    public static void SaveChunk(ChunkSaveObject so)
    {
        BinaryFormatter formatter = new BinaryFormatter();
        string          path      = GetPathFromChunkCoord(so.chunk);
        FileStream      stream    = new FileStream(path, FileMode.Create);

        formatter.Serialize(stream, so);
        stream.Close();
    }
Exemple #2
0
    public static ChunkSaveObject LoadChunk(string path)
    {
        if (File.Exists(path))
        {
            BinaryFormatter formatter = new BinaryFormatter();
            FileStream      stream    = new FileStream(path, FileMode.Open);

            ChunkSaveObject so = formatter.Deserialize(stream) as ChunkSaveObject;
            stream.Close();
            return(so);
        }
        else
        {
            Debug.Log($"No file found: {path}");
            return(null);
        }
    }
Exemple #3
0
    public VectorVoxel[] LoadDataFromChunkSave(ChunkCoord chunk)
    {
        if (ChunkSaveObject.ChunkSaveExist(chunk))
        {
            ChunkSaveObject so = ChunkSaveObject.LoadChunk(ChunkSaveObject.GetPathFromChunkCoord(chunk));
            VectorVoxel[]   vv = new VectorVoxel[so.vectors.Length / 4];

            for (int i = 0; i < vv.Length; i++)
            {
                Vector3Int vec  = new Vector3Int(so.vectors[i, 0], so.vectors[i, 1], so.vectors[i, 2]);
                BlockType  bloc = (BlockType)so.vectors[i, 3];
                vv[i] = new VectorVoxel(vec, bloc);
                PrepareToSave(vec.x, vec.y, vec.z, chunk, bloc);
            }
            return(vv);
        }
        return(null);
    }
Exemple #4
0
    void SaveDataToChunkSave()
    {
        List <ChunkCoord> toRemove = new List <ChunkCoord>();

        foreach (var chunkCoorditem in preparedToSave)
        {
            List <VectorVoxel> vvs = new List <VectorVoxel>();
            foreach (var item in chunkCoorditem.Value)
            {
                VectorVoxel vv = new VectorVoxel(item.Key, item.Value);
                vvs.Add(vv);
            }
            ChunkSaveObject so = new ChunkSaveObject(chunkCoorditem.Key, vvs.ToArray());
            ChunkSaveObject.SaveChunk(so);
            toRemove.Add(chunkCoorditem.Key);
        }
        foreach (ChunkCoord item in toRemove)
        {
            editedBlock.Remove(item);
        }
        preparedToSave.Clear();
    }