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