1 changed files with 110 additions and 0 deletions
@ -0,0 +1,110 @@
|
||||
# Rendering Cleanup Plan - Texture Management and Code Simplification |
||||
|
||||
## Objective |
||||
Clean up rendering code by removing unused spacecraft texture system, consolidating texture loading to initialization, and simplifying other rendering functions. |
||||
|
||||
## Background |
||||
The renderer has several inefficiencies: |
||||
- `ensure_textures_loaded()` called every frame instead of once during initialization |
||||
- Spacecraft texture system now redundant with `render_child_indicators()` providing visibility |
||||
- Unused `render_body()` function with FIXME comment |
||||
- Hardcoded constants scattered throughout rendering code |
||||
- Documentation inconsistency between RenderState and UIState |
||||
|
||||
## Implementation |
||||
|
||||
### Step 1: Save Plan (Current) |
||||
- Create this plan document in docs/planning/ |
||||
- **PAUSE** for user review |
||||
|
||||
### Step 2: Move Texture Loading to Initialization |
||||
- Modify `init_renderer()` or `setup_camera()` to call `ensure_textures_loaded()` once |
||||
- Remove `ensure_textures_loaded()` calls from: |
||||
- `render_spacecraft_screen_space()` (renderer.cpp:385) |
||||
- `render_maneuver_marker_screen_space()` (renderer.cpp:420) |
||||
- Update docs/technical_reference.md if it references texture loading behavior |
||||
- **PAUSE** for user review |
||||
|
||||
### Step 3: Remove Spacecraft Texture System |
||||
Remove all spacecraft texture-related code: |
||||
- From RenderState struct (renderer.h:19): `Texture2D spacecraft_texture;` |
||||
- From renderer.cpp: |
||||
- `generate_spacecraft_texture()` function (lines 112-124) |
||||
- `calculate_spacecraft_angle()` function (lines 156-164) |
||||
- `render_spacecraft_screen_space()` function (lines 373-402) |
||||
- Texture initialization in `setup_camera()` (line 178) |
||||
- Texture unloading in `close_renderer()` (line 103) |
||||
- Remove spacecraft rendering from main loop in `render_simulation()` (lines 694-697) |
||||
- Remove from renderer.h: |
||||
- Function declaration for `generate_spacecraft_texture()` (line 29) |
||||
- Function declaration for `calculate_spacecraft_angle()` (line 36) |
||||
- Function declaration for `render_spacecraft_screen_space()` (line 45) |
||||
- Update docs/rendering.md to remove spacecraft texture references |
||||
- **PAUSE** for user review |
||||
|
||||
### Step 4: Remove Unused `render_body()` Function |
||||
- Remove `render_body()` function from renderer.cpp (lines 359-371) |
||||
- Remove function declaration from renderer.h (line 44) |
||||
- Remove FIXME comment on line 357 |
||||
- Update docs/rendering.md line 315 (references to render_body) |
||||
- Update docs/technical_reference.md line 531 (references to render_body) |
||||
- **PAUSE** for user review |
||||
|
||||
### Step 5: Simplify Maneuver Texture Selection |
||||
- Replace switch statement (renderer.cpp:426-449) with direct array indexing |
||||
- Since BurnDirection enum values are sequential (0-5), use `maneuver->direction` directly as texture_index |
||||
- Handle BURN_CUSTOM case separately if needed |
||||
- **PAUSE** for user review |
||||
|
||||
### Step 6: Extract UI Panel Constants |
||||
- Add constants to ui_renderer.cpp: |
||||
- `INFO_PANEL_WIDTH = 300` |
||||
- `INFO_PANEL_HEIGHT = 300` |
||||
- `BODY_LIST_WIDTH = 200` |
||||
- `BODY_LIST_HEIGHT = 400` |
||||
- `BODY_INFO_WIDTH = 250` |
||||
- `BODY_INFO_HEIGHT = 300` |
||||
- `MANEUVER_LIST_WIDTH = 300` |
||||
- `MANEUVER_LIST_HEIGHT = 400` |
||||
- `MANEUVER_LIST_Y_OFFSET = 320` |
||||
- Replace magic numbers in all UI rendering functions |
||||
- **PAUSE** for user review |
||||
|
||||
### Step 7: Extract Child Indicator Constants |
||||
- Add constants to renderer.cpp: |
||||
- `CHILD_INDICATOR_RADIUS = 20.0f` |
||||
- `CHILD_INDICATOR_FONT_SIZE = 10` |
||||
- Replace magic numbers in `draw_child_indicator()` function |
||||
- **PAUSE** for user review |
||||
|
||||
### Step 8: Fix Documentation Inconsistency |
||||
- Update docs/rendering.md line 16 to reflect that `selected_craft_index` is in UIState, not RenderState |
||||
- Update any other documentation that references this field location |
||||
- **PAUSE** for user review |
||||
|
||||
### Step 9: Final Testing |
||||
- Build project: `make` |
||||
- Run simulation: `make run` |
||||
- Verify spacecraft still visible via child indicators |
||||
- Verify maneuver markers still render correctly |
||||
- Verify UI panels still display correctly |
||||
- Check for any texture-related warnings or errors |
||||
- **PAUSE** for user review |
||||
|
||||
## Testing Plan |
||||
- Build succeeds without errors |
||||
- Spacecraft visible in child indicators when parent body selected |
||||
- Maneuver markers display with correct colors and sizes |
||||
- UI panels render with correct dimensions |
||||
- No memory leaks from texture cleanup |
||||
- Performance improvement (fewer function calls per frame) |
||||
|
||||
## References |
||||
- docs/rendering.md - Rendering system documentation |
||||
- docs/technical_reference.md - Technical reference |
||||
- src/renderer.cpp/h - Main rendering code |
||||
- src/ui_renderer.cpp/h - UI rendering code |
||||
- AGENTS.md - Coding rules (no comments, C-style) |
||||
|
||||
## Date |
||||
Created: 2026-01-30 |
||||
Loading…
Reference in new issue