Changeset 6142 in orxonox.OLD for trunk/src/lib/collision_detection
- Timestamp:
- Dec 16, 2005, 7:13:57 PM (19 years ago)
- Location:
- trunk/src/lib/collision_detection
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/collision_detection/cd_engine.cc
r6022 r6142 65 65 be able to enhance iteration speed. 66 66 */ 67 void CDEngine::checkCollisions()68 {69 this->checkCollisionObjects();67 //void CDEngine::checkCollisions() 68 //{ 69 // this->checkCollisionObjects(); 70 70 //this->checkCollisionGround(); 71 } 72 73 #include "class_list.h" 74 #include "state.h" 71 //} 72 75 73 /** 76 74 * this checks the collisions with the objects 77 75 */ 78 void CDEngine::checkCollisionObjects() 76 //void CDEngine::checkCollisionObjects() 77 //{ 78 // BVTree* tree; 79 // tIterator<WorldEntity>* iterator1 = entityList->getIterator(); 80 // tIterator<WorldEntity>* iterator2 = entityList->getIterator(); 81 // WorldEntity* entity1 = iterator1->firstElement(); 82 // WorldEntity* entity2 = iterator2->iteratorElement(iterator1); 83 // PRINTF(3)("checking for collisions\n"); 84 // while( entity1 != NULL) 85 // { 86 // if( likely(entity1 != this->terrain)) 87 // { 88 // entity2 = iterator2->nextElement(); 89 // 90 // while( entity2 != NULL) 91 // { 92 // if( likely(entity2 != this->terrain)) 93 // { 94 // PRINTF(4)("checking object %s against %s\n", entity1->getName(), entity2->getName()); 95 // tree = entity1->getOBBTree(); 96 // if( likely(tree != NULL) && entity2->getOBBTree() != NULL) tree->collideWith(entity1, entity2); 97 // } 98 // entity2 = iterator2->nextElement(); 99 // } 100 // } 101 // entity1 = iterator1->nextElement(); 102 // entity2 = iterator2->iteratorElement(iterator1); 103 // entity2 = iterator2->nextElement(); 104 // } 105 // delete iterator1; 106 // delete iterator2; 107 //} 108 109 void CDEngine::checkCollisions(std::list<WorldEntity*>& list1, std::list<WorldEntity*>& list2) 79 110 { 80 111 BVTree* tree; 81 tIterator<WorldEntity>* iterator1 = entityList->getIterator(); 82 tIterator<WorldEntity>* iterator2 = entityList->getIterator(); 83 WorldEntity* entity1 = iterator1->firstElement(); 84 WorldEntity* entity2 = iterator2->iteratorElement(iterator1); 112 std::list<WorldEntity*>::iterator entity1, entity2, pre1, pre2; 85 113 PRINTF(3)("checking for collisions\n"); 86 while( entity1 != NULL) 114 115 pre1 = list1.begin(); 116 while (pre1 != list1.end()) 87 117 { 88 if( likely(entity1 != this->terrain)) 118 entity1 = pre1++; 119 if( likely((*entity1) != this->terrain)) 89 120 { 90 entity2 = iterator2->nextElement(); 91 92 while( entity2 != NULL) 121 pre2 = list2.begin(); 122 while (pre2 != list2.end()) 93 123 { 94 if( likely(entity2 != this->terrain)) 124 entity2 = pre2++; 125 if( likely((*entity2) != this->terrain)) 95 126 { 96 PRINTF(4)("checking object %s against %s\n", entity1->getName(), entity2->getName());97 tree = entity1->getOBBTree();98 if( likely(tree != NULL) && entity2->getOBBTree() != NULL) tree->collideWith(entity1,entity2);127 PRINTF(4)("checking object %s against %s\n", (*entity1)->getName(), (*entity2)->getName()); 128 tree = (*entity1)->getOBBTree(); 129 if( likely(tree != NULL) && (*entity2)->getOBBTree() != NULL) tree->collideWith(*entity1, *entity2); 99 130 } 100 entity2 = iterator2->nextElement();101 131 } 102 132 } 103 entity1 = iterator1->nextElement();104 entity2 = iterator2->iteratorElement(iterator1);105 entity2 = iterator2->nextElement();106 133 } 107 delete iterator1;108 delete iterator2;109 134 } 110 135 … … 134 159 /* this would operate on worldList bases, for testing purposes, we only use one OBBTree */ 135 160 //this->rootTree->drawBV(depth, drawMode); 136 137 tIterator<WorldEntity>* iterator = entityList->getIterator();161 /// FIXME 162 /* tIterator<WorldEntity>* iterator = entityList->getIterator(); 138 163 WorldEntity* entity = iterator->firstElement(); 139 164 while( entity != NULL) … … 142 167 entity = iterator->nextElement(); 143 168 } 144 delete iterator; 169 delete iterator;*/ 145 170 } 146 171 -
trunk/src/lib/collision_detection/cd_engine.h
r6022 r6142 12 12 #include "model.h" 13 13 14 #include <list> 14 15 15 template<class T> class tList;16 16 class WorldEntity; 17 17 class OBBTree; … … 49 49 inline void disable(const int options) { int temp = this->state & options; this->state ^= temp; } 50 50 51 inline void setEntityList(tList<WorldEntity>* entityList) { this->entityList = entityList; }52 51 inline void setTerrain(Terrain* terrain) { this->terrain = terrain; } 53 52 // inline void setPlayer(Player* player) { this->player = player; } /* only for debug purposes \todo: delete*/ … … 55 54 void drawBV(int depth, int drawMode) const; 56 55 57 void checkCollisions(); 56 // void checkCollisions(); 57 void checkCollisions(std::list<WorldEntity*>& list1, std::list<WorldEntity*>& list2); 58 58 59 59 void debug(); … … 75 75 private: 76 76 int state; //!< the current state of the cd engine 77 tList<WorldEntity>* entityList; //!< pointer to the world entity list78 77 OBBTree* rootTree; //!< for testing purposes a root tree 79 78
Note: See TracChangeset
for help on using the changeset viewer.