12 KiB
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.