Ejemplo n.º 1
0
 private IEnumerator RefreshEntity()
 {
     while (true)
     {
         if (world.FirstGeneted)
         {
             if (entityRefreshQueue.Count > 0)
             {
                 WorldPos refreshPos = entityRefreshQueue.Dequeue();
                 //真正要刷的时候再次判断是否在玩家视野
                 if (IsInPlayerView(refreshPos))
                 {
                     Chunk chunk = world.GetChunk(refreshPos.x, refreshPos.y, refreshPos.z);
                     if (chunk != null && chunk.isGenerated)
                     {
                         if (chunk.RefreshEntity() > 0)
                         {
                             yield return(new WaitForSeconds(0.1f));
                         }
                     }
                 }
             }
             if (entityRemoveQueue.Count > 0)
             {
                 WorldPos removePos = entityRemoveQueue.Dequeue();
                 if (!IsInPlayerView(removePos))
                 {
                     Chunk chunk = world.GetChunk(removePos.x, removePos.y, removePos.z);
                     if (chunk != null)
                     {
                         if (chunk.RemoveEntity() > 0)
                         {
                             yield return(new WaitForSeconds(0.1f));
                         }
                     }
                 }
             }
         }
         yield return(null);
     }
 }
Ejemplo n.º 2
0
        private void OnChunkGenerateFinish(object[] param)
        {
            Chunk chunk = param[0] as Chunk;

            chunk.RefreshEntity();
        }