Remove C-style vectors from user_mesh.

PiperOrigin-RevId: 630031676
Change-Id: I87cba3eb816095657acd886037af2c0f06fe4fdd
This commit is contained in:
Alessio Quaglino
2024-05-02 05:26:25 -07:00
committed by Copybara-Service
parent dc68bc6c13
commit 259d3876ce
3 changed files with 334 additions and 480 deletions
+4 -11
View File
@@ -935,29 +935,22 @@ bool mjCFlexcomp::MakeMesh(mjCModel* model, char* error, int error_sz) {
// LoadOBJ uses userXXX, extra processing needed
if (isobj) {
// check sizes
if (mesh.get_uservert().empty() || mesh.get_userface().empty()) {
if (mesh.vert_.empty() || mesh.face_.empty()) {
return comperr(error, "Vertex and face data required", error_sz);
}
if (mesh.get_uservert().size()%3) {
if (mesh.vert_.size()%3) {
return comperr(error, "Vertex data must be multiple of 3", error_sz);
}
if (mesh.get_userface().size()%3) {
if (mesh.face_.size()%3) {
return comperr(error, "Face data must be multiple of 3", error_sz);
}
// copy vectors and clear
mesh.nvert_ = mesh.uservert_.size()/3;
mesh.nface_ = mesh.userface_.size()/3;
mesh.vert_ = VecToArray(mesh.uservert_, true);
mesh.face_ = VecToArray(mesh.userface_, true);
// remove repeated vertices (not called in LoadOBJ)
mesh.RemoveRepeated();
}
// copy faces
element = vector<int> (mesh.nface()*3);
memcpy(element.data(), mesh.face_, mesh.nface_*3*sizeof(int));
element = mesh.face_;
// copy vertices, convert from float to mjtNum
point = vector<mjtNum> (mesh.nvert()*3);