Esempio n. 1
0
        /// <inheritdoc />
        public void AddChunk(ChunkColumn chunk, ChunkCoordinates position, bool doUpdates = false)
        {
            //chunk.CalculateHeight();

            Chunks.AddOrUpdate(
                position, coordinates => chunk, (coordinates, column) =>
            {
                if (!ReferenceEquals(column, chunk))
                {
                    column.Dispose();
                }

                return(chunk);
            });

            if (chunk.IsNew)
            {
                var chunkpos = new BlockCoordinates(position.X << 4, 0, position.Z << 4);

                foreach (var ls in chunk.GetLightSources())
                {
                    BlockLightCalculations.Enqueue(chunkpos + ls);
                }

                //SkyLightCalculations s = new SkyLightCalculations();

                //SkyLightCalculator.Calculate(chunk, position);
            }

            foreach (var blockEntity in chunk.GetBlockEntities)
            {
                var coordinates = new BlockCoordinates(blockEntity.X, blockEntity.Y, blockEntity.Z);
                //World.SetBlockEntity(coordinates.X, coordinates.Y, coordinates.Z, blockEntity);
                World.EntityManager.AddBlockEntity(coordinates, blockEntity);
            }

            ScheduleChunkUpdate(position, ScheduleType.Full);
            //UpdateQueue.Enqueue(position);
        }
Esempio n. 2
0
 /// <inheritdoc />
 public bool TryGetChunk(ChunkCoordinates coordinates, out ChunkColumn chunk)
 {
     return(Chunks.TryGetValue(coordinates, out chunk));
 }
Esempio n. 3
0
 public SkyLightBlockAccess(ChunkManager worldProvider, ChunkColumn chunk) : this(worldProvider, -1)
 {
     _chunk = chunk;
     _coord = new ChunkCoordinates(chunk.X, chunk.Z);
 }
Esempio n. 4
0
        public void SetSkyLight(BlockCoordinates coordinates, byte skyLight)
        {
            ChunkColumn chunk = GetChunk(coordinates, true);

            chunk?.SetSkyLight(coordinates.X & 0x0f, coordinates.Y & 0xff, coordinates.Z & 0x0f, skyLight);
        }
Esempio n. 5
0
 public void SetBlock(Block block, bool broadcast = true, bool applyPhysics = true, bool calculateLight = true, ChunkColumn possibleChunk = null)
 {
 }
Esempio n. 6
0
 public Block GetBlock(BlockCoordinates coord, ChunkColumn tryChunk = null)
 {
     return(null);
 }
Esempio n. 7
0
File: World.cs Progetto: K4mey/Alex
 public BlockCoordinates FindBlockPosition(BlockCoordinates coords, out ChunkColumn chunk)
 {
     ChunkManager.TryGetChunk(new ChunkCoordinates(coords.X >> 4, coords.Z >> 4), out chunk);
     return(new BlockCoordinates(coords.X & 0xf, coords.Y & 0xff, coords.Z & 0xf));
 }
Esempio n. 8
0
 public void SetBlock(Block block, bool broadcast = true, bool applyPhysics = true, bool calculateLight = true,
                      ChunkColumn possibleChunk   = null)
 {
     throw new System.NotImplementedException();
 }
Esempio n. 9
0
 public BlockCoordinates FindBlockPosition(BlockCoordinates coords, out ChunkColumn chunk)
 {
     throw new System.NotImplementedException();
 }