Skip to content

Commit 775c45c

Browse files
quaglacopybara-github
authored andcommitted
Do not lookup compiler options by name when attaching.
Also, fix a pre-existing bug that caused incorrect compiler option propagation with nested attachments. Fixes #2480. PiperOrigin-RevId: 736156202 Change-Id: Ib430493e8c60556c2312603198587b39de9b8a4a
1 parent 995bbf0 commit 775c45c

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

src/user/user_objects.cc

+13-7
Original file line numberDiff line numberDiff line change
@@ -1009,35 +1009,41 @@ mjCBody& mjCBody::operator-=(const mjCBody& subtree) {
10091009
// set model of this body and its subtree
10101010
void mjCBody::SetModel(mjCModel* _model) {
10111011
model = _model;
1012-
mjSpec* origin = model->FindSpec(mjs_getString(model->spec.modelname));
1012+
mjSpec* origin = _model->FindSpec(compiler);
10131013
compiler = origin ? &origin->compiler : &model->spec.compiler;
10141014

10151015
for (auto& body : bodies) {
10161016
body->SetModel(_model);
10171017
}
10181018
for (auto& frame : frames) {
1019+
origin = _model->FindSpec(frame->compiler);
10191020
frame->model = _model;
1020-
frame->compiler = compiler;
1021+
frame->compiler = origin ? &origin->compiler : &model->spec.compiler;
10211022
}
10221023
for (auto& geom : geoms) {
1024+
origin = _model->FindSpec(geom->compiler);
10231025
geom->model = _model;
1024-
geom->compiler = compiler;
1026+
geom->compiler = origin ? &origin->compiler : &model->spec.compiler;
10251027
}
10261028
for (auto& joint : joints) {
1029+
origin = _model->FindSpec(joint->compiler);
10271030
joint->model = _model;
1028-
joint->compiler = compiler;
1031+
joint->compiler = origin ? &origin->compiler : &model->spec.compiler;
10291032
}
10301033
for (auto& site : sites) {
1034+
origin = _model->FindSpec(site->compiler);
10311035
site->model = _model;
1032-
site->compiler = compiler;
1036+
site->compiler = origin ? &origin->compiler : &model->spec.compiler;
10331037
}
10341038
for (auto& camera : cameras) {
1039+
origin = _model->FindSpec(camera->compiler);
10351040
camera->model = _model;
1036-
camera->compiler = compiler;
1041+
camera->compiler = origin ? &origin->compiler : &model->spec.compiler;
10371042
}
10381043
for (auto& light : lights) {
1044+
origin = _model->FindSpec(light->compiler);
10391045
light->model = _model;
1040-
light->compiler = compiler;
1046+
light->compiler = origin ? &origin->compiler : &model->spec.compiler;
10411047
}
10421048
}
10431049

test/user/user_api_test.cc

+4-4
Original file line numberDiff line numberDiff line change
@@ -2342,13 +2342,13 @@ TEST_F(MujocoTest, KeyframeSizeError) {
23422342

23432343
TEST_F(MujocoTest, DifferentUnitsAllowed) {
23442344
static constexpr char gchild_xml[] = R"(
2345-
<mujoco model="gchild">
2346-
<compiler angle="radian"/>
2345+
<mujoco>
2346+
<compiler angle="degree"/>
23472347
23482348
<worldbody>
2349-
<body name="gchild" euler="-1.5707963 0 0">
2349+
<body name="gchild" euler="-90 0 0">
23502350
<geom type="box" size="1 1 1"/>
2351-
<joint name="gchild_joint" range="-3.1415926 3.1415926"/>
2351+
<joint name="gchild_joint" range="-180 180"/>
23522352
</body>
23532353
</worldbody>
23542354
</mujoco>

0 commit comments

Comments
 (0)