bool DelPoly() { if (poly_.size() == Settings::MinPolygons) return false; int idx = RangeRand(poly_.size()); PolyIt it = poly_.begin(); std::advance(it, idx); poly_.erase(it); return true; }
void dtEndComplexShape() { if (currentComplex->getBase().getPointer() == 0) { Point *ptr = new Point[pointBuf.size()]; copy(pointBuf.begin(), pointBuf.end(), ptr); currentComplex->setBase(ptr, true); pointBuf.erase(pointBuf.begin(), pointBuf.end()); } currentComplex->finish(polyList.size(), &polyList[0]); polyList.erase(polyList.begin(), polyList.end()); complexList.push_back(currentComplex); currentComplex = 0; }
bool MovePoly() { int origpos = RangeRand(poly_.size()); int newpos = RangeRand(poly_.size()); if (newpos == origpos) return false; PolyIt it = poly_.begin(); std::advance(it, origpos); DnaPolygon p(*it); poly_.erase(it); it = poly_.begin(); std::advance(it, newpos); poly_.insert(it, p); return true; }