コード例 #1
0
        /// <summary>
        /// Triggers the given at the given position to be remeshed, if not already in the list.
        /// Preforms no action if the chunk does not exist.
        /// </summary>
        /// <param name="chunkPos">The chunk position.</param>
        /// <param name="later">Whether to remesh the chunk now or later.</param>
        private void RemeshChunkAt(ChunkPosition chunkPos, bool later)
        {
            if (!World.DoesChunkExist(chunkPos))
            {
                return;
            }

            if (later)
            {
                RemeshHandler.RemeshChunkLater(chunkPos);
            }
            else
            {
                RemeshHandler.RemeshChunk(chunkPos);
            }
        }
コード例 #2
0
        /// <summary>
        /// Remeshes all chunks which are marked as dirty.
        /// </summary>
        public void RemeshDirtyChunks()
        {
            if (m_DirtyChunks.Count == 0)
            {
                return;
            }

            List <RemeshTaskStack> tasks = new List <RemeshTaskStack>();

            for (int i = 0; i < m_DirtyChunks.Count; i++)
            {
                var task = RemeshHandler.RemeshChunk(this, m_DirtyChunks[i]);
                tasks.Add(task);
            }

            for (int i = 0; i < tasks.Count; i++)
            {
                tasks[i].Finish();
                AddEvent(new ChunkRemeshEvent(tasks[i]));
            }

            m_DirtyChunks.Clear();
        }