From e37cc150a8eea290511ef90e870cef2a4595a433 Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 29 May 2026 19:38:58 +0200 Subject: [PATCH] =?UTF-8?q?feat(render):=20Phase=20A8.F=20=E2=80=94=20wire?= =?UTF-8?q?=20camera-collision=20probe=20+=20cell/self=20id=20into=20GameW?= =?UTF-8?q?indow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both RetailChaseCamera construction sites now supply CollisionProbe with a fresh PhysicsCameraCollisionProbe(_physicsEngine). The per-frame Update call gains cellId: _playerController.CellId and selfEntityId: _playerController.LocalEntityId so the probe has the correct spatial context for sphere-sweep queries. Co-Authored-By: Claude Opus 4.7 --- src/AcDream.App/Rendering/GameWindow.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/AcDream.App/Rendering/GameWindow.cs b/src/AcDream.App/Rendering/GameWindow.cs index d395772..7017a65 100644 --- a/src/AcDream.App/Rendering/GameWindow.cs +++ b/src/AcDream.App/Rendering/GameWindow.cs @@ -6863,7 +6863,9 @@ public sealed class GameWindow : IDisposable playerVelocity: _playerController.BodyVelocity, isOnGround: result.IsOnGround, contactPlaneNormal: _playerController.ContactPlane.Normal, - dt: (float)dt); + dt: (float)dt, + cellId: _playerController.CellId, + selfEntityId: _playerController.LocalEntityId); // Send outbound movement messages to the live server. if (_liveSession is not null) @@ -10693,6 +10695,7 @@ public sealed class GameWindow : IDisposable _retailChaseCamera = new AcDream.App.Rendering.RetailChaseCamera { Aspect = _chaseCamera.Aspect, + CollisionProbe = new AcDream.App.Rendering.PhysicsCameraCollisionProbe(_physicsEngine), }; } _cameraController.EnterChaseMode(_chaseCamera, _retailChaseCamera); @@ -10826,6 +10829,7 @@ public sealed class GameWindow : IDisposable _retailChaseCamera = new AcDream.App.Rendering.RetailChaseCamera { Aspect = _window!.Size.X / (float)_window.Size.Y, + CollisionProbe = new AcDream.App.Rendering.PhysicsCameraCollisionProbe(_physicsEngine), }; // K.1b: _playerMouseDeltaX is no longer consumed by // MovementInput, but we still reset it here so any stale