void IRenderAboveWorld.RenderAboveWorld(Actor self, WorldRenderer wr) { if (Enabled) { render.Draw(wr.Viewport); } }
void IRenderOverlay.Render(WorldRenderer wr) { if (dirty.Count > 0) { render.Draw(wr.Viewport); } }
void IRenderTerrain.RenderTerrain(WorldRenderer wr, Viewport viewport) { spriteLayer.Draw(wr.Viewport); foreach (var r in wr.World.WorldActor.TraitsImplementing <IRenderOverlay>()) { r.Render(wr); } }
void IRenderOverlay.Render(WorldRenderer wr) { render.Draw(wr.Viewport); }
public void RenderShroud(Shroud shroud, WorldRenderer wr) { if (currentShroud != shroud) { if (currentShroud != null) { currentShroud.CellsChanged -= DirtyCells; } if (shroud != null) { shroud.CellsChanged += DirtyCells; } // Needs the anonymous function to ensure the correct overload is chosen if (shroud != null) { visibleUnderShroud = puv => currentShroud.IsExplored(puv); } else { visibleUnderShroud = puv => map.Contains(puv); } if (shroud != null) { visibleUnderFog = puv => currentShroud.IsVisible(puv); } else { visibleUnderFog = puv => map.Contains(puv); } currentShroud = shroud; DirtyCells(map.ProjectedCellBounds); } // We need to update newly dirtied areas of the shroud. // Expand the dirty area to cover the neighboring cells, since shroud is affected by neighboring cells. foreach (var uv in cellsDirty) { cellsAndNeighborsDirty.Add(uv); var cell = ((MPos)uv).ToCPos(map); foreach (var direction in CVec.Directions) { cellsAndNeighborsDirty.Add((PPos)(cell + direction).ToMPos(map)); } } foreach (var puv in cellsAndNeighborsDirty) { var uv = (MPos)puv; if (!tileInfos.Contains(uv)) { continue; } var tileInfo = tileInfos[uv]; var shroudSprite = GetSprite(shroudSprites, GetEdges(puv, visibleUnderShroud), tileInfo.Variant); var shroudPos = tileInfo.ScreenPosition; if (shroudSprite != null) { shroudPos += shroudSprite.Offset - 0.5f * shroudSprite.Size; } var fogSprite = GetSprite(fogSprites, GetEdges(puv, visibleUnderFog), tileInfo.Variant); var fogPos = tileInfo.ScreenPosition; if (fogSprite != null) { fogPos += fogSprite.Offset - 0.5f * fogSprite.Size; } shroudLayer.Update(uv, shroudSprite, shroudPos); fogLayer.Update(uv, fogSprite, fogPos); } cellsDirty.Clear(); cellsAndNeighborsDirty.Clear(); fogLayer.Draw(wr.Viewport); shroudLayer.Draw(wr.Viewport); }
void IRenderShroud.RenderShroud(WorldRenderer wr) { UpdateShroud(map.ProjectedCells); fogLayer.Draw(wr.Viewport); shroudLayer.Draw(wr.Viewport); }
public void Render(WorldRenderer wr) { render.Draw(wr.Viewport); }
void IRenderOverlay.Render(WorldRenderer wr) { spriteLayer.Draw(wr.Viewport); }
void IRenderOverlay.Render(WorldRenderer wr) { render.Draw(wr.Viewport); //Console.WriteLine("d2terrain layer call" + i); //i++; }