#include "recastmesh.hpp" #include "exceptions.hpp" 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(const Version& version, Mesh mesh, std::vector water, std::vector heightfields, std::vector flatHeightfields, std::vector meshSources) : mVersion(version) , mMesh(std::move(mesh)) , mWater(std::move(water)) , mHeightfields(std::move(heightfields)) , mFlatHeightfields(std::move(flatHeightfields)) , mMeshSources(std::move(meshSources)) { mWater.shrink_to_fit(); mHeightfields.shrink_to_fit(); for (Heightfield& v : mHeightfields) v.mHeights.shrink_to_fit(); } }