From 55cac39541cae4baf5ffaccee8e3267e2bd3f82b Mon Sep 17 00:00:00 2001 From: Kelsi Date: Mon, 30 Mar 2026 15:17:37 -0700 Subject: [PATCH] refactor: name random/camera constants, add alpha map static_assert MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - terrain_manager: extract kRand16Max (65535.0f) from 8 duplicated random normalization expressions — 16-bit mask to [0..1] float - terrain_manager: add static_assert verifying packed alpha unpacks to full alpha map size (ALPHA_MAP_PACKED * 2 == ALPHA_MAP_SIZE) - camera_controller: name kCameraClipEpsilon (0.1f) with why-comment preventing character model clipping at near-minimum distance --- src/rendering/camera_controller.cpp | 7 +++++-- src/rendering/terrain_manager.cpp | 20 ++++++++++++-------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/rendering/camera_controller.cpp b/src/rendering/camera_controller.cpp index 7db9c808..248d3263 100644 --- a/src/rendering/camera_controller.cpp +++ b/src/rendering/camera_controller.cpp @@ -191,8 +191,11 @@ void CameraController::update(float deltaTime) { // Compute camera position glm::vec3 actualCam; - if (actualDist < MIN_DISTANCE + 0.1f) { - actualCam = pivot + forward3D * 0.1f; + // Small offset prevents the camera from clipping into the character + // model when collision pushes it to near-minimum distance. + constexpr float kCameraClipEpsilon = 0.1f; + if (actualDist < MIN_DISTANCE + kCameraClipEpsilon) { + actualCam = pivot + forward3D * kCameraClipEpsilon; } else { actualCam = pivot + camDir * actualDist; } diff --git a/src/rendering/terrain_manager.cpp b/src/rendering/terrain_manager.cpp index 312f9168..a0944bb0 100644 --- a/src/rendering/terrain_manager.cpp +++ b/src/rendering/terrain_manager.cpp @@ -45,9 +45,13 @@ namespace { // Alpha map format constants constexpr size_t ALPHA_MAP_SIZE = 4096; // 64×64 uncompressed alpha bytes constexpr size_t ALPHA_MAP_PACKED = 2048; // 64×64 packed 4-bit alpha (half size) +static_assert(ALPHA_MAP_PACKED * 2 == ALPHA_MAP_SIZE, "packed alpha must unpack to full size"); constexpr uint8_t ALPHA_FILL_FLAG = 0x80; // RLE command: fill vs. copy constexpr uint8_t ALPHA_COUNT_MASK = 0x7F; // RLE command: count bits +// Random float normalization: mask to 16-bit then divide by max value to get [0..1] +constexpr float kRand16Max = 65535.0f; + // Placement transform constants constexpr float kDegToRad = 3.14159f / 180.0f; constexpr float kInv1024 = 1.0f / 1024.0f; @@ -1897,8 +1901,8 @@ void TerrainManager::generateGroundClutterPlacements(std::shared_ptr((fracX / 8.0f) * 63.0f), 0, 63); @@ -1965,8 +1969,8 @@ void TerrainManager::generateGroundClutterPlacements(std::shared_ptrm2Placements.push_back(p); @@ -2005,8 +2009,8 @@ void TerrainManager::generateGroundClutterPlacements(std::shared_ptrm2Placements.push_back(p); fallbackAdded++;