00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include "rviz_interaction_tools/line.h"
00031
00032 #include <OGRE/OgreEntity.h>
00033 #include <OGRE/OgreManualObject.h>
00034 #include <OGRE/OgreSceneNode.h>
00035 #include <OGRE/OgreSceneManager.h>
00036
00037 #include <rviz_interaction_tools/unique_string_manager.h>
00038
00039 namespace rviz_interaction_tools {
00040
00041 Line::Line( Ogre::SceneManager* scene_manager, Ogre::SceneNode* scene_node ) :
00042 scene_node_(scene_node),
00043 scene_manager_(scene_manager)
00044 {
00045 rviz_interaction_tools::UniqueStringManager usm;
00046
00047 line_object_ = scene_manager->createManualObject( usm.unique("GripperClickLineIndicator") );
00048 line_object_->setDynamic(true);
00049 line_object_->begin("BaseWhiteNoLighting", Ogre::RenderOperation::OT_LINE_STRIP);
00050 line_object_->position(0.0, 0.0, 0.0);
00051 line_object_->position(0.0, 0.0, 0.0);
00052 line_object_->index(0);
00053 line_object_->index(1);
00054 line_object_->index(0);
00055 line_object_->end();
00056
00057 scene_node_->attachObject(line_object_);
00058 }
00059
00060 Line::~Line()
00061 {
00062 scene_node_->detachObject(line_object_);
00063 scene_manager_->destroyManualObject(line_object_);
00064 }
00065
00066 void Line::setLimits( Ogre::Vector3 start, Ogre::Vector3 end )
00067 {
00068 line_object_->beginUpdate(0);
00069 line_object_->position(start);
00070 line_object_->position(end);
00071 line_object_->index(0);
00072 line_object_->index(1);
00073 line_object_->index(0);
00074 line_object_->end();
00075
00076 Ogre::AxisAlignedBox aabInf;
00077 aabInf.setInfinite();
00078 line_object_->setBoundingBox(aabInf);
00079 }
00080
00081 }