protected virtual Point[] GetEffectiveArea() { List <Point> result = new List <Point>(); IEnumerable <Point> enumPoints; int count = EffectSpriteColor.Length; if (count < ZipCount) { enumPoints = ShiftPosition.EnumIt(SpriteColorSize, Point.One, ShiftPositionPropensity.LineByLine); } else if (count < ZipCount * 3) { enumPoints = ShiftPosition.EnumIt(SpriteColorSize, Point.One, ShiftPositionPropensity.Random512); } else if (count < ZipCount * 6) { enumPoints = ShiftPosition.EnumIt(SpriteColorSize, Point.One, ShiftPositionPropensity.Interval2); } else { enumPoints = ShiftPosition.EnumIt(SpriteColorSize, Point.One, ShiftPositionPropensity.Interval3); } foreach (Point enumPoint in enumPoints) { JPColor enumPointColor = SpriteColor[enumPoint.X, enumPoint.Y]; if (enumPointColor.A > 0.25) { result.Add(enumPoint); } } return(result.ToArray()); }
protected virtual IEnumerable <Point> GetShiftPosition() => ShiftPosition.EnumIt(EffectSpriteColorSize, SpriteColorSize, Propensity);