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
This commit is contained in:
committed by
Copybara-Service
parent
995bbf0f0f
commit
775c45c60e
@@ -1009,35 +1009,41 @@ mjCBody& mjCBody::operator-=(const mjCBody& subtree) {
|
||||
// set model of this body and its subtree
|
||||
void mjCBody::SetModel(mjCModel* _model) {
|
||||
model = _model;
|
||||
mjSpec* origin = model->FindSpec(mjs_getString(model->spec.modelname));
|
||||
mjSpec* origin = _model->FindSpec(compiler);
|
||||
compiler = origin ? &origin->compiler : &model->spec.compiler;
|
||||
|
||||
for (auto& body : bodies) {
|
||||
body->SetModel(_model);
|
||||
}
|
||||
for (auto& frame : frames) {
|
||||
origin = _model->FindSpec(frame->compiler);
|
||||
frame->model = _model;
|
||||
frame->compiler = compiler;
|
||||
frame->compiler = origin ? &origin->compiler : &model->spec.compiler;
|
||||
}
|
||||
for (auto& geom : geoms) {
|
||||
origin = _model->FindSpec(geom->compiler);
|
||||
geom->model = _model;
|
||||
geom->compiler = compiler;
|
||||
geom->compiler = origin ? &origin->compiler : &model->spec.compiler;
|
||||
}
|
||||
for (auto& joint : joints) {
|
||||
origin = _model->FindSpec(joint->compiler);
|
||||
joint->model = _model;
|
||||
joint->compiler = compiler;
|
||||
joint->compiler = origin ? &origin->compiler : &model->spec.compiler;
|
||||
}
|
||||
for (auto& site : sites) {
|
||||
origin = _model->FindSpec(site->compiler);
|
||||
site->model = _model;
|
||||
site->compiler = compiler;
|
||||
site->compiler = origin ? &origin->compiler : &model->spec.compiler;
|
||||
}
|
||||
for (auto& camera : cameras) {
|
||||
origin = _model->FindSpec(camera->compiler);
|
||||
camera->model = _model;
|
||||
camera->compiler = compiler;
|
||||
camera->compiler = origin ? &origin->compiler : &model->spec.compiler;
|
||||
}
|
||||
for (auto& light : lights) {
|
||||
origin = _model->FindSpec(light->compiler);
|
||||
light->model = _model;
|
||||
light->compiler = compiler;
|
||||
light->compiler = origin ? &origin->compiler : &model->spec.compiler;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2342,13 +2342,13 @@ TEST_F(MujocoTest, KeyframeSizeError) {
|
||||
|
||||
TEST_F(MujocoTest, DifferentUnitsAllowed) {
|
||||
static constexpr char gchild_xml[] = R"(
|
||||
<mujoco model="gchild">
|
||||
<compiler angle="radian"/>
|
||||
<mujoco>
|
||||
<compiler angle="degree"/>
|
||||
|
||||
<worldbody>
|
||||
<body name="gchild" euler="-1.5707963 0 0">
|
||||
<body name="gchild" euler="-90 0 0">
|
||||
<geom type="box" size="1 1 1"/>
|
||||
<joint name="gchild_joint" range="-3.1415926 3.1415926"/>
|
||||
<joint name="gchild_joint" range="-180 180"/>
|
||||
</body>
|
||||
</worldbody>
|
||||
</mujoco>
|
||||
|
||||
Reference in New Issue
Block a user