Add mjs_findKeyframe.
PiperOrigin-RevId: 649036650 Change-Id: If514d5c333dd6084af9509324fd658c72576d7b5
This commit is contained in:
committed by
Copybara-Service
parent
8f16b72f44
commit
9107d3b507
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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* {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user