00001 #ifndef ROUTINGRENDERABLE_H_ 00002 #define ROUTINGRENDERABLE_H_ 00003 00004 #include "irender.h" 00005 #include <list> 00006 #include "RoutingLump.h" 00007 00008 namespace routing 00009 { 00010 class RoutingRenderableEntry 00011 { 00012 private: 00013 RoutingLumpEntry _data; 00014 void renderWireframe (void) const; 00015 void renderAccessability (RenderStateFlags state) const; 00016 void renderConnections (void) const; 00017 void renderConnection (EDirection direction) const; 00018 public: 00019 RoutingRenderableEntry (const RoutingLumpEntry& data) : 00020 _data(data) 00021 { 00022 } 00023 00024 void render (RenderStateFlags state) const; 00025 00026 bool isForLevel (int level) const; 00027 }; 00028 00029 typedef std::list<RoutingRenderableEntry*> RoutingRenderableEntries; 00030 00031 class RoutingRenderable: public OpenGLRenderable 00032 { 00033 private: 00034 RoutingRenderableEntries _entries; 00035 mutable int _glListID; 00036 bool _showAllLowerLevels; 00037 void checkClearGLCache (void); 00038 00039 public: 00040 RoutingRenderable (); 00041 00042 ~RoutingRenderable (); 00043 00046 void render (RenderStateFlags flags) const; 00047 00048 void setShowAllLowerLevels (bool showAllLowerLevels); 00049 00052 void add (const RoutingLumpEntry& data); 00054 void clear (); 00055 }; 00056 } 00057 00058 #endif /* ROUTINGRENDERABLE_H_ */