std::vector<std::string> generateCollisionMap(int numMaps, ... ) { tilemap rv; va_list vl; va_start(vl, numMaps); for (int i = 0; i < numMaps; i++) //iterate maps { if (!i) rv.tiles = getCollisionMap(va_arg( vl, tilemap)); else appendCollisionMap(rv,getCollisionMap(va_arg( vl, tilemap))); } return rv.tiles; }
bool RRT2DColisionTest::setCollisionMap (const char* fieldPath){ // Open file FILE* f = fopen(fieldPath,"rb"); if (!f) { cout<<"[RTT2D setCollisionMap] Error, fichero no encontrado: "<<string(fieldPath)<<endl; return false; } // Read dimensions fread(&collision_map_w,sizeof(int),1,f); fread(&collision_map_h,sizeof(int),1,f); cout<<"Loaded scenario of dimensions: "<<collision_map_w<<" X "<<collision_map_h<<". "<<flush<<endl; // Read data collision_map = (unsigned char*) malloc(collision_map_h*collision_map_w*sizeof(unsigned char)); unsigned int bytesread = fread(getCollisionMap(),sizeof(unsigned char),collision_map_h*collision_map_w*sizeof(unsigned char),f); cout<< bytesread <<" bytes read out of "<< collision_map_h*collision_map_w*sizeof(unsigned char)<<". "<<endl; fclose(f); return true; }
bool RRT2DColisionTest::test_collision(RRTNode *node){ RRT2DConfiguration* c = dynamic_cast<RRT2DConfiguration*>(node->getData()); return (unsigned int) getCollisionMap()[c->getX()+c->getY()*collision_map_w] != (unsigned int) 255; }