Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "PathPainter.h"
00012
00013 #include "Messages/PathDataM.h"
00014
00015 #include <QtOpenGL>
00016 #include <GL/glut.h>
00017
00018
00019 #define THIS PathPainter
00020
00021 THIS::THIS() : PainterPlugin( )
00022 {
00023 setName ( "Path (Navigation)" );
00024 }
00025
00026
00027 THIS::~THIS()
00028 {
00029 }
00030
00031
00032 void THIS::processMessage ( Message* newMessage )
00033 {
00034 PainterPlugin::processMessage ( newMessage );
00035 switch ( newMessage->getType() )
00036 {
00037 case MessageTypes::PATH_DATA_M:
00038 {
00039 PathDataM* message = Message::castTo<PathDataM> ( newMessage );
00040 if ( message )
00041 {
00042 m_PathXCoordinates = message->getXCoords();
00043 m_PathYCoordinates = message->getYCoords();
00044 requestRedraw();
00045 }
00046 break;
00047 }
00048
00049 default:
00050 break;
00051
00052 }
00053 }
00054
00055 void THIS::paint ( float next2DLayer )
00056 {
00057 if ( m_PathYCoordinates.size() == 0 )
00058 {
00059 return;
00060 }
00061
00062 glTranslatef ( 0.0, 0.0, next2DLayer );
00063
00064 glBegin ( GL_LINE_STRIP );
00065 glColor3f ( 1.0, 0.0, 1.0 );
00066 glLineWidth ( 3 );
00067 for ( unsigned int i = 0; i < m_PathXCoordinates.size(); i++ )
00068 {
00069 glVertex3f ( m_PathXCoordinates[i], m_PathYCoordinates[i], 0.0 );
00070 }
00071 glEnd();
00072
00073 for ( unsigned int i = 0; i < m_PathXCoordinates.size(); i++ )
00074 {
00075 glBegin ( GL_POLYGON );
00076 for ( float alpha = 0; alpha < 2 * M_PI; alpha += M_PI / 8 )
00077 {
00078 glVertex3f ( m_PathXCoordinates[i] + 50.0 * sin ( alpha ), m_PathYCoordinates[i] + 50.0 * cos ( alpha ), 0.0 );
00079 }
00080 glEnd();
00081 }
00082 }
00083
00084 #undef THIS