///*===================================================================== // //QGroundControl Open Source Ground Control Station // //(c) 2009, 2010 QGROUNDCONTROL PROJECT // //This file is part of the QGROUNDCONTROL project // // QGROUNDCONTROL is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // QGROUNDCONTROL is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with QGROUNDCONTROL. If not, see . // //======================================================================*/ /** * @file * @brief Definition of the class Pixhawk3DWidget. * * @author Lionel Heng * */ #ifndef PIXHAWK3DWIDGET_H #define PIXHAWK3DWIDGET_H #include #include #include "Q3DWidget.h" class UASInterface; /** * @brief A 3D View widget which displays vehicle-centric information. **/ class Pixhawk3DWidget : public Q3DWidget { Q_OBJECT public: explicit Pixhawk3DWidget(QWidget* parent = 0); ~Pixhawk3DWidget(); void buildLayout(void); double getTime(void) const; public slots: void setActiveUAS(UASInterface* uas); private slots: void showGrid(int state); void showTrail(int state); void showWaypoints(int state); void recenter(void); void toggleFollowCamera(int state); protected: virtual void display(void); virtual void mousePressEvent(QMouseEvent* event); UASInterface* uas; private: osg::ref_ptr createGrid(void); osg::ref_ptr createTrail(void); osg::ref_ptr createMap(void); osg::ref_ptr createTarget(void); osg::ref_ptr createWaypoints(void); void setupHUD(void); void updateHUD(float robotX, float robotY, float robotZ, float robotRoll, float robotPitch, float robotYaw); void updateTrail(float robotX, float robotY, float robotZ); void updateTarget(void); void updateWaypoints(void); void markTarget(void); bool displayGrid; bool displayTrail; bool displayTarget; bool displayWaypoints; bool followCamera; osg::ref_ptr trailVertices; QVarLengthArray trail; osg::ref_ptr hudBackgroundGeometry; osg::ref_ptr statusText; osg::ref_ptr gridNode; osg::ref_ptr trailNode; osg::ref_ptr trailGeometry; osg::ref_ptr trailDrawArrays; osg::ref_ptr mapNode; osg::ref_ptr targetNode; osg::ref_ptr targetPosition; osg::ref_ptr waypointsNode; QPushButton* targetButton; float lastRobotX, lastRobotY, lastRobotZ; }; #endif // PIXHAWK3DWIDGET_H