diff --git a/src/user/user_model.cc b/src/user/user_model.cc index b96189be..178dbdd7 100644 --- a/src/user/user_model.cc +++ b/src/user/user_model.cc @@ -2952,6 +2952,7 @@ void mjCModel::StoreKeyframes() { for (auto key : keys_) { mjKeyInfo info; info.name = prefix + key->name + suffix; + info.time = key->spec.time; info.qpos = !key->spec_qpos_.empty(); info.qvel = !key->spec_qvel_.empty(); info.act = !key->spec_act_.empty(); @@ -3529,6 +3530,7 @@ void mjCModel::ResolveKeyframes(const mjModel* m) { for (const auto& info : key_pending_) { mjCKey* key = (mjCKey*)FindObject(mjOBJ_KEY, info.name); key->name = info.name; + key->spec.time = info.time; if (info.qpos) key->spec_qpos_.assign(nq, 0); if (info.qvel) key->spec_qvel_.assign(nv, 0); if (info.act) key->spec_act_.assign(na, 0); diff --git a/src/user/user_model.h b/src/user/user_model.h index 8b004b79..ed7ef8cc 100644 --- a/src/user/user_model.h +++ b/src/user/user_model.h @@ -36,6 +36,7 @@ typedef std::array mjListKeyMap; typedef struct mjKeyInfo_ { std::string name; + double time; bool qpos; bool qvel; bool act; diff --git a/test/user/user_api_test.cc b/test/user/user_api_test.cc index 9024be04..795503da 100644 --- a/test/user/user_api_test.cc +++ b/test/user/user_api_test.cc @@ -430,8 +430,8 @@ static constexpr char xml_child[] = R"( - - + + )"; @@ -501,10 +501,10 @@ TEST_F(MujocoTest, AttachSame) { - - - - + + + + )"; @@ -621,8 +621,8 @@ TEST_F(MujocoTest, AttachDifferent) { - - + + )"; @@ -743,8 +743,8 @@ TEST_F(MujocoTest, AttachFrame) { - - + + )";