Avoid duplicated code in mjCModel by adding ResetTreeLists().

PiperOrigin-RevId: 653575505
Change-Id: I61ee1462deae2a371cf6f36ca1cf3dbbd88d174c
This commit is contained in:
Alessio Quaglino
2024-07-18 05:07:13 -07:00
committed by Copybara-Service
parent 67922f41b9
commit 231d9632cd
2 changed files with 22 additions and 36 deletions
+19 -36
View File
@@ -188,19 +188,26 @@ static void resetlist(std::vector<T*>& list) {
void mjCModel::ResetTreeLists() {
mjCBody *world = bodies_[0];
resetlist(bodies_);
resetlist(joints_);
resetlist(geoms_);
resetlist(sites_);
resetlist(cameras_);
resetlist(lights_);
resetlist(frames_);
world->id = 0;
bodies_.push_back(world);
}
mjCModel& mjCModel::operator+=(const mjCModel& other) {
// create global lists
mjCBody *world = bodies_[0];
if (compiled) {
resetlist(bodies_);
resetlist(joints_);
resetlist(geoms_);
resetlist(sites_);
resetlist(cameras_);
resetlist(lights_);
resetlist(frames_);
world->id = 0;
bodies_.push_back(world);
ResetTreeLists();
}
MakeLists(world);
ProcessLists(/*checkrepeat=*/false);
@@ -233,15 +240,7 @@ mjCModel& mjCModel::operator+=(const mjCModel& other) {
// restore to the original state
if (!compiled) {
resetlist(bodies_);
resetlist(joints_);
resetlist(geoms_);
resetlist(sites_);
resetlist(cameras_);
resetlist(lights_);
resetlist(frames_);
world->id = 0;
bodies_.push_back(world);
ResetTreeLists();
}
PointToLocal();
@@ -291,15 +290,7 @@ mjCModel& mjCModel::operator-=(const mjCBody& subtree) {
// create global lists
if (compiled) {
resetlist(bodies_);
resetlist(joints_);
resetlist(geoms_);
resetlist(sites_);
resetlist(cameras_);
resetlist(lights_);
resetlist(frames_);
world->id = 0;
bodies_.push_back(world);
ResetTreeLists();
}
MakeLists(world);
ProcessLists(/*checkrepeat=*/false);
@@ -314,15 +305,7 @@ mjCModel& mjCModel::operator-=(const mjCBody& subtree) {
// restore to the original state
if (!compiled) {
resetlist(bodies_);
resetlist(joints_);
resetlist(geoms_);
resetlist(sites_);
resetlist(cameras_);
resetlist(lights_);
resetlist(frames_);
world->id = 0;
bodies_.push_back(world);
ResetTreeLists();
}
PointToLocal();
+3
View File
@@ -353,6 +353,9 @@ class mjCModel : public mjCModel_, private mjSpec {
// populate objects ids
void ProcessLists(bool checkrepeat = true);
// reset lists of kinematic tree
void ResetTreeLists();
mjListKeyMap ids; // map from object names to ids
mjCError errInfo; // last error info
bool plugin_owner; // this class allocated the plugins