Changeset 4862 in orxonox.OLD for orxonox/trunk/src/lib/graphics/render2D/render_2d.cc
- Timestamp:
- Jul 14, 2005, 2:49:33 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
orxonox/trunk/src/lib/graphics/render2D/render_2d.cc
r4849 r4862 23 23 #include "element_2d.h" 24 24 25 #include <math.h> 26 25 27 using namespace std; 26 28 … … 35 37 this->setName("Render2D"); 36 38 37 this->element2DList = new tList<Element2D>; 39 for (int i = 0; i < E2D_LAYER_COUNT; i++) 40 this->element2DList[i] = new tList<Element2D>; 38 41 } 39 42 … … 48 51 Render2D::~Render2D () 49 52 { 50 delete this->element2DList; 53 for (int i = 0; i < E2D_LAYER_COUNT; i++) 54 delete this->element2DList[i]; 51 55 52 56 Render2D::singletonRef = NULL; … … 62 66 void Render2D::registerElement2D(Element2D* element2D) 63 67 { 64 this->element2DList ->add(element2D);68 this->element2DList[(int)log2(E2D_DEFAULT_LAYER)]->add(element2D); 65 69 } 66 70 … … 73 77 void Render2D::unregisterElement2D(Element2D* element2D) 74 78 { 75 this->element2DList ->remove(element2D);79 this->element2DList[(int)log2(element2D->getLayer())]->remove(element2D); 76 80 } 77 81 78 82 83 /** 84 * moves an 2D-Element to another Layer 85 * @param element2D the Element to move 86 * @param to which layer to move it to. 87 */ 88 void Render2D::moveToLayer(Element2D* element2D, E2D_LAYER to) 89 { 90 this->element2DList[(int)log2(element2D->getLayer())]->remove(element2D); 91 this->element2DList[(int)log2(to)]->add(element2D); 92 } 93 94 95 /** 96 * ticks all the 2d-elements 97 * @param dt the timestep since last dt 98 */ 79 99 void Render2D::tick(float dt) 80 100 { 81 tIterator<Element2D>* iterator = this->element2DList->getIterator(); 82 Element2D* elem = iterator->nextElement(); 83 while (elem != NULL) 101 for (int i = 0; i < E2D_LAYER_COUNT; i++) 84 102 { 85 elem->tick(dt); 86 elem = iterator->nextElement(); 103 tIterator<Element2D>* iterator = this->element2DList[i]->getIterator(); 104 Element2D* elem = iterator->nextElement(); 105 while (elem != NULL) 106 { 107 elem->tick(dt); 108 elem = iterator->nextElement(); 109 } 110 delete iterator; 87 111 } 88 delete iterator;89 90 112 } 91 113 … … 93 115 * renders all the Elements of the Render2D-engine 94 116 */ 95 void Render2D::draw( ) const117 void Render2D::draw(unsigned int layer) const 96 118 { 97 119 GraphicsEngine::enter2DMode(); 98 120 99 tIterator<Element2D>* iterator = this->element2DList->getIterator();100 Element2D* elem = iterator->nextElement(); 101 while (elem != NULL)121 int drawLayer = 1; 122 123 for (int i = 0; i < E2D_LAYER_COUNT; i++) 102 124 { 103 if (elem->isVisible()) 104 elem->draw(); 105 elem = iterator->nextElement(); 125 if (layer & drawLayer && this->element2DList[i]->getSize() > 0) 126 { 127 tIterator<Element2D>* iterator = this->element2DList[i]->getIterator(); 128 Element2D* elem = iterator->nextElement(); 129 while (elem != NULL) 130 { 131 if (elem->isVisible()) 132 elem->draw(); 133 elem = iterator->nextElement(); 134 } 135 delete iterator; 136 } 137 drawLayer << 1; 106 138 } 107 delete iterator;108 139 109 140 GraphicsEngine::leave2DMode(); 141 110 142 }
Note: See TracChangeset
for help on using the changeset viewer.