private void addDebugDrawArea(ViewportDisplayList displayList, IArea area, IViewport viewport) { if (area.Mask.DebugDraw == null) { return; } addToDisplayList(displayList, area.Mask.DebugDraw, viewport); }
private void addToDisplayList(ViewportDisplayList displayList, IObject obj, IViewport viewport) { if (!viewport.IsObjectVisible(obj)) { return; } var layer = displayList.DisplayListPerLayer.GetOrAdd(obj?.RenderLayer?.Z ?? 0, _ => new LayerDisplayList(_comparer)); if (!layer.IsDirty) { return; } layer.Items.Add(obj); }
private void updateDisplayList(IViewport viewport, ViewportDisplayList displayList) { var settings = viewport.DisplayListSettings; var room = viewport.RoomProvider.Room; if (settings.DisplayRoom && room != null) { if (room.Background != null) { addToDisplayList(displayList, room.Background, viewport); } foreach (IObject obj in room.Objects) { if (!room.ShowPlayer && obj == _gameState.Player) { continue; } addToDisplayList(displayList, obj, viewport); } foreach (var area in room.Areas) { addDebugDrawArea(displayList, area, viewport); } } if (settings.DisplayGUIs) { foreach (IObject ui in _gameState.UI) { addToDisplayList(displayList, ui, viewport); } } displayList.Sort(); }