Example #1
0
        private void ReplaceChunkPrefabs(Index index)
        {
            if (CacheChunkIndexes.Exists(p => p.IsEqual(index)) == true)
            {
                return;
            }

            Chunk chunk = ChunkManager.GetChunkComponent(index);

            if (chunk != null)
            {
                int SideLength = Engine.ChunkSideLength;
                for (int x = 0; x < SideLength; x++)
                {
                    for (int y = 0; y < SideLength; y++)            ///高度
                    {
                        for (int z = 0; z < SideLength; z++)
                        { // 循环创建chunk中每一个Voxel
                            ushort data = chunk.GetVoxelSimple(x, y, z);
                            if (data > 100 && data <= 200)
                            {
                                ushort span = 100;
                                chunk.SetVoxel(x, y, z, (ushort)(data + span), true);
                            }
                        }
                    }
                }
                CacheChunkIndexes.Add(index);
            }
        }
Example #2
0
        private void ReplaceChunkDatas(Index index)
        {
            Chunk chunk = ChunkManager.GetChunkComponent(index);

            if (chunk != null)
            {
                for (int i = 0; i < chunk.transform.childCount; i++)
                {
                    DestroyObject(chunk.transform.GetChild(i).gameObject);
                }
                int SideLength = Engine.ChunkSideLength;
                for (int x = 0; x < SideLength; x++)
                {
                    for (int y = 0; y < SideLength; y++)            ///高度
                    {
                        for (int z = 0; z < SideLength; z++)
                        { // 循环创建chunk中每一个Voxel
                            ushort data = chunk.GetVoxelSimple(x, y, z);
                            if (data > 200)
                            {
                                ushort span = 100;
                                chunk.SetVoxel(x, y, z, (ushort)(data - span), true);
                            }
                        }
                    }
                }
                if (CacheChunkIndexes.Exists(p => p.IsEqual(index)) == true)
                {
                    CacheChunkIndexes.Remove(index);
                }
            }
        }
Example #3
0
        void SetVoxelForNeighbor(Direction dir, int x, int y, int z, ushort data, bool updateMesh)
        {
            Chunk n = neighborChunks[(int)dir];

            if (n != null)
            {
                n.SetVoxel(x, y, z, data, updateMesh);
            }
        }
 public void SetVoxel(ushort data, bool updateMesh)
 {
     chunk.SetVoxel(index, data, updateMesh);
 }