private void RaiseVertex(Vector3 vertex, int dy) { var comparer = new Vector3Comparer(); var affectedHexes = Hexes.Where(h => h.Geometry.Points.Values.Any(v => comparer.Equals(v, vertex))) .Select(h => new { hex = h, point = h.Geometry.Points.First(p => comparer.Equals(p.Value, vertex)).Key }).ToList(); if (!affectedHexes.All(h => h.hex.CanRaisePoint(h.point, dy))) { return; } foreach (var affectedHex in affectedHexes) { if (dy > 0) { affectedHex.hex.Raise(affectedHex.point); } else if (dy < 0) { affectedHex.hex.Lower(affectedHex.point); } else { return; } } affectedHexes.Select(h => h.hex.PatchID).Distinct().ToList().ForEach(i => DirtyPatches.Add(i)); }
public List <HexagonPoint> GetMatchingPoints(Hexagon neighbor) { var comparer = new Vector3Comparer(); var points = Geometry.Border.ToList(); return(neighbor.Geometry.Points.Where(np => points.Any(p => comparer.Equals(p, np.Value))).Select(np => np.Key).ToList()); }