00001 00002 // -*- mode: c++; -*- 00003 #ifndef FOOTSTEP_DISPLAY_H 00004 #define FOOTSTEP_DISPLAY_H 00005 00006 #include <jsk_footstep_msgs/FootstepArray.h> 00007 #include <rviz/message_filter_display.h> 00008 #include <rviz/properties/float_property.h> 00009 #include <rviz/ogre_helpers/billboard_line.h> 00010 #include <rviz/ogre_helpers/shape.h> 00011 #include <OGRE/OgreSceneNode.h> 00012 00013 namespace jsk_rviz_plugin 00014 { 00015 class FootstepDisplay : public rviz::MessageFilterDisplay<jsk_footstep_msgs::FootstepArray> 00016 { 00017 Q_OBJECT 00018 public: 00019 FootstepDisplay(); 00020 virtual ~FootstepDisplay(); 00021 protected: 00022 virtual void onInitialize(); 00023 virtual void reset(); 00024 private Q_SLOTS: 00025 void updateAlpha(); 00026 void updateFootstepSize(); 00027 private: 00028 void processMessage(const jsk_footstep_msgs::FootstepArray::ConstPtr& msg); 00029 bool validateFloats( const jsk_footstep_msgs::FootstepArray& msg ); 00030 rviz::FloatProperty *alpha_property_; 00031 rviz::FloatProperty *width_property_; 00032 rviz::FloatProperty *height_property_; 00033 rviz::FloatProperty *depth_property_; 00034 jsk_footstep_msgs::FootstepArray::ConstPtr latest_footstep_; 00035 typedef boost::shared_ptr<rviz::Shape> ShapePtr; 00036 std::vector<ShapePtr> shapes_; 00037 rviz::BillboardLine* line_; 00038 //Ogre::SceneNode* scene_node_; 00039 }; 00040 } 00041 00042 #endif