diff --git a/RecastDemo/Include/MeshLoaderObj.h b/RecastDemo/Include/MeshLoaderObj.h index db91839b..d32db484 100644 --- a/RecastDemo/Include/MeshLoaderObj.h +++ b/RecastDemo/Include/MeshLoaderObj.h @@ -27,12 +27,12 @@ public: bool load(const std::string& fileName); void load(char* buf, size_t bufLen); - const float* getVerts() const { return verts.data(); } - const float* getNormals() const { return normals.data(); } - const int* getTris() const { return tris.data(); } - int getVertCount() const { return verts.size() / 3; } - int getTriCount() const { return tris.size() / 3; } - const std::string& getFileName() const { return filename; } + [[nodiscard]] const float* getVerts() const { return verts.data(); } + [[nodiscard]] const float* getNormals() const { return normals.data(); } + [[nodiscard]] const int* getTris() const { return tris.data(); } + [[nodiscard]] int getVertCount() const { return static_cast(verts.size()) / 3; } + [[nodiscard]] int getTriCount() const { return static_cast(tris.size()) / 3; } + [[nodiscard]] const std::string& getFileName() const { return filename; } private: std::string filename; diff --git a/RecastDemo/Include/ValueHistory.h b/RecastDemo/Include/ValueHistory.h index b1dbb913..9a5c721d 100644 --- a/RecastDemo/Include/ValueHistory.h +++ b/RecastDemo/Include/ValueHistory.h @@ -6,13 +6,13 @@ class ValueHistory { static constexpr int MAX_HISTORY = 256; - std::vector samples{}; + std::vector samples{}; int nextSampleIndex = 0; public: ValueHistory() { samples.reserve(MAX_HISTORY); } - inline void addSample(const float val) + void addSample(const float val) { if (samples.size() < MAX_HISTORY) { @@ -25,13 +25,13 @@ public: } } - inline int getSampleCount() const { return samples.size(); } + [[nodiscard]] int getSampleCount() const { return static_cast(samples.size()); } - inline float getSample(const int i) const { return samples[(nextSampleIndex + i) % MAX_HISTORY]; } + [[nodiscard]] float getSample(const int i) const { return samples[(nextSampleIndex + i) % MAX_HISTORY]; } - float getSampleMin() const; - float getSampleMax() const; - float getAverage() const; + [[nodiscard]] float getSampleMin() const; + [[nodiscard]] float getSampleMax() const; + [[nodiscard]] float getAverage() const; }; struct GraphParams diff --git a/RecastDemo/Source/ChunkyTriMesh.cpp b/RecastDemo/Source/ChunkyTriMesh.cpp index 22938e83..0834e5bb 100644 --- a/RecastDemo/Source/ChunkyTriMesh.cpp +++ b/RecastDemo/Source/ChunkyTriMesh.cpp @@ -22,6 +22,8 @@ #include #include +#include + struct IndexedBounds { float bmin[2]; @@ -33,12 +35,12 @@ namespace { int compareMinX(const void* va, const void* vb) { - return ((const IndexedBounds*)va)->bmin[0] - ((const IndexedBounds*)vb)->bmin[0]; + return static_cast(static_cast(va)->bmin[0] - static_cast(vb)->bmin[0]); } int compareMinY(const void* va, const void* vb) { - return ((const IndexedBounds*)va)->bmin[1] - ((const IndexedBounds*)vb)->bmin[1]; + return static_cast(static_cast(va)->bmin[1] - static_cast(vb)->bmin[1]); } /// Calculates the total extent of all bounds in the given index range @@ -53,23 +55,11 @@ void calcTotalBounds(const IndexedBounds* items, const int startIndex, const int for (int i = startIndex + 1; i < endIndex; ++i) { const IndexedBounds& it = items[i]; - if (it.bmin[0] < outBMin[0]) - { - outBMin[0] = it.bmin[0]; - } - if (it.bmin[1] < outBMin[1]) - { - outBMin[1] = it.bmin[1]; - } + outBMin[0] = std::min(it.bmin[0], outBMin[0]); + outBMin[1] = std::min(it.bmin[1], outBMin[1]); - if (it.bmax[0] > outBMax[0]) - { - outBMax[0] = it.bmax[0]; - } - if (it.bmax[1] > outBMax[1]) - { - outBMax[1] = it.bmax[1]; - } + outBMax[0] = std::max(it.bmax[0], outBMax[0]); + outBMax[1] = std::max(it.bmax[1], outBMax[1]); } } @@ -148,10 +138,7 @@ bool checkOverlapSegment(const float p[2], const float q[2], const float bmin[2] { float tmin = 0; float tmax = 1; - float d[] { - q[0] - p[0], - q[1] - p[1] - }; + float d[]{q[0] - p[0], q[1] - p[1]}; for (int i = 0; i < 2; i++) { diff --git a/RecastDemo/Source/Sample_TileMesh.cpp b/RecastDemo/Source/Sample_TileMesh.cpp index f1b9ab63..9163953b 100644 --- a/RecastDemo/Source/Sample_TileMesh.cpp +++ b/RecastDemo/Source/Sample_TileMesh.cpp @@ -226,7 +226,7 @@ void Sample_TileMesh::handleSettings() int gridWidth = 0; int gridHeight = 0; rcCalcGridSize(navMeshBoundsMin, navMeshBoundsMax, cellSize, &gridWidth, &gridHeight); - const int tileSize = static_cast(tileSize); + const int tileSize = static_cast(this->tileSize); const int tileWidth = (gridWidth + tileSize - 1) / tileSize; const int tileHeight = (gridHeight + tileSize - 1) / tileSize; @@ -652,7 +652,7 @@ void Sample_TileMesh::buildTile(const float* pos) const float* navMeshBoundsMin = inputGeometry->getNavMeshBoundsMin(); const float* navMeshBoundsMax = inputGeometry->getNavMeshBoundsMax(); - const float tileSize = tileSize * cellSize; + const float tileSize = this->tileSize * cellSize; const int tileX = static_cast((pos[0] - navMeshBoundsMin[0]) / tileSize); const int tileY = static_cast((pos[2] - navMeshBoundsMin[2]) / tileSize); @@ -697,9 +697,9 @@ void Sample_TileMesh::getTilePos(const float* pos, int& outTileX, int& outTileY) const float* navMeshBoundsMin = inputGeometry->getNavMeshBoundsMin(); - const float tileSize = tileSize * cellSize; - outTileX = static_cast((pos[0] - navMeshBoundsMin[0]) / tileSize); - outTileY = static_cast((pos[2] - navMeshBoundsMin[2]) / tileSize); + const float tileWorldSize = tileSize * cellSize; + outTileX = static_cast((pos[0] - navMeshBoundsMin[0]) / tileWorldSize); + outTileY = static_cast((pos[2] - navMeshBoundsMin[2]) / tileWorldSize); } void Sample_TileMesh::removeTile(const float* pos) @@ -716,7 +716,7 @@ void Sample_TileMesh::removeTile(const float* pos) const float* navMeshBoundsMin = inputGeometry->getNavMeshBoundsMin(); const float* navmeshBoundsMax = inputGeometry->getNavMeshBoundsMax(); - const float tileSize = tileSize * cellSize; + const float tileSize = this->tileSize * cellSize; const int tileX = static_cast((pos[0] - navMeshBoundsMin[0]) / tileSize); const int tileY = static_cast((pos[2] - navMeshBoundsMin[2]) / tileSize); @@ -749,7 +749,7 @@ void Sample_TileMesh::buildAllTiles() int gridWidth = 0; int gridHeight = 0; rcCalcGridSize(navMeshBoundsMin, navMeshBoundsMax, cellSize, &gridWidth, &gridHeight); - const int tileSize = static_cast(tileSize); + const int tileSize = static_cast(this->tileSize); const int tileWidth = (gridWidth + tileSize - 1) / tileSize; const int tileHeight = (gridHeight + tileSize - 1) / tileSize; const float tileCellSize = tileSize * cellSize; @@ -808,7 +808,7 @@ void Sample_TileMesh::removeAllTiles() const int gridWidth = 0; int gridHeight = 0; rcCalcGridSize(navMeshBoundsMin, navMeshBoundsMax, cellSize, &gridWidth, &gridHeight); - const int tileSize = static_cast(tileSize); + const int tileSize = static_cast(this->tileSize); const int tileWidth = (gridWidth + tileSize - 1) / tileSize; const int tileHeight = (gridHeight + tileSize - 1) / tileSize; @@ -1071,12 +1071,7 @@ unsigned char* Sample_TileMesh::buildTileMesh( } // Partition the walkable surface into simple regions without holes. - if (!rcBuildRegions( - buildContext, - *compactHeightfield, - config.borderSize, - config.minRegionArea, - config.mergeRegionArea)) + if (!rcBuildRegions(buildContext, *compactHeightfield, config.borderSize, config.minRegionArea, config.mergeRegionArea)) { buildContext->log(RC_LOG_ERROR, "buildNavigation: Could not build watershed regions."); return 0; diff --git a/RecastDemo/Source/ValueHistory.cpp b/RecastDemo/Source/ValueHistory.cpp index 89f95770..44913c83 100644 --- a/RecastDemo/Source/ValueHistory.cpp +++ b/RecastDemo/Source/ValueHistory.cpp @@ -2,6 +2,7 @@ #include "imgui.h" +#include #include #include @@ -12,12 +13,9 @@ float ValueHistory::getSampleMin() const { float min = samples[0]; - for (int sample : samples) + for (float sample : samples) { - if (sample < min) - { - min = sample; - } + min = std::min(sample, min); } return min; } @@ -25,12 +23,9 @@ float ValueHistory::getSampleMin() const float ValueHistory::getSampleMax() const { float max = samples[0]; - for (int sample : samples) + for (float sample : samples) { - if (sample > max) - { - max = sample; - } + max = std::max(sample, max); } return max; } @@ -38,14 +33,14 @@ float ValueHistory::getSampleMax() const float ValueHistory::getAverage() const { float total = 0; - for (int sample : samples) + for (const float sample : samples) { total += sample; } - return total / samples.size(); + return total / static_cast(samples.size()); } -void GraphParams::setRect(int x, int y, int width, int height, int padding) +void GraphParams::setRect(int x, int y, const int width, const int height, const int padding) { this->x = x; this->y = y; @@ -66,11 +61,11 @@ void drawGraphBackground(const GraphParams* params) { // BG imguiDrawRoundedRect( - (float)params->x, - (float)params->y, - (float)params->width, - (float)params->height, - (float)params->padding, + static_cast(params->x), + static_cast(params->y), + static_cast(params->width), + static_cast(params->height), + static_cast(params->padding), imguiRGBA(64, 64, 64, 128)); const float pixelScaleY = (params->height - params->padding * 2) / (params->rangeMax - params->rangeMin); @@ -81,20 +76,20 @@ void drawGraphBackground(const GraphParams* params) // Divider Lines for (int divisionIndex = 0; divisionIndex <= params->rangeDivisions; ++divisionIndex) { - const float normalizedPosition = (float)divisionIndex / (float)params->rangeDivisions; + const float normalizedPosition = static_cast(divisionIndex) / static_cast(params->rangeDivisions); const float valueAtDivision = params->rangeMin + (params->rangeMax - params->rangeMin) * normalizedPosition; snprintf(valueLabel, 64, "%.2f %s", valueAtDivision, params->units.c_str()); const float fy = offsetY + valueAtDivision * pixelScaleY; imguiDrawText( params->x + params->width - params->padding, - (int)fy - 4, + static_cast(fy) - 4, IMGUI_ALIGN_RIGHT, valueLabel, imguiRGBA(0, 0, 0, 255)); imguiDrawLine( - (float)params->x + (float)params->padding, + static_cast(params->x) + static_cast(params->padding), fy, - (float)params->x + (float)params->width - (float)params->padding - 50, + static_cast(params->x) + static_cast(params->width) - static_cast(params->padding) - 50, fy, 1.0f, imguiRGBA(0, 0, 0, 64)); @@ -103,10 +98,10 @@ void drawGraphBackground(const GraphParams* params) void drawGraph(const GraphParams* params, const ValueHistory* graph, int index, const char* label, const unsigned int color) { - const float sx = (params->width - params->padding * 2) / (float)graph->getSampleCount(); - const float sy = (params->height - params->padding * 2) / (params->rangeMax - params->rangeMin); - const float ox = (float)params->x + (float)params->padding; - const float oy = (float)params->y + (float)params->padding - params->rangeMin * sy; + const float sx = static_cast(params->width - params->padding * 2) / static_cast(graph->getSampleCount()); + const float sy = static_cast(params->height - params->padding * 2) / (params->rangeMax - params->rangeMin); + const float ox = static_cast(params->x) + static_cast(params->padding); + const float oy = static_cast(params->y) + static_cast(params->padding) - params->rangeMin * sy; // Values float px = 0, py = 0; @@ -123,12 +118,12 @@ void drawGraph(const GraphParams* params, const ValueHistory* graph, int index, } // Label - const int size = 15; - const int spacing = 10; - int ix = params->x + params->width + 5; - int iy = params->y + params->height - (index + 1) * (size + spacing); + constexpr int size = 15; + constexpr int spacing = 10; + const int ix = params->x + params->width + 5; + const int iy = params->y + params->height - (index + 1) * (size + spacing); - imguiDrawRoundedRect((float)ix, (float)iy, (float)size, (float)size, 2.0f, color); + imguiDrawRoundedRect(static_cast(ix), static_cast(iy), static_cast(size), static_cast(size), 2.0f, color); char text[64]; snprintf(text, 64, "%.2f %s", graph->getAverage(), params->units.c_str()); diff --git a/RecastDemo/Source/main.cpp b/RecastDemo/Source/main.cpp index 73385fb3..017675f4 100644 --- a/RecastDemo/Source/main.cpp +++ b/RecastDemo/Source/main.cpp @@ -19,7 +19,11 @@ #include "SDL.h" #include "SDL_opengl.h" +#if WIN32 +#include +#else #include +#endif #include #include