78 :
public rviz_common::MessageFilterDisplay<navmap_ros_interfaces::msg::NavMap>
82 using MFDClass = rviz_common::MessageFilterDisplay<navmap_ros_interfaces::msg::NavMap>;
83 using NavMapMsg = navmap_ros_interfaces::msg::NavMap;
84 using NavMapLayerMsg = navmap_ros_interfaces::msg::NavMapLayer;
91 void reset()
override;
99 void updateLayerUpdateTopic();
100 void onLayerSelectionChanged();
101 void onDrawNormalsChanged();
102 void onDrawLinksChanged();
103 void onAlphaChanged();
104 void onNormalScaleChanged();
105 void onColorSchemeChanged();
109 void subscribeToLayerTopic();
110 void unsubscribeToLayerTopic();
111 void incomingLayer(
const NavMapLayerMsg::ConstSharedPtr & msg);
114 void rebuildLayerIndex_();
115 std::string currentSelectedLayer_()
const;
116 void repopulateLayerEnum_();
117 void applyOrCacheLayer_(
const NavMapLayerMsg & layer);
120 void updateGeometry_();
121 void updateNormals_();
123 void updateColorSchemeOptions_();
126 void ensureMeshBuilt_();
128 void updateColorsOnly_();
132 rviz_common::properties::EnumProperty * layer_property_{
nullptr};
133 rviz_common::properties::RosTopicProperty * layer_topic_property_{
nullptr};
134 rviz_common::properties::QosProfileProperty * layer_profile_property_{
nullptr};
135 rviz_common::properties::EnumProperty * color_scheme_property_{
nullptr};
136 rviz_common::properties::BoolProperty * draw_normals_property_{
nullptr};
137 rviz_common::properties::BoolProperty * draw_links_property_{
nullptr};
138 rviz_common::properties::FloatProperty * normal_scale_property_{
nullptr};
139 rviz_common::properties::FloatProperty * alpha_property_{
nullptr};
140 rviz_common::properties::StringProperty * info_property_{
nullptr};
143 rclcpp::QoS layer_profile_{rclcpp::QoS(5)};
144 rclcpp::Subscription<NavMapLayerMsg>::SharedPtr layer_subscription_;
145 rclcpp::Time layer_subscription_start_time_;
148 std::uint64_t navmap_msg_count_{0};
149 std::uint64_t layer_update_count_{0};
150 rclcpp::Time last_navmap_stamp_;
151 rclcpp::Time last_layer_stamp_;
154 NavMapMsg::SharedPtr last_msg_;
155 std::unordered_map<std::string, const NavMapLayerMsg *> layers_by_name_;
158 Ogre::SceneNode * root_node_{
nullptr};
159 Ogre::ManualObject * normals_obj_{
nullptr};
160 Ogre::ManualObject * links_obj_{
nullptr};
163 Ogre::Entity * entity_{
nullptr};
164 Ogre::SharedPtr<Ogre::Mesh> mesh_;
165 Ogre::HardwareVertexBufferSharedPtr colour_vbuf_;
166 uint16_t colour_vbuf_source_{0};
167 bool mesh_built_{
false};