Add mjs_findKeyframe.

PiperOrigin-RevId: 649036650
Change-Id: If514d5c333dd6084af9509324fd658c72576d7b5
This commit is contained in:
Alessio Quaglino
2024-07-03 05:16:44 -07:00
committed by Copybara-Service
parent 8f16b72f44
commit 9107d3b507
7 changed files with 53 additions and 0 deletions
+9
View File
@@ -4113,6 +4113,15 @@ mjs_findFrame
Find frame by name.
.. _mjs_findKeyframe:
mjs_findKeyframe
~~~~~~~~~~~~~~~~
.. mujoco-include:: mjs_findKeyframe
Find keyframe by name.
.. _mjs_getDefault:
mjs_getDefault
+1
View File
@@ -3544,6 +3544,7 @@ mjsBody* mjs_findBody(mjSpec* s, const char* name);
mjsBody* mjs_findChild(mjsBody* body, const char* name);
mjsMesh* mjs_findMesh(mjSpec* s, const char* name);
mjsFrame* mjs_findFrame(mjSpec* s, const char* name);
mjsKey* mjs_findKeyframe(mjSpec* s, const char* name);
mjsDefault* mjs_getDefault(mjsElement* element);
mjsDefault* mjs_findDefault(mjSpec* s, const char* classname);
mjsDefault* mjs_getSpecDefault(mjSpec* s);
+3
View File
@@ -1530,6 +1530,9 @@ MJAPI mjsMesh* mjs_findMesh(mjSpec* s, const char* name);
// Find frame by name.
MJAPI mjsFrame* mjs_findFrame(mjSpec* s, const char* name);
// Find keyframe by name.
MJAPI mjsKey* mjs_findKeyframe(mjSpec* s, const char* name);
// Get default corresponding to an element.
MJAPI mjsDefault* mjs_getDefault(mjsElement* element);
+22
View File
@@ -9703,6 +9703,28 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
),
doc='Find frame by name.',
)),
('mjs_findKeyframe',
FunctionDecl(
name='mjs_findKeyframe',
return_type=PointerType(
inner_type=ValueType(name='mjsKey'),
),
parameters=(
FunctionParameterDecl(
name='s',
type=PointerType(
inner_type=ValueType(name='mjSpec'),
),
),
FunctionParameterDecl(
name='name',
type=PointerType(
inner_type=ValueType(name='char', is_const=True),
),
),
),
doc='Find keyframe by name.',
)),
('mjs_getDefault',
FunctionDecl(
name='mjs_getDefault',
+6
View File
@@ -144,6 +144,12 @@ PYBIND11_MODULE(_specs, m) {
return mjs_findFrame(self.ptr, name.c_str());
},
py::return_value_policy::reference_internal);
mjSpec.def(
"find_keyframe",
[](MjSpec& self, std::string& name) -> raw::MjsKey* {
return mjs_findKeyframe(self.ptr, name.c_str());
},
py::return_value_policy::reference_internal);
mjSpec.def(
"find_default",
[](MjSpec& self, std::string& classname) -> raw::MjsDefault* {
+9
View File
@@ -530,6 +530,15 @@ mjsFrame* mjs_findFrame(mjSpec* s, const char* name) {
// find keyframe by name
mjsKey* mjs_findKeyframe(mjSpec* s, const char* name) {
mjCModel* model = static_cast<mjCModel*>(s->element);
mjCKey* key = (mjCKey*)model->FindObject(mjOBJ_KEY, std::string(name));
return key ? &(static_cast<mjCKey*>(key)->spec) : nullptr;
}
// set frame
void mjs_setFrame(mjsElement* dest, mjsFrame* frame) {
if (!frame) {
+3
View File
@@ -194,6 +194,9 @@ MJAPI mjsMesh* mjs_findMesh(mjSpec* s, const char* name);
// Find frame by name.
MJAPI mjsFrame* mjs_findFrame(mjSpec* s, const char* name);
// Find keyframe by name.
MJAPI mjsKey* mjs_findKeyframe(mjSpec* s, const char* name);
// Get default corresponding to an element.
MJAPI mjsDefault* mjs_getDefault(mjsElement* element);