Add mjv_copyData

PiperOrigin-RevId: 760642972
Change-Id: I16227fd91bf42618fda684b15b3650758ae29b13
This commit is contained in:
Yuval Tassa
2025-05-19 08:58:45 -07:00
committed by Copybara-Service
parent 670c97c4f7
commit 8268c6d1ff
9 changed files with 236 additions and 113 deletions
+32 -1
View File
@@ -226,11 +226,42 @@ TEST_F(EngineIoTest, MjvCopyModel) {
EXPECT_FLOAT_EQ(model2->mesh_vert[0], 0.1); // unchanged
EXPECT_FLOAT_EQ(model2->geom_rgba[0], 0.4);
// mj_deleteData(data);
mj_deleteModel(model2);
mj_deleteModel(model1);
}
TEST_F(EngineIoTest, MjvCopyData) {
static constexpr char xml[] = R"(
<mujoco>
<worldbody>
<body pos="0 0 0.8">
<freejoint/>
<geom type="sphere" size="0.1"/>
</body>
<geom type="plane" size="1 1 1"/>
</worldbody>
</mujoco>
)";
char error[1024];
mjModel* model = LoadModelFromString(xml, error, sizeof(error));
ASSERT_THAT(model, NotNull()) << error;
mjData* data1 = mj_makeData(model);
mj_forward(model, data1);
EXPECT_THAT(data1->efc_J, NotNull());
mjData* data2 = mj_copyData(nullptr, model, data1);
EXPECT_THAT(data2->efc_J, NotNull());
mj_deleteData(data2);
data2 = mjv_copyData(nullptr, model, data1);
EXPECT_THAT(data2->efc_J, IsNull());
mj_deleteData(data2);
mj_deleteData(data1);
mj_deleteModel(model);
}
using ValidateReferencesTest = MujocoTest;
TEST_F(ValidateReferencesTest, BodyReferences) {