Files
modular-radar/todo
2026-06-17 09:21:12 -07:00

74 lines
4.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
● Let me survey the project structure and key files before sharing concerns.
Searched for 1 pattern, read 7 files, listed 1 directory (ctrl+o to expand)
● Good. I have a thorough picture now. Here are the concerns, ordered by severity:
---
Compile Blocker
global_data.cpp will not compile. It uses TESTING_COMPONENT (line 51) which is defined in settings.h,
but the file only includes data_structure_and_constants.h. Neither that header nor global_data.cpp
includes settings.h. This is a straightforward fix — add #include "include/settings.h" to
global_data.cpp.
---
Design Concerns
1. time_t in ssbo_target_information cannot go to GLSL without an extension.
time_t on Linux 64-bit is int64_t (8 bytes). Standard GLSL std430 has no 64-bit integer type — it would
require the GL_ARB_gpu_shader_int64 extension. The Radeon 780M does support it, but it's non-standard
and requires explicit enablement in the shader source. The simpler fix: since the Traffic Cop already
discards targets older than 1 hour on the CPU, the timestamp serves no GPU-side purpose. Remove time_t
timestamp from ssbo_target_information — it belongs only in target_data_to_thread_1_structure.
2. Dual state for "which radar is active" risks going out of sync.
Both current_radar (an int) and radar_management[i].selected (a per-entry flag) track the active radar.
Any code that changes one must change the other, and it's easy to miss one. I'd recommend a setter
function (e.g., set_active_radar(int)) that updates both atomically. Otherwise you'll eventually have
current_radar == RADAR_MARINE_TRAFFIC while radar_management[3].selected == 0.
3. uniform_max_range is a single float, but range selection is discrete steps.
The settings define 45 discrete range values per scope (MARINE_A_SCOPE_RANGE_STEP_1 through _4, etc.),
but there's no index variable to track which step is currently selected. The keyboard handler for o/p
keys will need a per-scope step index that it increments/decrements, then looks up the appropriate step
value to write into uniform_max_range. That index variable doesn't exist anywhere yet.
4. Thread safety gap on uniform globals.
The uniform_* globals are written by Thread 6 (future physical controls) protected by
mutex_control_data_to_shaders, but Thread 1 reads them during the render loop without acquiring that
mutex. When Thread 6 is eventually built, this will be a data race. Worth designing the read-side
locking now so you don't have to retrofit it across all scopes later.
---
Missing Infrastructure
5. No CMakeLists.txt. Nothing will compile without it. It needs to link against: OpenGL, GLFW3,
FreeType, GDAL, and link in glad/src/glad.c. This should be built before any component .cpp file.
6. No main.cpp / Thread 1 entry point. Expected at this stage since components are being built
piecemeal, but the CMakeLists.txt will need a placeholder main.cpp to have an executable.
---
Minor
7. Misleading comment in global_data.cpp (line 48). It says "The testing field in slots 1-4 mirrors slot
0 for convenient access" — but the initialization hardcodes TESTING_NONE in slots 1-4; there's no
mirror. Either remove that sentence or actually initialize them to radar_management[0].testing (which
can't be done in a static initializer anyway). Simplest fix: just delete that sentence from the comment.
8. police_location in 01_classes.md is described as float police_location. A position in 2D local
Cartesian space needs two components (x, y). When you get to the police boat shader uniform, that will
need to be a vec2 (two floats), not a single float.
9. simulation_data/simulation_journey is a placeholder. It has no values for target_x/target_y and a
non-parseable timestamp. This is fine for now, but the format needs to be defined when the simulator
component (Thread 3) is built.
---
Summary: The one item to fix immediately before writing code is the settings.h missing include in
global_data.cpp. The SSBO time_t issue should be resolved before the first shader is written. The rest
can be addressed as the relevant components are built. Want me to fix the global_data.cpp include now?
✻ Cooked for 1m 46s