/// <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); } }
/// <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(); }