void ITickRender.TickRender(WorldRenderer wr, Actor self) { foreach (var cell in dirty) { if (!resourceLayer.IsVisible(cell)) { continue; } var contents = resourceLayer.GetResource(cell); var cellIndices = CalculateCellIndices(contents, cell); if (cellIndices != renderIndices[cell]) { renderIndices[cell] = cellIndices; UpdateRenderedSprite(cell, cellIndices); } cleanDirty.Enqueue(cell); } while (cleanDirty.Count > 0) { dirty.Remove(cleanDirty.Dequeue()); } }
void ITickRender.TickRender(WorldRenderer wr, Actor self) { foreach (var cell in dirty) { if (!ResourceLayer.IsVisible(cell)) { continue; } var resourceContent = ResourceLayer.GetResource(cell); if (resourceContent.Density > 0) { var cellContents = RenderContent[cell]; var variant = cellContents.Variant; if (cellContents.Variant == null || cellContents.Type != resourceContent.Type) { variant = ChooseRandomVariant(resourceContent.Type); } var rendererCellContents = new RendererCellContents(variant, resourceContent.Type, resourceContent.Density); RenderContent[cell] = rendererCellContents; UpdateRenderedSprite(cell, rendererCellContents); } else { var rendererCellContents = RendererCellContents.Empty; RenderContent[cell] = rendererCellContents; UpdateRenderedSprite(cell, rendererCellContents); } cleanDirty.Enqueue(cell); } while (cleanDirty.Count > 0) { dirty.Remove(cleanDirty.Dequeue()); } }