/// <summary> /// Initializes a new instance of the <see cref="MaskedExtent" /> class with the specified extent and mask. /// </summary> /// <param name="extent">The extent to wrap, which must not be <c>null</c>.</param> /// <param name="mask">The mask to use, which must not be <c>null</c>.</param> /// <exception cref="ArgumentNullException"><paramref name="mask" /> is <c>null</c>.</exception> public MaskedExtent([NotNull] Extent extent, [NotNull] Mask mask) : base(extent) { _mask = mask ?? throw new ArgumentNullException(nameof(mask)); }
/// <inheritdoc /> public override bool SetTile(Vector position, Tile tile) => _mask.Test(Extent, position) && Extent.SetTile(position, tile);
/// <summary> /// Initializes a new instance of the <see cref="LimitedExtent" /> class with the specified extent and limit. /// </summary> /// <param name="extent">The extent to wrap, which must not be <c>null</c>.</param> /// <param name="limit">The limit on the number of tiles that can be set. A negative value indicates no limit.</param> public LimitedExtent([NotNull] Extent extent, int limit) : base(extent) { _limit = limit; }