Reset tree indices before recompiling.
Fixes #1822. PiperOrigin-RevId: 654762203 Change-Id: I7f656f7dad376d4899229a8741315c8f821bfa56
This commit is contained in:
committed by
Copybara-Service
parent
f62792594f
commit
e79efa60d6
@@ -3206,6 +3206,7 @@ mjModel* mjCModel::Compile(const mjVFS* vfs, mjModel** m) {
|
|||||||
bodies_[i]->subtreedofs = 0;
|
bodies_[i]->subtreedofs = 0;
|
||||||
}
|
}
|
||||||
mjCBody* world = bodies_[0];
|
mjCBody* world = bodies_[0];
|
||||||
|
ResetTreeLists();
|
||||||
Clear();
|
Clear();
|
||||||
bodies_.push_back(world);
|
bodies_.push_back(world);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,6 +186,38 @@ TEST_F(PluginTest, RecompileCompare) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(PluginTest, RecompileEdit) {
|
||||||
|
static constexpr char xml[] = R"(
|
||||||
|
<mujoco>
|
||||||
|
<worldbody>
|
||||||
|
<body>
|
||||||
|
<freejoint/>
|
||||||
|
<geom size=".1"/>
|
||||||
|
</body>
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
|
)";
|
||||||
|
|
||||||
|
std::array<char, 1000> er;
|
||||||
|
mjSpec *spec = mj_parseXMLString(xml, 0, er.data(), er.size());
|
||||||
|
EXPECT_THAT(spec, NotNull()) << er.data();
|
||||||
|
mjModel *m1 = mj_compile(spec, nullptr);
|
||||||
|
EXPECT_THAT(m1, NotNull());
|
||||||
|
|
||||||
|
// add a geom
|
||||||
|
mjsBody *world = mjs_findBody(spec, "world");
|
||||||
|
mjsGeom *geom = mjs_addGeom(world, nullptr);
|
||||||
|
geom->size[0] = 1;
|
||||||
|
|
||||||
|
// compile again
|
||||||
|
mjModel *m2 = mj_compile(spec, nullptr);
|
||||||
|
EXPECT_THAT(m2, NotNull());
|
||||||
|
|
||||||
|
mj_deleteModel(m1);
|
||||||
|
mj_deleteModel(m2);
|
||||||
|
mj_deleteSpec(spec);
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------- test cache with modified assets -------------------------
|
// ------------------- test cache with modified assets -------------------------
|
||||||
|
|
||||||
TEST_F(PluginTest, RecompileCompareObjCache) {
|
TEST_F(PluginTest, RecompileCompareObjCache) {
|
||||||
|
|||||||
Reference in New Issue
Block a user