- Timestamp:
- Jul 13, 2005, 6:25:44 PM (19 years ago)
- Location:
- orxonox/trunk/src/lib/graphics/render2D
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
orxonox/trunk/src/lib/graphics/render2D/element_2d.cc
r4843 r4847 31 31 Element2D::Element2D () 32 32 { 33 this->setClassID(CL_ELEMENT_2D, "Element2D"); 34 35 Render2D::getInstance()->registerElement2D(this); 33 this->init(); 36 34 } 37 35 … … 46 44 47 45 46 void Element2D::init() 47 { 48 this->setClassID(CL_ELEMENT_2D, "Element2D"); 49 50 Render2D::getInstance()->registerElement2D(this); 51 52 } 53 48 54 /** 49 55 * this sets the position of the Element on the screen. 56 * Use this in the your tick function, if you want the element to be automatically positioned. 50 57 */ 51 58 void Element2D::positioning() 52 59 { 53 60 // setting the Position of this ELEM2D. 54 Vector pos;55 61 if (this->bindNode) 56 62 { 57 GLdouble x = this->bindNode->getAbsCoor().x;58 GLdouble y = this->bindNode->getAbsCoor().y;59 GLdouble z = this->bindNode->getAbsCoor().z;60 63 GLdouble projectPos[3]; 61 gluProject(x, y, z, GraphicsEngine::modMat, GraphicsEngine::projMat, GraphicsEngine::viewPort, projectPos, projectPos+1, projectPos+2); 62 pos.x = projectPos[0] + this->position2D[0]; 63 pos.y = GraphicsEngine::getInstance()->getResolutionY() - projectPos[1] + this->position2D[1]; 64 pos.z = projectPos[2]; 64 gluProject(this->bindNode->getAbsCoor().x, 65 this->bindNode->getAbsCoor().y, 66 this->bindNode->getAbsCoor().z, 67 GraphicsEngine::modMat, 68 GraphicsEngine::projMat, 69 GraphicsEngine::viewPort, 70 projectPos, 71 projectPos+1, 72 projectPos+2); 73 absPos2D.x = projectPos[0] + this->relPos2D[0]; 74 absPos2D.y = GraphicsEngine::getInstance()->getResolutionY() - projectPos[1] + this->relPos2D[1]; 75 absPos2D.depth = projectPos[2]; 65 76 } 66 77 else 67 78 { 68 pos.x = this->position2D[0];69 pos.y = this->position2D[1];70 pos.z= 0;79 absPos2D.x = this->relPos2D[0]; 80 absPos2D.y = this->relPos2D[1]; 81 absPos2D.depth = 0; 71 82 } 72 73 glPushMatrix();74 83 } 75 84 85 /** 86 * ticks the 2d-Element 87 * @param dt the time elapsed since the last tick 88 */ 89 void Element2D::tick(float dt) 90 { 91 this->positioning(); 92 } -
orxonox/trunk/src/lib/graphics/render2D/element_2d.h
r4843 r4847 24 24 typedef enum 25 25 { 26 ELEM2D_ALIGN_NONE, 26 27 ELEM2D_ALIGN_LEFT, 27 28 ELEM2D_ALIGN_RIGHT, … … 30 31 } ELEM2D_ALIGNMENT; 31 32 33 //! A Struct defining the Position of an Element in 2D-space 34 struct Position2D 35 { 36 float x; //!< The x-coordinate. 37 float y; //!< The y-coordinate. 38 float depth; //!< The distance from the viewing plane. 39 40 }; 32 41 33 42 //! A class for ... … … 38 47 virtual ~Element2D(); 39 48 40 41 49 void setPosition(int xCoord, int yCoord); 42 50 void setLayer(E2DLayer layer); 51 /** @param visible true if the Element should be visible false otherwise (will not be rendered) */ 52 inline void setVisibility(bool visible) { this->visible = visible; }; 53 /** @param bindNode the Node this 2D-element should follow. if NULL the Element will not follow anything */ 54 inline void setBindNode(const PNode* bindNode) { this->bindNode = bindNode; }; 43 55 56 /** @returns the visibility state */ 57 inline bool isVisible() { return this->visible; }; 44 58 45 59 void positioning(); 60 virtual void tick(float dt); 46 61 virtual void draw() const = NULL; 47 62 63 private: 64 void init(); 65 48 66 private: 49 bool visible; 50 int position2D[2]; //!< X-coord, Y-Coord 51 E2DLayer layer; 67 bool visible; 68 int relPos2D[2]; //!< X-coord, Y-Coord (relative to the Coordinates of the alignment if given.) 69 Position2D absPos2D; //!< The absolute position of the 2D-Element. 70 E2DLayer layer; 52 71 53 ELEM2D_ALIGNMENT alignment;54 PNode*bindNode; //!< a node over which to display this 2D-element72 ELEM2D_ALIGNMENT alignment; //!< How the Element is aligned around its Position 73 const PNode* bindNode; //!< a node over which to display this 2D-element 55 74 }; 56 75 -
orxonox/trunk/src/lib/graphics/render2D/render_2d.cc
r4840 r4847 71 71 this->element2DList->remove(element2D); 72 72 } 73 74 75 void Render2D::draw() const 76 { 77 tIterator<Element2D>* iterator = this->element2DList->getIterator(); 78 Element2D* elem = iterator->nextElement(); 79 while (elem != NULL) 80 { 81 if (elem->isVisible()) 82 elem->draw(); 83 elem = iterator->nextElement(); 84 } 85 delete iterator; 86 }
Note: See TracChangeset
for help on using the changeset viewer.