mapeditor.cpp
changeset 835 31841b366d5e
parent 834 0fad394bc330
child 837 5ecd0462f76b
     1.1 --- a/mapeditor.cpp	Wed Mar 10 15:36:19 2010 +0000
     1.2 +++ b/mapeditor.cpp	Mon Mar 15 11:49:42 2010 +0000
     1.3 @@ -497,6 +497,7 @@
     1.4  */		
     1.5  }
     1.6  
     1.7 +#include <iostream>
     1.8  void MapEditor::autoLayout()
     1.9  {
    1.10  	// Create list with all bounding polygons
    1.11 @@ -559,7 +560,7 @@
    1.12  					if (polygonCollision (polys.at(i),polys.at(j), QPointF(0,0)).intersect )
    1.13  					{
    1.14  						collisions++;
    1.15 -						//qDebug() << "Collision: "<<headings[i]<<" - "<<headings[j];
    1.16 +						if (debug) qDebug() << "Collision: "<<headings[i]<<" - "<<headings[j];
    1.17  						v=polys.at(j).centroid()-polys.at(i).centroid();
    1.18  						// Move also away if centroids are identical
    1.19  						if (v.isNull()) 
    1.20 @@ -570,20 +571,22 @@
    1.21  							//qDebug() << v;
    1.22  						}
    1.23  						v.normalize();
    1.24 -						v.scale (2);
    1.25  						//qDebug() <<  "  v="<<v;
    1.26 -						vectors[j]=v;
    1.27 -						vectors[i]=v;
    1.28 +						vectors[j]=v*10000/polys.at(j).weight();		
    1.29 +						vectors[i]=v*10000/polys.at(i).weight();		
    1.30  						vectors[i].invert();
    1.31 +						//FIXME-3 outer loop, "i" get's changed several times...
    1.32 +						// Better not move away from centroid of 2 colliding polys, but from centroid of _all_
    1.33  					}  
    1.34  				}
    1.35  			}
    1.36  			for (int i=0;i<vectors.size();i++)
    1.37  			{
    1.38  				//qDebug() << " v="<<vectors[i]<<" "<<headings[i];
    1.39 +				if (!vectors[i].isNull() )
    1.40  				polys[i].translate (vectors[i]);
    1.41  			}
    1.42 -			if (debug) qDebug()<< "Collisions: "<<collisions;
    1.43 +			if (debug) qDebug()<< "Collisions total: "<<collisions;
    1.44  			//collisions=0;
    1.45  		}	
    1.46  
    1.47 @@ -593,9 +596,14 @@
    1.48  		{
    1.49  			Vector v=polys[i].at(0)-orgpos[i];
    1.50  			orients.append (mapobjects[i]->getOrientation());
    1.51 -		//	mapobjects[i]->moveBy(v.x(),v.y() );
    1.52 -		//	mapobjects[i]->setRelPos();
    1.53 -			model->startAnimation ((BranchObj*)mapobjects[i], mapobjects[i]->getAbsPos(), mapobjects[i]->getAbsPos() + v);
    1.54 +			if (!v.isNull())
    1.55 +			{
    1.56 +				if (debug) cout<<" Moving "<<polys.at(i).weight()<<" "<<mapobjects[i]->getAbsPos()<<" -> "<<mapobjects[i]->getAbsPos() + v<<"  "<<headings[i].toStdString()<<endl;
    1.57 +				//mapobjects[i]->moveBy(v.x(),v.y() );
    1.58 +				//mapobjects[i]->setRelPos();
    1.59 +				model->startAnimation ((BranchObj*)mapobjects[i], v);
    1.60 +				if (debug) cout<<i<< " Weight: "<<polys.at(i).weight()<<" "<<v<<" "<<headings.at(i).toStdString()<<endl;
    1.61 +			}
    1.62  		}	
    1.63  		/*
    1.64  		model->reposition();	
    1.65 @@ -607,9 +615,9 @@
    1.66  				break;
    1.67  			}
    1.68  		*/
    1.69 +	
    1.70  		break;
    1.71  
    1.72 -
    1.73  		//orientationChanged=false;
    1.74  	} // loop if orientation has changed
    1.75