Add defaults to SDF plugin attributes.

Expose diameter and number of teeth for the gear SDF.

PiperOrigin-RevId: 577779297
Change-Id: Iec5890ab7f39080b395cf06a76f9c2216f4f39ed
This commit is contained in:
Alessio Quaglino
2023-10-30 03:08:41 -07:00
committed by Copybara-Service
parent c921c3956e
commit 50843cad30
18 changed files with 341 additions and 97 deletions
+9 -9
View File
@@ -21,7 +21,6 @@
#include <functional>
#include <memory>
#include <optional>
#include <stdexcept>
#include <string>
#include <unordered_map>
#include <utility>
@@ -303,15 +302,16 @@ void mjCMesh::LoadSDF() {
throw mjCError(this, "plugin '%s' does not support signed distance fields", plugin->name);
}
int i=0;
std::vector<mjtNum> attributes(plugin->nattribute, 0);
for (auto const& pair : plugin_instance->config_attribs) {
try {
attributes[i++] = std::stod(pair.second);
} catch (const std::invalid_argument& e) {
throw mjCError(this, "invalid attribute value for '%s'",
pair.first.c_str());
}
std::vector<const char*> names(plugin->nattribute, 0);
std::vector<const char*> values(plugin->nattribute, 0);
for (int i=0; i < plugin->nattribute; i++) {
names[i] = plugin->attributes[i];
values[i] = plugin_instance->config_attribs[names[i]].c_str();
}
if (plugin->sdf_attribute) {
plugin->sdf_attribute(attributes.data(), names.data(), values.data());
}
mjtNum aabb[6] = {0};