Repository navigation
viewer: live-scene walkthrough as LiveWalkthroughController - #1269
Merged
Merged
Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit cfadbf6. Configure here.
Walking through an unbaked scene no longer needs the editor. The controller, collider world, ground holes, terrain collider and mechanism targets move to @pascal-app/viewer, driven by useViewer's walkthrough state; the first-person HUD store moves to the viewer entry (viewer/ui re-exports it). The editor's FirstPersonControls becomes a thin adapter adding capture mode and editor exit. scene-bounds moves to core. The packed fixture walks the fixture scene with renderPlugin only: movement, HUD, door sound and an unchanged document. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
externalFov becomes a getter read at walkthrough start and teardown, as the editor did with capture mode, so leaving a walkthrough after closing capture restores the orbit FOV instead of keeping the walkthrough value. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
wass08
force-pushed
the
viewer/walkthrough
branch
from
November 11, 2026 16:06
c1a58f9 to
f2eb986
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

What does this PR do?
Walking through a live (unbaked) scene no longer needs the editor.
LiveWalkthroughControllerjoins@pascal-app/viewer, next to the baked-sceneGlbWalkthroughController.useViewer. The host passespaused,externalFov,pointerInteraction,suspendOnUnlockandonExit. Door, drawer and light interaction still emit coreinteraction:sound, which@pascal-app/viewer/sfxplays.useFirstPersonHudmoves to the viewer's main entry andviewer/uire-exports it, so there is still one store.scene-boundsmoves to core andtyping-targetto the viewer.FirstPersonControlsbecomes a thin adapter that adds capture mode, the capture shutter hold, editor exit and tool-mode behaviour on top of the shared controller. Barrel names are unchanged.renderPluginonly. It presses a movement key and requires the camera to move, the HUD and crosshair to appear, a door sound request, and an unchanged scene document.How to test
bun run check:viewer-live. In dev and preview, with storage available and denied, the result includes "live walkthrough movement, HUD, door sound, unchanged document, no errors".bun run check:render-bundlepasses.apps/editorcheck-typespasses with its pinned plugins.Screenshots / screen recording
N/A — behaviour moved, not changed; covered by the packed fixture.
Checklist
bun devbun checkto verify)mainbranch🤖 Generated with Claude Code
Note
Medium Risk
Large relocation of walkthrough physics, collision, and interaction from the editor to the viewer affects both editor capture mode and new standalone consumers; regressions are mitigated by fixture and controller tests but not fully browser-verified in-editor.
Overview
Live-scene first-person walkthrough moves out of the editor into
@pascal-app/viewerasLiveWalkthroughController, so render-only hosts can walk parametric scenes with the same movement, BVH collision, and door/window/item/elevator interaction as before. The editor’sFirstPersonControlsshrinks to a thin adapter (capture FOV, shutter pause, pointer/suspend behavior, exit) on top of that shared controller.Shared infrastructure:
useFirstPersonHudlives on the main viewer entry (UI re-exports the same store);computeSceneBoundsXZmoves to@pascal-app/core;isTypingTargetcentralizes in the viewer and replaces scattered editor imports. Docs and the viewer README describe mounting the controller withWalkthroughHudand optional host props.Quality gates: New unit tests for
LiveWalkthroughController; the packedviewer-livefixture gains a spawn, walkthrough entry, W movement, HUD/crosshair, E door +interaction:sound/ SFX fetch, unchanged scene document, and Escape exit. Render-bundle checks now require the live walkthrough in isolation without editor/Next.Reviewed by Cursor Bugbot for commit f2eb986. Bugbot is set up for automated code reviews on this repo. Configure here.