Esempio n. 1
0
        internal void InitializeStage()
        {
            ChunkCache cache = World.Instance.GetCachedChunks();

            // Check if we can progress to next stage
            List <Chunk.ChunkStageEnum> chunkStagesFound = new List <Chunk.ChunkStageEnum>();

            for (int y = 0; y < Chunk.MaxSizeY / 16f; y++)
            {
                Chunk chunk = cache.GetChunk(new PositionChunk(Position.X, y, Position.Z));
                if (!chunkStagesFound.Contains(chunk.Stage))
                {
                    chunkStagesFound.Add(chunk.Stage);
                }
            }
            if (chunkStagesFound.Contains(Chunk.ChunkStageEnum.NotGenerated))
            {
                Stage = ColumnStageEnum.NotGenerated;
            }
            else if (chunkStagesFound.Contains(Chunk.ChunkStageEnum.Generated))
            {
                Stage = ColumnStageEnum.Generated;
                NotifyNeighbors();
            }
            else
            {
                Stage = ColumnStageEnum.Decorated;
                NotifyNeighbors();
            }
        }
Esempio n. 2
0
 private void ChangeChunk(int x, int y, int z)
 {
     PositionChunk positionChunk = PositionChunk.CreateFrom(new PositionBlock(x,y,z));
     chunkCache = World.Instance.GetCachedChunks();
     chunk = chunkCache.GetChunk(positionChunk);
     chunk.Position.GetMinCornerBlock(out chunkCorner);
 }
Esempio n. 3
0
        private void ChangeChunk(int x, int y, int z)
        {
            PositionChunk positionChunk = PositionChunk.CreateFrom(new PositionBlock(x, y, z));

            chunkCache = World.Instance.GetCachedChunks();
            chunk      = chunkCache.GetChunk(positionChunk);
            chunk.Position.GetMinCornerBlock(out chunkCorner);
        }
Esempio n. 4
0
        private void Invalidate()
        {
            ChunkCache cache = World.Instance.GetCachedChunks();

            for (int y = 0; y < Chunk.MaxSizeY / 16f; y++)
            {
                Chunk chunk = cache.GetChunk(new PositionChunk(Position.X, y, Position.Z));
                chunk.Invalidate();
            }
        }
Esempio n. 5
0
        private void SetChunkStage(Chunk.ChunkStageEnum newStage)
        {
            ChunkCache cache = World.Instance.GetCachedChunks();

            for (int y = 0; y < Chunk.MaxSizeY / 16f; y++)
            {
                Chunk chunk = cache.GetChunk(new PositionChunk(Position.X, y, Position.Z));
                chunk.Stage = newStage;
            }
        }
Esempio n. 6
0
        internal void Decorate()
        {
            // Decorate here..
            ChunkCache cache = World.Instance.GetCachedChunks();
            Chunk      chunk = cache.GetChunk(new PositionChunk(Position.X, 0, Position.Z));

            World.Instance.Generator(chunk).Decorate(chunk);
            InvalidateMeAndNeighbors();

            // update chunks and column stages
            SetChunkStage(Chunk.ChunkStageEnum.Update);
            Stage = ColumnStageEnum.Decorated;
            NotifyNeighbors();
        }
Esempio n. 7
0
        internal void OnChunkGenerated()
        {
            ChunkCache cache = World.Instance.GetCachedChunks();

            if (Stage == ColumnStageEnum.NotGenerated)
            {
                // Check if we can progress to next stage
                for (int y = 0; y < Chunk.MaxSizeY / 16f; y++)
                {
                    Chunk chunk = cache.GetChunk(new PositionChunk(Position.X, y, Position.Z));
                    if (chunk.Stage == Chunk.ChunkStageEnum.NotGenerated)
                    {
                        return;
                    }
                }
                Stage = ColumnStageEnum.Generated;
                NotifyNeighbors();
            }
            else
            {
                throw new Exception("ERROR in chunkcolumn stage!!!");
            }
        }