Add mjs_getPluginAttributes.
PiperOrigin-RevId: 752691116 Change-Id: Ib503a99f8d10661b8bf92410ccf471420f924986
This commit is contained in:
committed by
Copybara-Service
parent
2545ec5383
commit
3e9d130092
@@ -4401,6 +4401,15 @@ Get string contents.
|
|||||||
|
|
||||||
Get double array contents and optionally its size.
|
Get double array contents and optionally its size.
|
||||||
|
|
||||||
|
.. _mjs_getPluginAttributes:
|
||||||
|
|
||||||
|
`mjs_getPluginAttributes <#mjs_getPluginAttributes>`__
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. mujoco-include:: mjs_getPluginAttributes
|
||||||
|
|
||||||
|
Get plugin attributes.
|
||||||
|
|
||||||
.. _SpecUtilities:
|
.. _SpecUtilities:
|
||||||
|
|
||||||
Spec utilities
|
Spec utilities
|
||||||
|
|||||||
@@ -3686,6 +3686,7 @@ void mjs_setDouble(mjDoubleVec* dest, const double* array, int size);
|
|||||||
void mjs_setPluginAttributes(mjsPlugin* plugin, void* attributes);
|
void mjs_setPluginAttributes(mjsPlugin* plugin, void* attributes);
|
||||||
const char* mjs_getString(const mjString* source);
|
const char* mjs_getString(const mjString* source);
|
||||||
const double* mjs_getDouble(const mjDoubleVec* source, int* size);
|
const double* mjs_getDouble(const mjDoubleVec* source, int* size);
|
||||||
|
const void* mjs_getPluginAttributes(const mjsPlugin* plugin);
|
||||||
void mjs_setDefault(mjsElement* element, const mjsDefault* def);
|
void mjs_setDefault(mjsElement* element, const mjsDefault* def);
|
||||||
int mjs_setFrame(mjsElement* dest, mjsFrame* frame);
|
int mjs_setFrame(mjsElement* dest, mjsFrame* frame);
|
||||||
const char* mjs_resolveOrientation(double quat[4], mjtByte degree, const char* sequence,
|
const char* mjs_resolveOrientation(double quat[4], mjtByte degree, const char* sequence,
|
||||||
|
|||||||
@@ -1622,6 +1622,9 @@ MJAPI const char* mjs_getString(const mjString* source);
|
|||||||
// Get double array contents and optionally its size.
|
// Get double array contents and optionally its size.
|
||||||
MJAPI const double* mjs_getDouble(const mjDoubleVec* source, int* size);
|
MJAPI const double* mjs_getDouble(const mjDoubleVec* source, int* size);
|
||||||
|
|
||||||
|
// Get plugin attributes.
|
||||||
|
MJAPI const void* mjs_getPluginAttributes(const mjsPlugin* plugin);
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------- Spec utilities ------------------------------------------------
|
//---------------------------------- Spec utilities ------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
@@ -10298,6 +10298,22 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
|||||||
),
|
),
|
||||||
doc='Get double array contents and optionally its size.',
|
doc='Get double array contents and optionally its size.',
|
||||||
)),
|
)),
|
||||||
|
('mjs_getPluginAttributes',
|
||||||
|
FunctionDecl(
|
||||||
|
name='mjs_getPluginAttributes',
|
||||||
|
return_type=PointerType(
|
||||||
|
inner_type=ValueType(name='void', is_const=True),
|
||||||
|
),
|
||||||
|
parameters=(
|
||||||
|
FunctionParameterDecl(
|
||||||
|
name='plugin',
|
||||||
|
type=PointerType(
|
||||||
|
inner_type=ValueType(name='mjsPlugin', is_const=True),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
doc='Get plugin attributes.',
|
||||||
|
)),
|
||||||
('mjs_setDefault',
|
('mjs_setDefault',
|
||||||
FunctionDecl(
|
FunctionDecl(
|
||||||
name='mjs_setDefault',
|
name='mjs_setDefault',
|
||||||
|
|||||||
+11
-3
@@ -1034,8 +1034,15 @@ PYBIND11_MODULE(_specs, m) {
|
|||||||
[](raw::MjsPlugin& self) { mjs_delete(self.element); });
|
[](raw::MjsPlugin& self) { mjs_delete(self.element); });
|
||||||
mjsPlugin.def_property(
|
mjsPlugin.def_property(
|
||||||
"config",
|
"config",
|
||||||
[](raw::MjsPlugin& self) -> void {
|
[](raw::MjsPlugin& self) -> py::dict {
|
||||||
throw pybind11::value_error("Reading plugin config is not supported.");
|
const std::map<std::string, std::string, std::less<>>* config_attribs =
|
||||||
|
static_cast<const std::map<std::string, std::string, std::less<>>*>(
|
||||||
|
mjs_getPluginAttributes(&self));
|
||||||
|
py::dict config;
|
||||||
|
for (const auto& [key, value] : *config_attribs) {
|
||||||
|
config[py::str(key)] = value;
|
||||||
|
}
|
||||||
|
return config;
|
||||||
},
|
},
|
||||||
[](raw::MjsPlugin& self, py::dict& config) {
|
[](raw::MjsPlugin& self, py::dict& config) {
|
||||||
std::map<std::string, std::string, std::less<>> config_attribs;
|
std::map<std::string, std::string, std::less<>> config_attribs;
|
||||||
@@ -1047,7 +1054,8 @@ PYBIND11_MODULE(_specs, m) {
|
|||||||
config_attribs[key_str] = value.cast<std::string>();
|
config_attribs[key_str] = value.cast<std::string>();
|
||||||
}
|
}
|
||||||
mjs_setPluginAttributes(&self, &config_attribs);
|
mjs_setPluginAttributes(&self, &config_attribs);
|
||||||
});
|
},
|
||||||
|
py::return_value_policy::reference_internal);
|
||||||
// ============================= MJVISUAL ====================================
|
// ============================= MJVISUAL ====================================
|
||||||
mjVisual.def_property(
|
mjVisual.def_property(
|
||||||
"global_",
|
"global_",
|
||||||
|
|||||||
@@ -844,6 +844,7 @@ class SpecsTest(absltest.TestCase):
|
|||||||
info='info'
|
info='info'
|
||||||
)
|
)
|
||||||
plugin.config = {'twist': '10', 'bend': '1'}
|
plugin.config = {'twist': '10', 'bend': '1'}
|
||||||
|
self.assertEqual(plugin.config, {'twist': '10', 'bend': '1'})
|
||||||
|
|
||||||
body = spec.worldbody.add_body()
|
body = spec.worldbody.add_body()
|
||||||
body.plugin = plugin
|
body.plugin = plugin
|
||||||
|
|||||||
@@ -1302,6 +1302,14 @@ void mjs_setPluginAttributes(mjsPlugin* plugin, void* attributes) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// get plugin attributes
|
||||||
|
const void* mjs_getPluginAttributes(const mjsPlugin* plugin) {
|
||||||
|
mjCPlugin* pluginC = static_cast<mjCPlugin*>(plugin->element);
|
||||||
|
return &pluginC->config_attribs;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// -------------------------- GLOBAL ASSET CACHE -------------------------------
|
// -------------------------- GLOBAL ASSET CACHE -------------------------------
|
||||||
|
|
||||||
void mj_setCacheSize(mjCache cache, std::size_t size) {
|
void mj_setCacheSize(mjCache cache, std::size_t size) {
|
||||||
|
|||||||
@@ -352,6 +352,9 @@ MJAPI const char* mjs_getString(const mjString* source);
|
|||||||
// Get double array contents and optionally its size.
|
// Get double array contents and optionally its size.
|
||||||
MJAPI const double* mjs_getDouble(const mjDoubleVec* source, int* size);
|
MJAPI const double* mjs_getDouble(const mjDoubleVec* source, int* size);
|
||||||
|
|
||||||
|
// Get plugin attributes.
|
||||||
|
MJAPI const void* mjs_getPluginAttributes(const mjsPlugin* plugin);
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------- Other utilities -----------------------------------------------
|
//---------------------------------- Other utilities -----------------------------------------------
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user