forked from genewildish/Mainline
Bug: Camera update() method never called, scroll position never advances #39
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
The camera's
update(dt)method is never called in the pipeline execution loop, causing the scroll camera position to remain static at 0.Root Cause
engine/app/pipeline_runner.pysleeps for 1/60 second but never calculates delta timeupdate()method for advancing position, but it's never invokedcamera.apply()to slice the buffer, never advances camera positionExpected Behavior
With
--pipeline-camera scroll, the viewport should smoothly scroll upward at a configured speed, showing different parts of the content over time.Current Behavior
Viewport remains static at position 0, no scrolling motion occurs.
Code Locations
engine/camera.py: Camera class hasupdate(dt)method (line 122) and_update_scroll()(line 171)engine/app/pipeline_runner.py: Main loop (line 643-691) lacks dt tracking and camera.update() callengine/pipeline/adapters/camera.py: CameraStage.process() callscamera.apply()but nevercamera.update()Proposed Fix
Following Option 1 (CameraStage self-contained):
camera.update(dt)in CameraStage.process()Related Issues
Acceptance Criteria
Summary
Created two linked bug tickets that together cause scroll camera motion to fail:
#39 - Camera update never called:
camera.update(dt)never called in main loop#40 - Camera state not propagated:
CameraStagedoesn't setcamera_yin contextViewportFilterStagecan't filter based on camera positionRoot Cause Analysis
The
CameraStageadapter only applies camera slicing to the buffer:But the Camera class also needs:
update(dt)called each frame to advance positioncamera.ypropagated to context for dependent stagesFix Strategy
Following your choice of Option 1 (CameraStage self-contained):
This keeps camera logic self-contained and requires minimal changes to main loop.