/*! * @file glgui_radar.h * @brief Definition of an Radar, that displays a bar and a Text */ #ifndef _GLGUI_RADAR_H #define _GLGUI_RADAR_H #include "glgui_widget.h" class PNode; class WorldEntity; namespace OrxGui { //! A class for ... class GLGuiRadar : public GLGuiWidget { public: typedef enum { Linear, Exponential, } Attenuation; public: GLGuiRadar(); virtual ~GLGuiRadar(); void addEntityList(const std::list* entityList, const Color& color); void removeEntityList(const std::list* entityList); void setRange(float range); void setCenterNode(const PNode* center); void setUpdateInterval(float updateInterval) { this->_updateInterval = updateInterval; }; void setAttenuation(Attenuation attenuation); float range() const { return this->_range; } void updateRadar(); virtual void tick(float dt); void draw() const; protected: virtual void resize(); virtual void showing(); virtual void hiding(); private: void init(); private: typedef struct { Color dotColor; const std::list* entityList; std::vector positions; } DotList; const PNode* _centerNode; std::vector _dotLists; Attenuation _attenuation; float _range; float _updateInterval; float _timePassed; }; } #endif /* _GLGUI_RADAR_H */