Beispiel #1
0
        //public bool FromGenData(ChunkGenData data, Action<Chunk> callback)
        //{
        //    if(Busy) { return false; }

        //}

        #endregion

        private void _forge(IntVector3 chunkPos, Action <Chunk> callback)
        {
            Busy         = true;
            OnChunksDone = callback;

            if (vGenConfig.IsSerializedDataValid)
            {
                SerializedChunk.ReadAsync(chunkPos, (SerializedChunk serChunk) =>
                {
                    if (serChunk != null)
                    {
                        Chunk result = Chunk.FromSerializedChunk(serChunk, CreateMapDisplay(chunkPos));
                        chunksDone(result);
                        return;
                    }

                    Debug.Log("got back null from read");
                    computeChunk(chunkPos);
                });
            }
            else
            {
                Debug.Log("ser data invalid");
                computeChunk(chunkPos);
            }
        }
Beispiel #2
0
 //Async version
 private void _UnPack(IntVector3 chunkPos, Action <Chunk> callback)
 {
     Busy         = true;
     OnChunksDone = callback;
     if (vGenConfig.IsSerializedDataValid)
     {
         Debug.Log("will read chunk: " + chunkPos);
         SerializedChunk.ReadAsync(chunkPos, (SerializedChunk serChunk) =>
         {
             if (serChunk != null)
             {
                 Debug.Log("serchunk not null");
                 Chunk result = Chunk.FromSerializedChunk(serChunk, CreateMapDisplay(chunkPos));
                 chunksDone(result);
                 return;
             }
             chunksDone(null);
         });
     }
     else
     {
         Debug.Log("ser data not valid");
         chunksDone(null);
     }
 }
Beispiel #3
0
        async Task ProcessSet(NeighborChunkGenData neis, Action <IntVector3> OnWroteChunkData)
        {
            //TODO: trade data, etc...
            for (int i = 0; i < ChunkGenData.LODLevels; ++i)
            {
                var cullJob = await CullHidden(neis, i);

                updateChunkCenterDisplay(cullJob, neis.centerChunkData, i);
                cullJob.DisposeAll();
            }

            await localLight.CalculateLocalLight(neis);

            // write center chunk
            var wroteAtPos = neis.center;

            //
            // TODO: write chunk at some other juncture
            //
            //var wroteAtPos = await SerializedChunkGenData.WriteAsync(neis.centerChunkData, SerializedChunkGenData.GenDataFullPath(neis.center));

            // write center chunk display arrays
            SerializedChunk.SerializedDisplayBuffers.WriteLODArrays(neis.centerChunkData.displays, neis.center);

            Chunk.MetaData metaData = new Chunk.MetaData();
            metaData.LODBufferLengths         = neis.centerChunkData.displays.getLengths();
            metaData.HasBeenNeighborProcessed = true;
            XMLOp.Serialize(metaData, SerializedChunk.GetMetaDataFullPath(neis.center));

            OnWroteChunkData(wroteAtPos);
        }
Beispiel #4
0
 bool HasBeenNeighborProcessed(IntVector3 chunkPos)
 {
     if (File.Exists(SerializedChunk.GetMetaDataFullPath(chunkPos)))
     {
         Chunk.MetaData meta = XMLOp.Deserialize <Chunk.MetaData>(SerializedChunk.GetMetaDataFullPath(chunkPos));
         return(meta.HasBeenNeighborProcessed);
     }
     return(false);
 }
Beispiel #5
0
            public static void Write(ChunkGenData chunkGenData)
            {
                MetaData metaData = new MetaData
                {
                    LODBufferLengths         = chunkGenData.displays.getLengths(),
                    HasBeenNeighborProcessed = true
                };

                XMLOp.Serialize(metaData, SerializedChunk.GetMetaDataFullPath(chunkGenData.chunkPos));
            }
Beispiel #6
0
        public void Serialize()
        {
            if (!metaData.Dirty)
            {
                return;
            }

            metaData.Dirty = false;
            var serChunk = new SerializedChunk(ChunkPos, mapDisplay.buffers, new uint[0], metaData);

            serChunk.Write();
        }
    public static void WriteSerializedChunk(SerializedChunk serializedChunk, string worldName)
    {
        System.IO.Directory.CreateDirectory(defaultPath + worldName);

        BinaryFormatter binaryFormatter = new BinaryFormatter();

        using (FileStream file = File.Create(defaultPath + worldName + "/chunk" + serializedChunk.chunkPositionX + "-" + serializedChunk.chunkPositionY + extension)) {
            //		Debug.Log ("Chunk saved at " + Application.persistentDataPath);
            binaryFormatter.Serialize(file, serializedChunk);
            file.Close();
        }
    }
    public static Chunk DeserializeChunk(Vector2 chunkPosition, string worldName)
    {
        GameObject chunkGameObject = (GameObject)GameObject.Instantiate(Resources.Load("Prefabs/Chunk"), chunkPosition * PlayerPrefs.GetInt("chunk_size"), Quaternion.identity);
        Chunk      chunk           = chunkGameObject.GetComponent <Chunk>();

        string path = defaultPath + worldName + "/chunk" + chunkPosition.x + "-" + chunkPosition.y + extension;

        if (File.Exists(path))
        {
            BinaryFormatter binaryFormatter = new BinaryFormatter();
            using (FileStream file = File.Open(path, FileMode.Open)) {
                SerializedChunk serializedChunk = (SerializedChunk)binaryFormatter.Deserialize(file);
                file.Close();
                serializedChunk.WriteToChunk(chunk);
            }
        }
        return(chunk);
    }
Beispiel #9
0
 static void SerDesDisplayBuffers()
 {
     SerializedChunk.TestSerDisplayBuffers();
 }
Beispiel #10
0
 public static bool SavedChunkExists(IntVector3 chunkPos)
 {
     return(File.Exists(SerializedChunk.GetMetaDataFullPath(chunkPos)));
 }
Beispiel #11
0
 public static Chunk FromSerializedChunk(SerializedChunk serChunk, MapDisplay display)
 {
     return(serChunk.ToChunk(display));
 }
    public static void SerializeChunk(Chunk chunk, string worldName)
    {
        SerializedChunk serializedChunk = new SerializedChunk(chunk);

        WriteSerializedChunk(serializedChunk, worldName);
    }
Beispiel #13
0
 static string FilePath(IntVector3 origin)
 {
     return(string.Format("{0}.{1}", SerializedChunk.GetFileFullPath(origin), "GenAreaMD"));
 }
Beispiel #14
0
 public static string GenDataFullPath(IntVector3 pos)
 {
     return(string.Format("{0}.CGD", SerializedChunk.GetFileFullPath(pos)));
 }