Esempio n. 1
0
        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());
            }
        }
Esempio n. 2
0
        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());
            }
        }