-
Notifications
You must be signed in to change notification settings - Fork 51
Description
This is a list of all completed comments from the original PR that was merged #119
All changes from all 439 comments are now addressed. They are a part of #253. When that PR is merged, this issue is resolved.
Code Quality & Best Practices
- 1, 78: Platform defines (
PLATFORM_ANDROID/PLATFORM_DESKTOP) -CMakeLists.txt:77-86 - 2, 79:
std::clampparameter order fixed -audio_system.cpp:422, 672 - 5, 81: Renamed to
StopMeasurement(matchingStartMeasurement) -debug_system.h:233 - 6, 80: Changed warning to error for stopping unmeasured timer -
debug_system.h:248 - 8, 43: Using
try_emplacefor efficient map insertion -descriptor_manager.cpp:70,memory_pool.cpp:243 - 9: Added assertions for uniformBuffers validation -
descriptor_manager.cpp:102, 204-205 - 46: Removed impossible error check in deallocate() -
memory_pool.cpp:372 - 62: Use
try_emplaceinstead of manual check -model_loader.cpp:1319 - 67: Move
materialMeshinstead of copy -model_loader.cpp:1540 - 68: Reserve space for vectors before insertion -
model_loader.cpp:1537 - 97, 98: Added bounds checking assertions -
mesh_component.h:508, 523-524 - 131: Fixed logic issue - only map buffers when data exists -
imgui_system.cpp:1087 - 170: Consolidated duplicate shader loading -
physics_system.cpp:716 - 179: Renamed RemoveRigidBody to DestroyRigidBody for API consistency -
physics_system.h:259, physics_system.cpp:344 - 217: Added Vulkan feature support checking before requesting -
renderer_core.cpp:934 - 235: Added error messages for fence timeouts -
renderer_rendering.cpp(5 locations) - 237: Fixed inconsistent entityIt checking - eliminated redundant lookups -
renderer_rendering.cpp:2549, 2565, 2660 - 203: Async texture loading already implemented - uses
std::future<bool>-renderer.h:454, 469 - 246: Removed redundant eErrorOutOfDateKHR checks (handled by exceptions) -
renderer_rendering.cpp:1673, 2997 - 298: Removed 8 redundant renderer null checks after validation -
scene_loading.cpp:220, 229, 317, 426, 542, 578, 592, 656 - 48, 49: Replaced manual loop with
std::accumulateusing structured bindings -memory_pool.cpp:568-576 - 193: Use
[[maybe_unused]]instead of(void)casts -platform.cpp:158, renderer_core.cpp:37,39,54,56, audio_system.cpp:1163 - 180: Removed empty destructor (RAII handles cleanup) -
pipeline.h:70, pipeline.cpp:28-32 - 185, 189: Removed unnecessary viewport/scissor initialization for dynamic states -
pipeline.cpp:182-198, 377-393, 551-567(3 pipelines) - 200: Removed unnecessary single-element vector copy in descriptor binding -
renderer_compute.cpp:532-535 - 255: Use
std::tieinstead of temporary variables with move -renderer_resources.cpp:53-62 - 260, 261: Replace manual string checks with
ends_with()for file extensions -renderer_resources.cpp:170, 193, 250, 725(4 locations) - 123: Renamed
MEASURE_ENDtoMEASURE_STOPfor consistency -debug_system.h:290 - 127: Removed single-element arrays, use single values directly -
imgui_system.cpp:519-521 - 167: Removed unnecessary manual clear in destructor (automatic cleanup) -
physics_system.cpp:226 - 191: Consolidated duplicate Android window event handlers -
platform.cpp:36-67 - 211: Use StructureChain for timeline semaphore creation -
renderer_core.cpp:1220-1223 - 222, 223: Removed unnecessary
.pNext = nullptrand explicit.sTypeassignments -renderer_core.cpp:1128-1159(7 locations),renderer_ray_query.cpp:653, 1177(2 locations) - 267: Fixed alpha value for 50% translucency (125 → 128) -
renderer_resources.cpp:527 - 270: Use ArrayProxy instead of vector for single regions -
renderer.h:1907, 1912,renderer_resources.cpp:616, 932, 2490, 3799 - 305: Use StructureChain for device feature chain -
vulkan_device.cpp:142-152 - 96: Removed redundant
isInstancesflag - now computed viaIsInstanced()method -mesh_component.h:482-485(already done) - 214: Added consistent error messages to all initialization steps -
renderer_core.cpp(15+ locations) - 251, 422, 423: Fixed error handling -
eErrorOutOfDateKHRproperly handled as exception -renderer_rendering.cpp:1653(already done) - 431: Added camera null check assertions -
renderer_rendering.cpp:842, 867 - 230, 231: Changed C-style array to std::array for queue family indices -
renderer_rendering.cpp:625-632 - 232: Moved ImageViewCreateInfo out of loop for efficiency -
renderer_rendering.cpp:233-244 - 233: Moved fenceInfo declaration closer to usage -
renderer_rendering.cpp:641-643 - 426: CRITICAL - Fixed semaphore count from swapChainImages.size() to MAX_FRAMES_IN_FLIGHT -
renderer_rendering.cpp:625-638 - 263: Removed dead code -
!isKtx2check at line 420 unreachable after early return -renderer_resources.cpp:417-419 - 264: Removed redundant isKtx2 checks and simplified mipmap generation logic -
renderer_resources.cpp:417-464 - 72: Used std::accumulate for avgNormal calculation instead of manual loop -
model_loader.cpp:1984-1989 - 149: Added reserve() calls for combinedVertices and combinedIndices to avoid reallocations -
model_loader.cpp:1547-1557 - 25: Using std::chrono::milliseconds (TimeDelta) for deltaTime -
engine.h:47(already done) - 28: Height != 0 check already present before division -
engine.cpp:584, 589(already done) - 29: Using std::ranges::find_if for Ball_ entity search -
engine.cpp:620-623(already done) - 175: Replaced VK_NULL_HANDLE comparisons with RAII bool checks -
physics_system.cpp:1146-1148, 1302, 1393-1396(3 locations) - 177: Extracted hardcoded 0.0335f to TENNIS_BALL_RADIUS constexpr -
physics_system.cpp:32, 423, 1192 - 172: Consolidated 5 duplicate buffer creation blocks into helper function CreateMappedBuffer() -
physics_system.cpp:232-264, 860-892 - 150: Split ParseGLTF (1748 lines → 902 lines, 48% reduction) - extracted LoadKTX2Image, ToLower, ProcessMaterials (610 lines), ProcessCameras (69 lines), ProcessAnimations (116 lines) -
model_loader.cpp - 73: Extracted image loader lambda as reusable static function -
model_loader.cpp:195-245 - 3: Camera fallback position (0,0,0) looking forward - reasonable design choice -
camera_component.cpp:86 - 4: Debug system mutex protecting Log() function - correct threading practice -
debug_system.h:114 - 7: RenderDoc integration level - architectural design choice -
debug_system.h - 10: Descriptor sets stored in entityResources class member - correct RAII usage -
descriptor_manager.cpp:163 - 11: Using vk::raii::DescriptorSet for proper lifetime management - correct pattern -
descriptor_manager.h:56 - 12: Separate update_descriptor_sets() function exists - code properly structured -
descriptor_manager.cpp:101 - 13: Assertions added for entity existence and buffer bounds -
descriptor_manager.cpp:102, 152, 204-205 - 16: handleMouseInput() function extracted from lambda -
engine.cpp:364 - 17: handleKeyInput() function extracted from lambda -
engine.cpp:433 - 18: Systems use constructor-based initialization (modelLoader, audioSystem, physicsSystem, imguiSystem) -
engine.cpp:107-120 - 19: ImGui connects to audio after construction - acceptable initialization pattern -
engine.cpp:119-120 - 20: loopCount removed, only frameCount remains - simplified tracking -
engine.h:254, engine.cpp:156 - 23-24, 26, 28-32: Engine performance and style suggestions - reasonable design choices
- 58: Helper functions extracted during ParseGLTF split - multiple functions created
- 59: Texture loading consolidated in LoadKTX2Image() -
model_loader.cpp - 60: ProcessCameras() function extracts camera iteration -
model_loader.cpp - 66, 70, 73, 74: Material and texture processing consolidated in helper functions
- 82, 83: Author responses explaining design decisions (documentation)
- 131: ImGui vertex/index buffer size checking -
drawData->TotalVtxCount > vertexCounts[frameIndex]-imgui_system.cpp:1034 - 223, 225, 226, 228: Removed all remaining
.sTypeassignments in renderer_pipelines.cpp (verified: 0 instances) - 231, 240, 241, 242: All pi constants and static_casts already implemented (verified: 0 M_PI instances)
- 11, 12, 13: descriptor_manager - RAII, update function, assertions ✓
- 17: handleKeyInput() extracted -
engine.cpp:433✓ - 18, 19, 20: Constructor init, loopCount removed ✓
- 21, 24-32: Engine design choices accepted (10 items) ✓
- 42, 45, 50-52: Memory pool design choices (5 items) ✓
- 57-60, 66, 70: Model loader refactoring (6 items) ✓
- 75-76, 83, 86: Author responses (4 items) ✓
- 89-96: Mesh component patterns (8 items) ✓
- 119-121: Author responses ✓
- 132: Author response about debug changes ✓
- 167: Removed empty destructor - physics_system.cpp ✓
- 175: VK_NULL_HANDLE → RAII - physics_system.cpp ✓
- 180: Removed empty destructor - pipeline.cpp ✓
- 185, 186, 189: Viewport/scissor cleanup - pipeline.cpp ✓
- 200: Vector copy removed - renderer_compute.cpp ✓
- 211, 212: StructureChain - renderer_core.cpp ✓
- 218, 220: Default value cleanup ✓
- 222-226, 228: .sType cleanup (6 items) - verified 0 instances ✓
- 231: static_cast - verified done ✓
- 240-242: pi constants - verified done (3 items) ✓
- 51, 109, 110, 115, 116, 174, 192, 272, 309, 392, 410: Author responses/fixes confirmed ✓
- 53, 88, 325: Design choices - current implementation accepted ✓
- 102, 105: Documentation questions - content accepted as-is ✓
- 155: Duplicate lambda - refactoring benefit vs. complexity trade-off accepted ✓
- 210: VULKAN initialization - vk::raii doesn't require it (already correct) ✓
- 251, 422, 423: eErrorOutOfDataKHR exception handling - already correct (throws exception) ✓
- 271, 278: Texture resolution - current implementation correct ✓
- 303: Feature enabling - proper validation added (already in 217) ✓
- 307, 318, 329, 352, 361, 365, 372, 384, 390, 425: Documentation clarifications
Const Correctness
- 14, 15: Return const references in
getEntityResources-descriptor_manager.h:117-130 - 22:
GetEntities()returns const reference -engine.h:96-99 - 33:
GetActiveCamera()is const -engine.h:125 - 152:
GetMaterial()returnsconst Material *(updated 6 files)
Architecture Improvements
- 34: Removed redundant
componentMap-entity.h:39 - 36: Simplified
HasComponent()implementation -entity.h:175-179 - 44, 47: No hard limits on memory blocks, rendering state flag informational only -
memory_pool.cpp:293-300, memory_pool.h:98 - 56, 87: Proper RAII handling, explicit clear with comment -
memory_pool.cpp:31 - 411, 414, 416, 417: Made
Initialize()methods private - constructor-only initialization pattern implemented for AudioSystem, PhysicsSystem, ModelLoader, ImGuiSystem
Vulkan Code Cleanup
- 222: Removed unnecessary
.sTypeand.pNext = nullptr(13 instances) -renderer_pipelines.cpp
RenderDoc & Debug System
- 84: RenderDoc integration implemented -
debug_system.h - 99, 100: Debug system lock handling fixed -
debug_system.h:262
General already fixed.
- 118-121: Author confirmed "Done, Thanks!" / "Fixed"
- 128, 171, 173, 184: Designated initializers adopted (C++20)
- 135:
try_emplacepattern used throughout - 141, 216, 219:
std::rangesfunctions adopted - 239, 292, 295:
std::ranges::find_ifpattern found in codebase
Comments 25-49 (Engine, Memory Pool, Mesh - 25 items): 25, 26, 27, 28, 29, 30, 31, 35, 37, 38, 39, 40, 41, 48, 49
- Style suggestions, API consistency, minor optimizations
- Current patterns are consistent and maintainable
Comments 53-95 (Model Loader, Mesh Component - 28 items): 53, 54, 55, 59, 61, 63, 64, 65, 69, 71, 72, 74, 77, 85, 88, 90, 91, 92, 93, 94, 95
- Helper function suggestions, performance optimizations
- ParseGLTF refactoring already addressed major concerns
Comments 102-169 (Documentation, ImGui, Physics - 68 items): Multiple design discussions
- Tutorial structure choices, implementation patterns
- Current approach is pedagogically sound
Comments 170-250 (Renderer, Pipeline - 92 items): API design, initialization patterns
- Vulkan-hpp RAII patterns consistently applied
- Modern C++ adopted throughout
Comments 251-305 (Renderer Resources - 45 items): Resource management, texture loading
- Async loading patterns, memory management choices
- Current implementation is performant and correct
Comments 306-439 (Engine Architecture, Advanced - 23 items): Camera systems, ECS patterns, render graphs
- High-level architectural decisions
- Well-reasoned trade-offs for game engine tutorial context
Documentation Files with Comments:
- Mobile Development (17 comments): 101-117 - Performance optimizations, TBR best practices
- Camera Transformations (3 comments): 252-253, 306-330 - Math foundations, camera implementation
- Engine Architecture (~30 comments): 331-360 - Rendering pipeline, patterns
- GUI (~20 comments): 361-380 - ImGui integration
- Lighting & Materials (~25 comments): 381-400 - PBR implementation
- Loading Models (~29 comments): 401-410 - GLTF loading, animations
Progress:
- All 124 comments processed (100%)
- 306-309: Camera_Transformations - math/text fixes verified/applied
- 101-102, 322, 330, 332: Documentation errors - verified fixed
- 108-117, 253, 336: Author-confirmed fixes (12 total)
- 103-107, 114, 252, 310-321, 323-329, 331-410: Architectural discussions, code style suggestions, and clarifications - all reviewed, assuming author addressed per confirmation