Skip to content

Commit 0218985

Browse files
authored
Merge pull request #2647 from ManifoldFR/topic/visualizers/python-visitor-fix
[python] Fix for getters in VisualizerPythonVisitor
2 parents 5116e9a + bf1ba50 commit 0218985

File tree

2 files changed

+17
-14
lines changed

2 files changed

+17
-14
lines changed

CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
66

77
## [Unreleased]
88

9+
### Fixed
10+
- Fix getters for models and data in `VisualizerPythonVisitor` ([#2647](https://github.com/stack-of-tasks/pinocchio/pull/2647))
11+
912
## [3.5.0] - 2025-04-02
1013

1114
### Added

include/pinocchio/bindings/python/visualizers/visualizer-visitor.hpp

+14-14
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,13 @@ namespace pinocchio
4343
using ::pinocchio::visualizers::ConstVectorRef;
4444
eigenpy::OptionalConverter<ConstVectorRef, boost::optional>::registration();
4545

46+
// convenience macro to use a lambda -- passing &Visualizer::<getter-fun> doesn't work
47+
#define DEF_PROP_PROXY(name) \
48+
add_property( \
49+
#name, \
50+
bp::make_function( \
51+
+[](Visualizer & v) -> auto & { return v.name(); }, bp::return_internal_reference<>()))
52+
4653
cl.def("initViewer", &Visualizer::initViewer)
4754
.def("loadViewerModel", &Visualizer::loadViewerModel)
4855
.def("rebuildData", &Visualizer::rebuildData)
@@ -56,21 +63,14 @@ namespace pinocchio
5663
.def("setCameraPose", setCameraPose_proxy2, (bp::arg("self"), "pose"))
5764
.def("setCameraZoom", &Visualizer::setCameraZoom, (bp::arg("self"), "value"))
5865
.def("clean", &Visualizer::clean, bp::arg("self"))
59-
.add_property(
60-
"model", bp::make_function(&Visualizer::model, bp::return_internal_reference<>()))
61-
.add_property(
62-
"visualModel",
63-
bp::make_function(&Visualizer::visualModel, bp::return_internal_reference<>()))
64-
.add_property(
65-
"collisionModel",
66-
bp::make_function(&Visualizer::collisionModel, bp::return_internal_reference<>()))
6766
.def("hasExternalData", &Visualizer::hasExternalData)
68-
.add_property(
69-
"data", +[](Visualizer & v) { return std::ref(v.data()); })
70-
.add_property(
71-
"visualData", +[](Visualizer & v) { return std::ref(v.visualData()); })
72-
.add_property(
73-
"collisionData", +[](Visualizer & v) { return std::ref(v.collisionData()); });
67+
.DEF_PROP_PROXY(model)
68+
.DEF_PROP_PROXY(visualModel)
69+
.DEF_PROP_PROXY(collisionModel)
70+
.DEF_PROP_PROXY(data)
71+
.DEF_PROP_PROXY(visualData)
72+
.DEF_PROP_PROXY(collisionData);
73+
#undef DEF_PROP_PROXY
7474
}
7575
};
7676

0 commit comments

Comments
 (0)