// 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); } } } }
void addTempCallLocalRef(CallTempStruct* call, jobject obj) { vectorAppend(&call->localRefsToCleanup, obj); }