Fix heightmap loading detection and widen wall collision radius

- Use explicit loaded flag for heightmap instead of checking height values
- Increase player collision radius from 0.50 to 0.55 for better wall collision
This commit is contained in:
Kelsi 2026-02-05 18:01:16 -08:00
parent f1bdf0bb67
commit f3f97cf9de
3 changed files with 4 additions and 2 deletions

View file

@ -21,9 +21,10 @@ struct ADTCoord {
*/
struct HeightMap {
std::array<float, 145> heights; // 9x9 outer + 8x8 inner vertices
bool loaded = false;
float getHeight(int x, int y) const;
bool isLoaded() const { return heights[0] != 0.0f || heights[1] != 0.0f; }
bool isLoaded() const { return loaded; }
};
/**

View file

@ -377,6 +377,7 @@ void ADTLoader::parseMCVT(const uint8_t* data, size_t size, MapChunk& chunk) {
if (height < minHeight) minHeight = height;
if (height > maxHeight) maxHeight = height;
}
chunk.heightMap.loaded = true;
// Log height range for first chunk only
static bool logged = false;

View file

@ -1515,7 +1515,7 @@ bool WMORenderer::checkWallCollision(const glm::vec3& from, const glm::vec3& to,
if (moveDistXY < 0.001f) return false;
// Player collision parameters
const float PLAYER_RADIUS = 0.50f; // Slightly narrower to pass tight doorways/interiors
const float PLAYER_RADIUS = 0.55f; // Slightly wider for better wall collision
const float PLAYER_HEIGHT = 2.0f; // Player height for wall checks
const float MAX_STEP_HEIGHT = 0.85f; // Balanced step-up without wall pass-through