Exemple #1
0
        // NOTE: we must renounce chunk computing in the display thread
        // to ensure that we don't scuttle the buffers with overlapping compute calls

        public async Task <ColumnAndHeightMap <ChunkGenData> > ComputeColumnAtAsync(Column <ChunkGenData> column, Func <IntVector3, ChunkGenData> GetFromMemory)
        {
            //...Set data for the heightmap
            ColumnAndHeightMap <ChunkGenData> cah = new ColumnAndHeightMap <ChunkGenData>();

            cah.column    = column;
            cah.heightMap = new HeightMap(vGenConfig.ColumnFootprint);

            var keys = cah.column.Keys.ToArray();
            int dbugComputedCount = 0;

            for (int i = 0; i < keys.Length; ++i)
            {
                var data = GetFromMemory(cah.column.position.ToIntVector3XZWithY(keys[i]));
                if (data == null)
                {
                    dbugComputedCount++;
                    data = (ChunkGenData)(await ComputeGenData(cah.column.position.ToIntVector3XZWithY(keys[i])));
                }
                cah.column[keys[i]] = data;
            }


            //TODO: set height map data
            //int[] heights = CVoxelMapFormat.BufferCountArgs.GetData<int>(cvoxelMapData.MapHeights); //TODO: fill with actual data
            //FAKENESS

            int[] heights = FakeChunkData.FakeHeights(vGenConfig.ChunkSize, keys.OrderByDescending((k) => k).ToArray()[0]);

            cah.heightMap.setData(heights);

            return(cah);
        }
Exemple #2
0
        IEnumerator ComputeGenDataFAKE(IntVector3 chunkPos)
        {
            ChunkGenData c = FakeChunkData.StairsGenData(chunkPos, vGenConfig.ChunkSize, 5);

            yield return(new WaitForEndOfFrame());

            yield return(new WaitForSeconds(.05f));

            yield return(c);
        }
Exemple #3
0
        public static void TestWriteCGD()
        {
            var cgd = FakeChunkData.StairsGenData(IntVector3.zero, new IntVector3(64));

            Debug.Log("aboud to write");
            DBUGFirstFew(cgd);
            WriteAsyncDebug(cgd, GenDataFullPath(cgd.chunkPos), () =>
            {
                var reCGD = Read(cgd.chunkPos);
                DBUGFirstFew(reCGD);
                bool eq = DBUGEqual(reCGD, cgd);
                Debug.Log("Are they equal (read and written)? : " + eq);
            });
            Debug.Log("This gets called on main thread");
        }
Exemple #4
0
 private void FakeInit()
 {
     Init(IntVector3.zero, FakeChunkData.Stairs(vGenConfig.ChunkSize));
 }