greatGathering.cc
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00024 #include "greatGathering.h"
00025
00026 greatGathering::greatGathering(double areaDimension, double speed, NeighborMap *Neighbors, GlobalCoordinator* coordinator, CollisionList* CollisionRect)
00027 :MovementGenerator(areaDimension, speed, Neighbors, coordinator, CollisionRect)
00028 {
00029 if(coordinator->getPeerCount() == 0) {
00030 target.x = uniform(areaDimension / 3, 2 * areaDimension / 3);
00031 target.y = uniform(areaDimension / 3, 2 * areaDimension / 3);
00032 coordinator->increasePositionSize();
00033 coordinator->setPosition(0, target);
00034 coordinator->increasePeerCount();
00035 }
00036 else {
00037 target = coordinator->getPosition(0);
00038 }
00039 }
00040
00041 void greatGathering::move()
00042 {
00043 flock();
00044 position += direction * speed;
00045 if(testBounds()) {
00046 position += direction * speed * 2;
00047 testBounds();
00048 }
00049 }