#include "recastmesh.hpp" #include "exceptions.hpp" #include namespace DetourNavigator { Mesh::Mesh(std::vector&& indices, std::vector&& vertices, std::vector&& areaTypes) { if (indices.size() / 3 != areaTypes.size()) throw InvalidArgument("Number of flags doesn't match number of triangles: triangles=" + std::to_string(indices.size() / 3) + ", areaTypes=" + std::to_string(areaTypes.size())); indices.shrink_to_fit(); vertices.shrink_to_fit(); areaTypes.shrink_to_fit(); mIndices = std::move(indices); mVertices = std::move(vertices); mAreaTypes = std::move(areaTypes); } RecastMesh::RecastMesh(std::size_t generation, std::size_t revision, Mesh mesh, std::vector water) : mGeneration(generation) , mRevision(revision) , mMesh(std::move(mesh)) , mWater(std::move(water)) { if (mMesh.getVerticesCount() > 0) rcCalcBounds(mMesh.getVertices().data(), static_cast(mMesh.getVerticesCount()), mBounds.mMin.ptr(), mBounds.mMax.ptr()); mWater.shrink_to_fit(); } }