59 lines
12 KiB
Markdown
59 lines
12 KiB
Markdown
# Feature Inventory
|
|
|
|
This is a normalized reconciliation of the VistaPro manuals, MakePath guide, screenshots, and current OpenVistaPro implementation.
|
|
|
|
Status counts by normalized feature family:
|
|
- Implemented: 14
|
|
- Partial: 3
|
|
- Planned: 0
|
|
- Not planned: 1
|
|
|
|
Notes:
|
|
- “Implemented” means the current codebase has a working, tested slice for that family.
|
|
- “Partial” means the codebase covers part of the family but not the full manual-described workflow.
|
|
- “Planned” means the family is still absent or only mentioned as roadmap context.
|
|
- “Not planned” means the family is intentionally out of scope for the current clean-room pipeline.
|
|
|
|
## Normalized feature families
|
|
|
|
| Feature family | Manual / reference evidence | OpenVistaPro status | Implementation evidence | Gap / next step |
|
|
|---|---|---|---|---|
|
|
| Terrain sources and compatibility boundary | VistaPro 2 manual: Load Landscape / Save Landscape; VistaPro 3 manual: Load, Save, Exp/Imp menus and DEM/PCX/Targa24 references. | Partial | `src/import.rs`, `src/cli.rs` (`supported_importers()`), `README.md` importer status. | OpenVistaPro currently supports only project-owned `ovp-text`, script-level PNG heightmaps, and open terrain sources (`hgt`, ESRI ASCII Grid, GeoTIFF) that feed the same internal `HeightGrid` model. Anything that would claim direct legacy VistaPro file compatibility stays out of scope and would need a separately reviewed clean-room plan. |
|
|
| Project-owned plain-text heightfields (`ovp-text`) | Clean-room project fixture format, not part of the legacy manuals; used to model the import boundary safely. | Implemented | `src/import.rs` (`import_ovp_text`), tests in `src/import.rs`, fixture in `tests/fixtures/open/`. | No gap for the MVP slice; this is the project-owned test/import path. |
|
|
| SRTM / HGT terrain import | VistaPro manuals describe loading DEM-like landscape data; the open equivalent is the SRTM/HGT family. | Implemented | `src/import.rs` (`import_hgt` behind `hgt`), `README.md`, tests in `src/import.rs`. | Still only the open SRTM slice; broader compatibility formats remain separate. |
|
|
| GeoTIFF terrain import | Modern open terrain source, not a legacy VistaPro format. | Implemented | `src/import/geotiff.rs` behind `import-geotiff`, tests in that module. | Deliberately narrow subset: tiny synthetic single-band raster support only. |
|
|
| Fractal / synthetic terrain generation | VistaPro overview calls out fractal landscapes and generated terrain. | Implemented | `src/terrain_gen.rs`, `src/app_state.rs`, `src/app.rs`, `src/cli.rs`, `tests/terrain_gen.rs`, `tests/script_exec.rs`, `tests/cli.rs`, `README.md`. | Seeded `TerrainGenerationSpec` plus `TerrainGenerationSettings` and the shipped `fractal` preset now provide the first clean-room procedural terrain slice; later noise variants can build on the same boundary without changing `HeightGrid`. |
|
|
|
|
| Camera and target placement | VistaPro 2 / 3 manuals: “Setting Camera and Target”; screenshot workflow uses camera/target gadgets. | Implemented | `src/scene.rs` (`Camera`), `src/app.rs` (camera position/target controls), `src/app_state.rs`. | Only the core position/target slice exists; there is no map-click placement UI yet. |
|
|
| Lens / range / orientation controls | VistaPro manuals describe lens/range, bank, heading, and pitch controls. | Implemented | `src/scene.rs` (`Camera.orientation`, `fov_degrees`, `near_range`, `far_range`), `src/render.rs` perspective renderer, `src/app.rs` explicit heading/pitch/bank and lens/range controls. | The modern shell keeps the camera model explicit while staying intentionally simpler than the legacy lens matrix and stereo workflows. |
|
|
| Water / sea level, tree line, snow line, haze | Manuals repeatedly mention tree line, snow line, water level, haze, and atmospheric tuning. | Implemented | `src/scene.rs`, `src/app.rs` sliders, `src/colormap.rs`, `src/render.rs`. | The core elevation-band controls are present and still feed the renderer. |
|
|
| Rivers and lakes | VistaPro manuals explicitly mention rivers and lakes as adjustable landscape features. | Implemented | `src/scene.rs` (`Hydrology` lake/river overlays), `src/app.rs` hydrology controls + reset button, `src/app_state.rs`, `src/render.rs`, `src/scene_file.rs`, tests in `src/scene.rs`, `src/render.rs`, and `src/app_state.rs`. | The first clean-room slice now exposes editable lake/river overlays; routed-water simulation and drainage maps can grow later. |
|
|
| Light direction and custom lighting | Manuals discuss sunlight placement and lighting experiments. | Implemented | `src/scene.rs` (`Light` azimuth/elevation helpers), `src/render.rs` (directional shading), `src/app.rs` (azimuth/elevation/intensity sliders), tests in `src/scene.rs`, `src/render.rs`, and `src/app_state.rs`. | The lighting slice now exposes explicit azimuth/elevation controls in the shell and uses the light direction during deterministic CPU rendering; future work can layer in more VistaPro-like shading refinements if needed. |
|
|
| Vertical exaggeration | VistaPro manuals describe vertical scaling / scene exaggeration controls. | Implemented | `src/scene.rs` (`Scene.vertical_exaggeration`), `src/app.rs`, `src/app_state.rs`, `src/render.rs`, tests in `src/render.rs`, and scene-file round-trips in `src/scene_file.rs`. | The basic scene-level exaggeration slice is now wired through the shell, renderer, and scene files; future work can explore per-tool or legacy-style exaggeration workflows. |
|
|
| Color maps / palettes / texture image loading | VistaPro 3 manual includes loading PCX images, adding texture, and saving/loading color maps. | Implemented | `src/scene.rs` (`Palette` thresholds/bands + colors), `src/app.rs` color-map editor, `src/colormap.rs`, `src/render.rs`, `src/script_exec.rs`, `src/scene_file.rs`. | Palette import/export and PCX/texture loading remain future clean-room work. |
|
|
| Preview / final render workflow | VistaPro manuals describe rough preview rendering and full render output. | Implemented | `src/render.rs` (`render_top_down`, `render_perspective`), `src/cli.rs` (`render`), tests in `src/render.rs`. | The preview/final split is still simplified, but the core render outputs are working. |
|
|
| Render quality presets / smoothing / detail tradeoffs | VistaPro manuals describe quality menus and poly/detail tradeoffs. | Implemented | `src/render.rs` (`RenderQualityPreset`, quality-aware top-down/perspective render helpers), `src/cli.rs` (`--quality`, output-path resolution), `src/app_state.rs`, `src/app.rs`, tests in `src/render.rs`, `src/app_state.rs`, and `src/cli.rs`. | The project-owned quality profile slice now toggles preview/balanced/final tradeoffs for both the CLI spike and the egui shell. |
|
|
| Scene file save/load (`.ovp.toml`) | Not a VistaPro legacy format; this is the clean-room OpenVistaPro scene format. | Implemented | `src/scene_file.rs`, `src/cli.rs` (`scene export`), tests in `src/scene_file.rs`. | No gap for the project-owned scene format slice. |
|
|
| Script language parser | MakePath guide and VistaPro manual describe scripts and “Run Script” workflows. | Implemented | `src/script.rs`, `src/script_exec.rs`, `src/cli.rs` (`script run`), `src/app_state.rs` script preview, `README.md` script section, tests in `src/script.rs` and `src/script_exec.rs`. | The project-owned grammar is now parsed and executed; any future work should focus on richer syntax or animation export, not basic parser support. |
|
|
| Script execution and animation frames | MakePath guide says scripts should render full animations and VistaPro can run scripts from the Script menu. | Implemented | `src/script_exec.rs` (`run_script` / `run_script_source`), `src/cli.rs` (`script run`), `src/app.rs` script controls, `src/app_state.rs`, tests in `src/script_exec.rs`. | The executor now runs preset/import/render slices; animation-frame sequencing is still a future extension. |
|
|
| MakePath-style path generation and motion models | MakePath guide describes spline nodes, previewing a path, and vehicle models (jet, glider, dune buggy, motorcycle, helicopter, cruise missile, custom). | Implemented | `src/path.rs`, `src/app_state.rs` (`make_path`), `src/app.rs` path controls, tests in `src/path.rs` and `src/app_state.rs`. | Core camera-path generation is now present; editable nodes, vehicle-specific motion models, and script export remain future expansion points. |
|
|
| UI shell, menus, dialogs, and numeric gadgets | VistaPro screenshots/manuals show dense menus, dialogs, map tools, and numeric gadgets. | Partial | `src/app.rs`, `src/app_state.rs`, `src/ui_shell.rs`, `src/bin/openvistapro_app.rs`, plus the `app` feature shell tests. | OpenVistaPro now has a durable docked egui shell with stable navigation, working import/script/path/project actions, top-level menus/help dialog surfacing, lighting numeric controls, sidebar, viewport, inspector, and status chrome; the remaining slice is the more specialized legacy-style menu/dialog workflow and the last set of numeric gadget affordances the manuals call out. |
|
|
| Legacy image / landscape export formats | VistaPro manuals mention saving rendered images and landscapes in formats like IFF/IFF24/RGB and DEM/binary landscape files. | Not planned | Current output is PNG plus project-owned `.ovp.toml` scenes. | Direct compatibility with legacy VistaPro export formats stays out of scope for the clean-room project; if it is ever reconsidered, it should come back through a separately reviewed investigation. |
|
|
|
|
## Current reconciliation summary
|
|
|
|
OpenVistaPro already covers the core clean-room pipeline: terrain grids, project-owned and open terrain importers, scene state, preview/final rendering, quality-profile tradeoffs, project-owned scene files, script execution, MakePath-style path generation, editable color-map thresholds/bands, vertical exaggeration, and directional lighting. The remaining VistaPro-specific gaps now cluster around two Partial families: terrain-source compatibility boundary and the dense UI/menu/dialog/numeric-gadget workflow. Direct legacy image/landscape export compatibility remains Not planned.
|
|
|
|
## Next-wave implementation handoff
|
|
|
|
Use the following slice-by-slice scope when handing work to implementation workers:
|
|
|
|
| Slice | Scope to implement next | Evidence files to verify | Docs to update after the slice |
|
|
|---|---|---|---|
|
|
| Terrain-source compatibility boundary | Keep the supported source list explicit: project-owned `ovp-text`, script-level PNG heightmaps, and open SRTM/HGT, ESRI ASCII Grid, and GeoTIFF imports. Any legacy VistaPro compatibility claim must stay separate. | `src/import.rs`, `src/cli.rs`, `README.md` | `docs/knowledgebase/feature-inventory.md`, `docs/knowledgebase/ui-panel-map.md`, and `docs/legal/asset-policy.md` if the boundary wording changes. |
|
|
| Fractal / synthetic terrain generation | Completed slice: seeded fractal terrain generation is now implemented in the app shell, CLI, and script executor. | `src/terrain_gen.rs`, `src/app_state.rs`, `src/app.rs`, `src/cli.rs`, `tests/terrain_gen.rs`, `tests/script_exec.rs`, `tests/cli.rs`, `README.md` | Future procedural families can extend the shared settings/boundary without changing `HeightGrid`. |
|
|
|
|
| UI shell / menus / dialogs / numeric gadgets | Fill in the most valuable shell chrome and numeric-control workflows while keeping the modern docked shell. | `src/app.rs`, `src/ui_shell.rs`, shell tests, README UI notes | `docs/knowledgebase/feature-inventory.md`, `docs/knowledgebase/ui-panel-map.md`, and the README shell section. |
|
|
|
|
After each slice, update the implementation evidence column in this inventory and keep the UI panel map aligned so future workers do not have to rediscover the current shell coverage.
|