private IEnumerable <GridPoint> GetRayLine(Vector3 from, Vector3 to) { var gridFrom = ToGridPoint(from); var gridTo = ToGridPoint(to); return(Bresenham.GetPointsOnLine(gridFrom, gridTo)); }
public void UpdateVisibility() { foreach (Tile tile in Tiles) { foreach (Tile other in Tiles) { tile.Visibility[other.Index] = true; foreach (Point point in Bresenham.GetPointsOnLine(tile.X, tile.Y, other.X, other.Y)) { if (Tiles[point.X, point.Y].IsObstacle) { tile.Visibility[other.Index] = false; break; } } } } }
public void OnMousePressed(MouseButton button, Point mousePosition, Keys[] allHeldKeys) { int x = mousePosition.X / 32; int y = mousePosition.Y / 32; Tile tile = Tiles[x, y]; if (tile != null) { if (!allHeldKeys.Contains(Keys.LeftControl)) { if (button == MouseButton.Middle) { POVTile = tile; UpdateVisibility(); } else if (button == MouseButton.Left) { LineOrigin = tile.Position; } else if (button == MouseButton.Right) { if (allHeldKeys.Contains(Keys.LeftShift)) { foreach (Point point in Bresenham.GetPointsOnLine(LineOrigin.X, LineOrigin.Y, tile.X, tile.Y)) { Line.Add(point); } } else { Line = Bresenham.GetPointsOnLine(LineOrigin.X, LineOrigin.Y, tile.X, tile.Y).ToList(); } } } } }