Retail's CTransition::find_transitional_position (:273613) has no step cap. calc_num_steps (:272149) has a dedicated viewer branch `if ((state & 4) != 0)` at :272181 for sight/viewer objects (ObjectInfoState.IsViewer = 0x4). The existing acdream cap correctly had a comment "Sight objects bypass this" but the bypass was never wired — no IsViewer caller existed until the A8.F camera spring-arm. With radius 0.3 m the cap fires at ~9 m. The spring-arm sweeps up to 40 m (≈134 steps), so zoomed-out cameras snapped to the player's head instead of sweeping through geometry. The fix adds `&& !ObjectInfo.IsViewer` to the guard; non-viewers keep the 30-step safety net (player spheres ~0.48 m radius never exceed 14 m/tick). Conformance test: radius=0.3, dist=12 (40 steps > 30 cap) over flat terrain. Normal mover bails (Assert.False). Viewer proceeds to target (Assert.True + CurPos.X > from.X). RED → GREEN. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| AcDream.App.Tests | ||
| AcDream.Core.Net.Tests | ||
| AcDream.Core.Tests | ||
| AcDream.Core.Tests.Fixtures.HelloPlugin | ||
| AcDream.UI.Abstractions.Tests | ||