Exemplo n.º 1
0
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;
}