groupRoaming class More...
#include <groupRoaming.h>
Public Member Functions | |
groupRoaming (double areaDimension, double speed, NeighborMap *Neighbors, GlobalCoordinator *coordinator, CollisionList *CollisionRect, int groupSize) | |
virtual | ~groupRoaming () |
virtual void | move () |
Defined in subclasses only. | |
Protected Attributes | |
int | groupNr |
groupRoaming class
Simulates nodes roaming the area in groups.
Definition at line 34 of file groupRoaming.h.
groupRoaming::groupRoaming | ( | double | areaDimension, | |
double | speed, | |||
NeighborMap * | Neighbors, | |||
GlobalCoordinator * | coordinator, | |||
CollisionList * | CollisionRect, | |||
int | groupSize | |||
) |
Definition at line 26 of file groupRoaming.cc.
:MovementGenerator(areaDimension, speed, Neighbors, coordinator, CollisionRect) { groupNr = coordinator->getPeerCount() / groupSize; if((coordinator->getPeerCount() % groupSize) == 0) { target.x = uniform(0.0, areaDimension); target.y = uniform(0.0, areaDimension); coordinator->increasePositionSize(); coordinator->setPosition(groupNr, target); } else { target = coordinator->getPosition(groupNr); } coordinator->increasePeerCount(); }
virtual groupRoaming::~groupRoaming | ( | ) | [inline, virtual] |
Definition at line 38 of file groupRoaming.h.
{}
void groupRoaming::move | ( | ) | [virtual] |
Defined in subclasses only.
Implements MovementGenerator.
Definition at line 45 of file groupRoaming.cc.
{ if(coordinator->getPosition(groupNr) != target) { target = coordinator->getPosition(groupNr); } flock(); position += direction * speed; if(testBounds()) { position += direction * speed * 2; testBounds(); } if(target.distanceSqr(position) < speed * speed) { target.x = uniform(0.0, areaDimension); target.y = uniform(0.0, areaDimension); coordinator->setPosition(groupNr, target); } }
int groupRoaming::groupNr [protected] |
Definition at line 42 of file groupRoaming.h.
Referenced by groupRoaming(), and move().