// TODO: Should merge the smaller vector into the larger.
// Also: Maybe check if two boids are close instead of the leaders.
// Also: might give vector out of range in some cases! Fix!
void ManageChasersAndEvaders::mergeFlocks(Camera *cam)
{
  float mergeThreshold = 35.0;
  
  for(uint i = 0; i < flocks.size(); i++)
    {
      for(uint j = 0; j < flocks.size(); j++)
	{
	  if(i != j && Norm(flocks.at(j)->leader.position - flocks.at(i)->leader.position) < mergeThreshold && i < j)
	    {
	      if(cam->flockIndex == flocks.at(j)->flockIndex)
		cam->flockIndex = flocks.at(i)->flockIndex;
	      vectorAppend(&flocks.at(i)->evaderVector,&flocks.at(j)->evaderVector);
	      flocks.erase(flocks.begin()+j);
	    }  
	}
    }
}
Exemplo n.º 2
0
void addTempCallLocalRef(CallTempStruct* call, jobject obj) {
	vectorAppend(&call->localRefsToCleanup, obj);
}