Changeset 10244 in orxonox.OLD for branches/ai/src/ai/ai_swarm.cc
- Timestamp:
- Jan 17, 2007, 12:43:30 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ai/src/ai/ai_swarm.cc
r10226 r10244 14 14 */ 15 15 #define DEBUG_SPECIAL_MODULE DEBUG_MODULE_AI 16 #include " ai_swarm.h"16 #include "swarm_gorel.h" 17 17 #include "ai_module.h" 18 18 #include "movement_module.h" … … 33 33 std::map<WorldEntity*,AIModule*>::iterator it; 34 34 35 if(enemys==NULL || enemys->size()<1)return; 36 target=enemys->at(0); 37 35 38 Vector swarmPosition=this->getPosition(); 36 39 Vector targetPosition=target->getAbsCoor(); … … 78 81 79 82 80 83 destination=taskRelObject->getAbsCoor()+taskRelPos; 81 84 Vector correction=(destination+randomVector-swarmPosition)-movement; 82 85 correction.y=0; … … 100 103 } 101 104 } 102 103 104 105 void AISwarm::addAI(WorldEntity* npc)106 {107 std::pair< std::map<WorldEntity*,AIModule*>::iterator , bool > p;108 AIModule* newAIModule=new MovementModule(npc);109 p=members.insert(std::make_pair(npc,newAIModule));110 if(!p.second)delete newAIModule;111 }112 113 114 void AISwarm::removeAI(WorldEntity* npc)115 {116 std::map<WorldEntity*,AIModule*>::iterator it = members.find(npc);117 if(it==members.end())return; //npc not found118 delete it->second; //delete AIModule119 members.erase(it); //remove AIModule from members120 }121 122 123 Vector AISwarm::getPosition()124 {125 Vector center=Vector(0,0,0);126 std::map<WorldEntity*,AIModule*>::iterator it;127 for (it= members.begin(); it!= members.end(); it++ )128 center=center+it->second->getPosition();129 130 return center/members.size();131 }132 133 float AISwarm::getRadius(WorldEntity* object)134 {135 AABB* aabb = object->getModelAABB();136 if( aabb == NULL)return -1;137 138 float a = aabb->halfLength[0];139 float b = aabb->halfLength[1];140 float c = aabb->halfLength[2];141 142 if(a>b){143 return (c>a)?c:a;144 }else{145 return (c>b)?c:b;146 }147 }
Note: See TracChangeset
for help on using the changeset viewer.