From 59bac0b03639c5053719a072a38781dfdb5f4e77 Mon Sep 17 00:00:00 2001 From: cinnaboot Date: Tue, 27 Jan 2026 13:47:58 -0500 Subject: [PATCH] Remove TrackingMode and RenderFrameMode enums Remove all local frame rendering infrastructure, keeping only the Phase 0 helper functions for update_camera(). Removed: - enum TrackingMode (TRACKING_FREE, TRACKING_BODY, TRACKING_CRAFT) - enum RenderFrameMode (RENDER_FRAME_GLOBAL, RENDER_FRAME_LOCAL) - camera_mode, frame_mode, local_frame_parent_index fields from RenderState - detect_camera_mode() function - detect_render_frame_mode() function - update_camera_frame_mode() function - get_local_frame_scale() function - sim_to_render_local() function - SOI_SCALE_TARGET constant Updated: - update_camera_target() - use direct index checks instead of camera_mode enum - update_camera() - use direct index checks, removed enum references - main.cpp - removed enum initializations - ui_renderer.cpp - removed camera_mode assignments Kept: - has_target_changed() - tracks when target changes - update_camera_target() - handles target position updates - rotate_camera_orbitally() - handles camera rotation - zoom_camera() - handles camera zoom - update_last_target() - tracks last target for change detection --- src/main.cpp | 3 -- src/renderer.cpp | 94 ++------------------------------------------- src/renderer.h | 16 -------- src/ui_renderer.cpp | 2 - 4 files changed, 4 insertions(+), 111 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index e7300d7..bc1e4c2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -54,10 +54,7 @@ void run_gui_simulation(SimulationState* sim) { render_state.selected_body_index = root_body_index >= 0 ? root_body_index : -1; render_state.selected_craft_index = -1; render_state.camera_target_enabled = root_body_index >= 0; - render_state.camera_mode = root_body_index >= 0 ? TRACKING_BODY : TRACKING_FREE; - render_state.frame_mode = RENDER_FRAME_GLOBAL; render_state.last_target_index = root_body_index >= 0 ? root_body_index : -1; - render_state.local_frame_parent_index = -1; render_state.camera_offset = (Vector3){ 0, 50, 100 }; // Initialize UI state diff --git a/src/renderer.cpp b/src/renderer.cpp index f85b1cc..f077ddb 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -3,9 +3,6 @@ #include #include -// Scale target for local frame rendering -static const double SOI_SCALE_TARGET = 100.0; - // Forward declarations static Vector3 sim_to_render(Vec3 pos, double scale); @@ -99,17 +96,6 @@ void setup_camera(RenderState* render_state) { } } -static TrackingMode detect_camera_mode(RenderState* render_state) { - if (render_state->camera_target_enabled) { - if (render_state->selected_craft_index >= 0) { - return TRACKING_CRAFT; - } else if (render_state->selected_body_index >= 0) { - return TRACKING_BODY; - } - } - return TRACKING_FREE; -} - static bool has_target_changed(RenderState* render_state) { int current_target = -1; if (render_state->selected_body_index >= 0) { @@ -121,12 +107,12 @@ static bool has_target_changed(RenderState* render_state) { } static void update_camera_target(RenderState* render_state, SimulationState* sim) { - if (render_state->camera_mode == TRACKING_BODY && render_state->selected_body_index >= 0) { + if (render_state->selected_body_index >= 0) { CelestialBody* body = &sim->bodies[render_state->selected_body_index]; Vector3 body_pos = sim_to_render(body->global_position, render_state->distance_scale); render_state->camera.target = body_pos; render_state->camera.position = Vector3Add(body_pos, render_state->camera_offset); - } else if (render_state->camera_mode == TRACKING_CRAFT && render_state->selected_craft_index >= 0) { + } else if (render_state->selected_craft_index >= 0) { Spacecraft* craft = &sim->spacecraft[render_state->selected_craft_index]; Vector3 craft_pos = sim_to_render(craft->global_position, render_state->distance_scale); render_state->camera.target = craft_pos; @@ -187,73 +173,21 @@ static void update_last_target(RenderState* render_state) { } } -static RenderFrameMode detect_render_frame_mode(RenderState* render_state, SimulationState* sim) { - if (!render_state->camera_target_enabled) { - return RENDER_FRAME_GLOBAL; - } - - if (render_state->camera_mode == TRACKING_BODY) { - CelestialBody* body = NULL; - if (render_state->selected_body_index >= 0) { - body = &sim->bodies[render_state->selected_body_index]; - } - - if (body && body->parent_index >= 0) { - return RENDER_FRAME_LOCAL; - } - } - - if (render_state->camera_mode == TRACKING_CRAFT) { - Spacecraft* craft = NULL; - if (render_state->selected_craft_index >= 0) { - craft = &sim->spacecraft[render_state->selected_craft_index]; - } - - if (craft && craft->parent_index >= 0) { - return RENDER_FRAME_LOCAL; - } - } - - return RENDER_FRAME_GLOBAL; -} - -static void update_camera_frame_mode(RenderState* render_state, SimulationState* sim) { - RenderFrameMode new_frame_mode = detect_render_frame_mode(render_state, sim); - - if (new_frame_mode != render_state->frame_mode) { - render_state->frame_mode = new_frame_mode; - - if (new_frame_mode == RENDER_FRAME_LOCAL) { - if (render_state->camera_mode == TRACKING_BODY && render_state->selected_body_index >= 0) { - CelestialBody* body = &sim->bodies[render_state->selected_body_index]; - render_state->local_frame_parent_index = body->parent_index; - } else if (render_state->camera_mode == TRACKING_CRAFT && render_state->selected_craft_index >= 0) { - Spacecraft* craft = &sim->spacecraft[render_state->selected_craft_index]; - render_state->local_frame_parent_index = craft->parent_index; - } - } else { - render_state->local_frame_parent_index = -1; - } - } -} - // Update camera with keyboard/mouse controls void update_camera(RenderState* render_state, SimulationState* sim) { float angle_speed = 0.02f; - render_state->camera_mode = detect_camera_mode(render_state); - bool target_changed = has_target_changed(render_state); if (render_state->camera_target_enabled) { if (target_changed) { update_camera_target(render_state, sim); - } else if (render_state->camera_mode == TRACKING_BODY && render_state->selected_body_index >= 0) { + } else if (render_state->selected_body_index >= 0) { CelestialBody* body = &sim->bodies[render_state->selected_body_index]; Vector3 body_pos = sim_to_render(body->global_position, render_state->distance_scale); render_state->camera.target = body_pos; render_state->camera.position = Vector3Add(body_pos, render_state->camera_offset); - } else if (render_state->camera_mode == TRACKING_CRAFT && render_state->selected_craft_index >= 0) { + } else if (render_state->selected_craft_index >= 0) { Spacecraft* craft = &sim->spacecraft[render_state->selected_craft_index]; Vector3 craft_pos = sim_to_render(craft->global_position, render_state->distance_scale); render_state->camera.target = craft_pos; @@ -276,7 +210,6 @@ void update_camera(RenderState* render_state, SimulationState* sim) { } update_last_target(render_state); - update_camera_frame_mode(render_state, sim); } // Transform from simulation coordinates (XY plane) to render coordinates (XZ plane) @@ -289,25 +222,6 @@ Vector3 sim_to_render(Vec3 pos, double scale) { }; } -static double get_local_frame_scale(CelestialBody* parent) { - if (!parent) return 1e-9; - - double soi_radius = parent->soi_radius; - if (soi_radius > 0) { - return SOI_SCALE_TARGET / soi_radius; - } - - return 1e-9; -} - -static Vector3 sim_to_render_local(Vec3 local_pos, double scale) { - return (Vector3){ - (float)(local_pos.x * scale), - (float)(local_pos.z * scale), - (float)(-local_pos.y * scale) - }; -} - // Scale a radius for rendering (with minimum visible size) float scale_radius(double radius, double scale) { float scaled = (float)(scale * log10(radius)); diff --git a/src/renderer.h b/src/renderer.h index 0cf6a95..8c9fefc 100644 --- a/src/renderer.h +++ b/src/renderer.h @@ -6,19 +6,6 @@ #include "maneuver.h" #include "raylib.h" -// Camera tracking modes -enum TrackingMode { - TRACKING_FREE, - TRACKING_BODY, - TRACKING_CRAFT -}; - -// Rendering coordinate frame modes -enum RenderFrameMode { - RENDER_FRAME_GLOBAL, - RENDER_FRAME_LOCAL -}; - // Rendering state struct RenderState { Camera3D camera; @@ -28,10 +15,7 @@ struct RenderState { int selected_craft_index; // -1 = no selection bool camera_target_enabled; // Whether camera follows selected body/craft Vector3 camera_offset; // Offset from target when following body - TrackingMode camera_mode; - RenderFrameMode frame_mode; int last_target_index; // Tracks body or craft index (negative = spacecraft) - int local_frame_parent_index; // Body index for local frame Texture2D spacecraft_texture; // Shared texture for all spacecraft Texture2D maneuver_textures[6]; // One per burn direction diff --git a/src/ui_renderer.cpp b/src/ui_renderer.cpp index ea1d276..96ba3ac 100644 --- a/src/ui_renderer.cpp +++ b/src/ui_renderer.cpp @@ -130,7 +130,6 @@ void render_body_list_ui(SimulationState* sim, RenderState* render_state, UIStat render_state->selected_body_index = ui_state->body_list_active; render_state->selected_craft_index = -1; render_state->camera_target_enabled = true; - render_state->camera_mode = TRACKING_BODY; printf("Camera follow enabled for body: %s\n", sim->bodies[render_state->selected_body_index].name); } else { // A spacecraft was selected @@ -139,7 +138,6 @@ void render_body_list_ui(SimulationState* sim, RenderState* render_state, UIStat render_state->selected_body_index = -1; render_state->selected_craft_index = craft_index; render_state->camera_target_enabled = true; - render_state->camera_mode = TRACKING_CRAFT; printf("Camera follow enabled for spacecraft: %s\n", sim->spacecraft[craft_index].name); } }