2026-05-13 07:24:36 +02:00

9.3 KiB
Raw Blame History

Epics and Stories — HS_DollyCam

Epic Map

Epic 1: Core Camera Engine     (HS_CamEngineCore.lsl)
Epic 2: Tour Runtime           (HS_CamEngineTour.lsl)
Epic 3: Playlist Engine        (HS_CamPlaylist.lsl)
Epic 4: Chat Commands          (HS_CamController.lsl)
Epic 5: Menu UI                (HS_CamMenu.lsl)
Epic 6: Visual Markers         (HS_CamMarkers.lsl)
Epic 7: FOV Control            (HS_CamFov.lsl)
Epic 8: Tour Commands Helper   (HS_CamTourCommands.lsl)
Epic 9: Configuration          (HS_CamEngine.properties)
Epic 10: Documentation         (AGENTS.md, manuals)

Epic 1: Core Camera Engine (HS_CamEngineCore.lsl)

Low-level camera interface. Manages permissions, llSetCameraParams, Follow/Lock math.

Story ID Story Status
1.1 As a user, I can request camera control via /88 cam on and release it via /88 cam off Done
1.2 As a user, I can move the camera smoothly to a target position with configurable duration Done
1.3 As a user, I can lock the camera to a target (position or object UUID) Done
1.4 As a user, I can follow a target object in World/Local/Yaw coordinate frame Done
1.5 As a developer, the engine dumps configuration via CE_EVT_CFG_DUMP for consumption by Playlist/TourEngine Done
1.6 As the system, CE_INT_SET_CAM hot path uses direct separator lookup (no llParseString2List) Done
1.7 As the system, Follow/Lock mutual exclusion is enforced (enabling one disables the other) Done

Epic 2: Tour Runtime (HS_CamEngineTour.lsl)

High-frequency multi-waypoint tour playback. Catmull-Rom splines, trapezoidal motion, ~30Hz throttling.

Story ID Story Status
2.1 As a user, I can run a continuous tour across multiple presets with spline interpolation Done
2.2 As a user, I can specify linear interpolation mode for tours Done
2.3 As the system, tour frames are throttled to ~30Hz via tour_cam_min_interval Done
2.4 As the system, segment caching avoids repeated llList2Vector lookups during timer playback Done
2.5 As a user, tour waypoints can have specific hold times and weights Done
2.6 As a user, FOV ramps between waypoints are supported in tours Done
2.7 As the system, startfirst mode flag allows tours to begin from first preset without camera state roundtrip Done
2.8 As the system, active tour lists stay in script memory (not Linkset Data) for performance Done

Epic 3: Playlist Engine (HS_CamPlaylist.lsl)

Notecard-driven playlist playback. Reads inventory notecards, executes commands sequentially.

Story ID Story Status
3.1 As a user, I can play a playlist from an inventory notecard: /88 play <notecard> [gap_ms] Done
3.2 As a user, my notecard supports moveto, goto, load, wait, tour...endtour, dollyzoom, fov, lock, follow commands Done
3.3 As a user, tour blocks in notecards build a single continuous payload sent to TourEngine Done
3.4 As a user, compact notecard tours (tour <ms> [mode] <idx...>) avoid slow multi-line reads Done
3.5 As the system, playlist chains moves on MOVE_DONE unless a wait line appears after moveto (early cut) Done
3.6 As the system, loadPreset() uses targeted field parsing instead of full string splitting Done
3.7 As the system, notecard reading uses llGetNotecardLineSync with NAK fallback Done
3.8 As a user, I can stop any active playlist with /88 stop Done

Epic 4: Chat Commands (HS_CamController.lsl)

Central command router. Preset management, state persistence, command dispatch.

Story ID Story Status
4.1 As a user, I can save the current camera as a numbered preset: /88 save <idx> Done
4.2 As a user, I can load a preset instantly: /88 load <idx> Done
4.3 As a user, I can smoothly move to a preset: /88 moveto <idx> [ms] Done
4.4 As a user, I can delete a preset: /88 del <idx> Done
4.5 As a user, I can list all saved presets: /88 list [from] [count] Done
4.6 As a user, I can get help with all available commands: /88 help Done
4.7 As a user, presets are stored in Linkset Data with keys P1, P2, … Done
4.8 As a user, Follow/Lock state persists across script resets Done
4.9 As a user, marker visibility state persists across script resets Done
4.10 As the system, all commands are restricted to the object owner Done
4.11 As a demo user, saving is limited to DEMO_MAX_SLOTS when DEMO_MODE=TRUE Done
4.12 As a user, the HUD auto-hides during animated moves to prevent flicker Done

Epic 5: Menu UI (HS_CamMenu.lsl)

Dialog menus for common workflows. Secondary to notecard playlist.

Story ID Story Status
5.1 As a user, I can touch the HUD to open a menu with Save/MoveTo/Load/Play/Tour/Follow/Lock buttons Done
5.2 As a user, the menu shows page state (pagination for many presets/targets) Done
5.3 As a user, the menu can list nearby avatars/objects as follow/lock targets Done
5.4 As a user, menu-built tours are forwarded to TourCommands via PH_CMD_TOURRUN Done
5.5 As a user, menu Follow/Lock actions are mutually exclusive Done

Epic 6: Visual Markers (HS_CamMarkers.lsl)

Marker pyramids rezzed at preset positions for visual navigation.

Story ID Story Status
6.1 As a user, I can rez N marker pyramids at preset positions: /88 show cams [N] Done
6.2 As a user, I can remove all markers: /88 hide cams Done
6.3 As a user, clicking a marker pyramid loads and moves to the corresponding preset Done
6.4 As a user, marker count is limited to 130 Done
6.5 As a user, marker state (shown/hidden, count) persists across script resets Done
6.6 As the system, marker communication uses llRegionSayTo when target key is known Done

Epic 7: FOV Control (HS_CamFov.lsl)

Field of View adjustment via RLVa.

Story ID Story Status
7.1 As a user, I can set the viewer FOV in radians: /88 fov <rad> Done
7.2 As a user, I can set the viewer FOV in degrees: /88 fovdeg <deg> Done
7.3 As a user, FOV values are clamped to 10°179° range Done
7.4 As a user, FOV commands are no-ops if RLVa is disabled (graceful degradation) Done
7.5 As the system, FOV state syncs across scripts when presets are loaded/saved Done

Epic 8: Tour Commands Helper (HS_CamTourCommands.lsl)

Secondary tour command builder. Absorbs memory pressure from chat/menu one-shot tours.

Story ID Story Status
8.1 As a user, I can run a one-liner tour: /88 tour <ms> [mode] <idx1> <idx2> ... Done
8.2 As a user, I can run a dolly zoom: /88 dollyzoom <ms> [mode] <idxA> <idxB> Done
8.3 As a user, menu-built tours are handled without adding memory pressure to Playlist Done
8.4 As the system, tour parsing uses targeted preset helpers (no full llParseString2List) Done

Epic 9: Configuration (HS_CamEngine.properties)

Engine configuration parameters.

Story ID Story Status
9.1 As a developer, I can tune move_step, follow_step, default_move_ms, default_focus_dist Done
9.2 As a developer, I can tune move/follow lag values (move_pos_lag, move_focus_lag, etc.) Done
9.3 As a developer, I can tune tour parameters (tour_cam_min_interval, tour_pos_epsilon, tour_max_points) Done
9.4 As a developer, I can tune position/focus thresholds (pos_threshold, focus_threshold) Done
9.5 As a developer, follow_predict=0.10 controls follow prediction offset Done

Epic 10: Documentation

Project documentation for AI agents and developers.

Story ID Story Status
10.1 As a developer, I can read AGENTS.md for detailed component docs and communication constants Done
10.2 As a developer, I can read project-context.md for AI agent rules Done
10.3 As a developer, I can read docs/system_architecture.md for high-level architecture Done
10.4 As a user, I can read HS_DollyCam_Manual for setup and usage instructions Done
10.5 As a user, I can read HS_DollyCam_Manual_FOV_Extension for FOV-specific documentation Done

Future Epic Candidates (Not Yet Implemented)

Epic Description
Epic F1: Preset Export/Import — Export presets to notecard, import from notecard
Epic F2: Tour Preset Save — Save current tour configuration as a reusable preset
Epic F3: Multi-Object HUD — Split Controller into smaller prims for reduced memory pressure
Epic F4: Tour Preview — Play tour at reduced speed for preview before full-speed playback
Epic F5: Marker Customization — Customize marker color/size/transparency
Epic F6: Tour Editor Notecard — Generate/edit playlist notecards from menu
Epic F7: Camera State Dump — Export current camera position/focus as a notecard command
Epic F8: Tour Loop Mode — Loop tours continuously with configurable repeat count