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