diff --git a/src/AcDream.App/Streaming/StreamingRegion.cs b/src/AcDream.App/Streaming/StreamingRegion.cs index b28b547..bcebe44 100644 --- a/src/AcDream.App/Streaming/StreamingRegion.cs +++ b/src/AcDream.App/Streaming/StreamingRegion.cs @@ -10,9 +10,11 @@ namespace AcDream.App.Streaming; /// public sealed class StreamingRegion { - public int CenterX { get; private set; } - public int CenterY { get; private set; } - public int Radius { get; } + public int CenterX { get; private set; } + public int CenterY { get; private set; } + public int Radius { get; } + public int NearRadius { get; } + public int FarRadius { get; } // Strictly the (2r+1)×(2r+1) window (clamped to world bounds). private readonly HashSet _visible = new(); @@ -43,12 +45,16 @@ public sealed class StreamingRegion /// public IReadOnlyCollection Resident => _resident; - public StreamingRegion(int cx, int cy, int radius) + public StreamingRegion(int centerX, int centerY, int nearRadius, int farRadius) { - Radius = radius; - Recenter(cx, cy); + NearRadius = nearRadius; + FarRadius = farRadius; + Radius = farRadius; // outer ring drives Resident bookkeeping + Recenter(centerX, centerY); } + public StreamingRegion(int cx, int cy, int radius) : this(cx, cy, radius, radius) { } + private void Recenter(int cx, int cy) { CenterX = cx; diff --git a/tests/AcDream.Core.Tests/Streaming/StreamingRegionTwoTierTests.cs b/tests/AcDream.Core.Tests/Streaming/StreamingRegionTwoTierTests.cs new file mode 100644 index 0000000..ccf8f13 --- /dev/null +++ b/tests/AcDream.Core.Tests/Streaming/StreamingRegionTwoTierTests.cs @@ -0,0 +1,18 @@ +using AcDream.App.Streaming; +using Xunit; + +namespace AcDream.Core.Tests.Streaming; + +public class StreamingRegionTwoTierTests +{ + [Fact] + public void Constructor_TwoRadii_ExposesNearAndFarRadii() + { + var region = new StreamingRegion(centerX: 100, centerY: 100, nearRadius: 4, farRadius: 12); + + Assert.Equal(4, region.NearRadius); + Assert.Equal(12, region.FarRadius); + Assert.Equal(100, region.CenterX); + Assert.Equal(100, region.CenterY); + } +}