diff --git a/src/xml/xml_native_writer.cc b/src/xml/xml_native_writer.cc index 56ee77f5..76917936 100644 --- a/src/xml/xml_native_writer.cc +++ b/src/xml/xml_native_writer.cc @@ -1321,8 +1321,9 @@ void mjXWriter::Body(XMLElement* elem, mjCBody* body) { } // gravity compensation - WriteAttr(elem, "gravcomp", 1, &body->gravcomp); - + if (body->gravcomp) { + WriteAttr(elem, "gravcomp", 1, &body->gravcomp); + } // userdata WriteVector(elem, "user", body->userdata); diff --git a/test/xml/xml_native_writer_test.cc b/test/xml/xml_native_writer_test.cc index 4c6c1822..7929c4f5 100644 --- a/test/xml/xml_native_writer_test.cc +++ b/test/xml/xml_native_writer_test.cc @@ -579,8 +579,8 @@ TEST_F(XMLWriterTest, WritesGravComp) { static constexpr char xml[] = R"( - - + + )"; @@ -588,6 +588,7 @@ TEST_F(XMLWriterTest, WritesGravComp) { ASSERT_THAT(model, NotNull()); std::string saved_xml = SaveAndReadXml(model); EXPECT_THAT(saved_xml, HasSubstr("gravcomp=\"0.25\"")); + EXPECT_THAT(saved_xml, Not(HasSubstr("gravcomp=\"0\""))); mj_deleteModel(model); }