Exception safety
parent
37e1fb9cd7
commit
e1bab44e19
|
@ -347,7 +347,7 @@ static inline bool CheckValidFacesIndices(aiFace *faces, unsigned nFaces, unsign
|
|||
|
||||
void glTF2Importer::ImportMeshes(glTF2::Asset &r) {
|
||||
ASSIMP_LOG_DEBUG_F("Importing ", r.meshes.Size(), " meshes");
|
||||
std::vector<aiMesh *> meshes;
|
||||
std::vector<std::unique_ptr<aiMesh>> meshes;
|
||||
|
||||
unsigned int k = 0;
|
||||
meshOffsets.clear();
|
||||
|
@ -361,8 +361,8 @@ void glTF2Importer::ImportMeshes(glTF2::Asset &r) {
|
|||
for (unsigned int p = 0; p < mesh.primitives.size(); ++p) {
|
||||
Mesh::Primitive &prim = mesh.primitives[p];
|
||||
|
||||
aiMesh *aim = new aiMesh();
|
||||
meshes.push_back(aim);
|
||||
meshes.emplace_back(std::make_unique<aiMesh>());
|
||||
aiMesh *aim = meshes.back().get();
|
||||
|
||||
aim->mName = mesh.name.empty() ? mesh.id : mesh.name;
|
||||
|
||||
|
|
|
@ -57,6 +57,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
#include <map>
|
||||
#include <set>
|
||||
#include <vector>
|
||||
#include <memory>
|
||||
|
||||
struct aiScene;
|
||||
struct aiImporterDesc;
|
||||
|
@ -391,6 +392,24 @@ public: // static utilities
|
|||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
/** Utility function to move a std::vector of unique_ptrs into a aiScene array
|
||||
* @param vec The vector of unique_ptrs to be moved
|
||||
* @param out The output pointer to the allocated array.
|
||||
* @param numOut The output count of elements copied. */
|
||||
template <typename T>
|
||||
AI_FORCE_INLINE static void CopyVector(
|
||||
std::vector<std::unique_ptr<T>> &vec,
|
||||
T **&out,
|
||||
unsigned int &outLength) {
|
||||
outLength = unsigned(vec.size());
|
||||
if (outLength) {
|
||||
out = new T*[outLength];
|
||||
T** outPtr = out;
|
||||
std::for_each(vec.begin(), vec.end(), [&outPtr](auto& uPtr){*outPtr = uPtr.release(); ++outPtr; });
|
||||
}
|
||||
}
|
||||
|
||||
protected:
|
||||
/// Error description in case there was one.
|
||||
std::string m_ErrorText;
|
||||
|
|
Loading…
Reference in New Issue