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
        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. 3
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. 4
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. 5
0
        private void OnNeighborGenerated()
        {
            if (Stage != ColumnStageEnum.Generated)
            {
                return;
            }
            ChunkCache cache = World.Instance.GetCachedChunks();
            var        allNeighborColumns = cache.AllNeighborColumns(this);

            foreach (var column in allNeighborColumns)
            {
                if (column == null || column.Stage == ColumnStageEnum.NotGenerated)
                {
                    return;
                }
            }
            Stage = ColumnStageEnum.AllNeighborsGenerated;
        }
Esempio n. 6
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!!!");
            }
        }
Esempio n. 7
0
 private void OnNeighborGenerated()
 {
     if (Stage != ColumnStageEnum.Generated)
     {
         return;
     }
     ChunkCache cache = World.Instance.GetCachedChunks();
     var allNeighborColumns = cache.AllNeighborColumns(this);
     foreach (var column in allNeighborColumns)
     {
         if (column == null || column.Stage == ColumnStageEnum.NotGenerated)
         {
             return;
         }
     }
     Stage = ColumnStageEnum.AllNeighborsGenerated;
 }
Esempio n. 8
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!!!");
     }
 }