+ if(vertices.size()>1 && !vertices.back().smooth)
+ vertices.push_back(vertices.back());
+
+ Vertex v;
+ v.pos = p;
+ v.smooth = (!vertices.empty() && smooth);
+
+ if(!vertices.empty())
+ {
+ float dx = p.x-vertices.back().pos.x;
+ float dy = p.y-vertices.back().pos.y;
+ float len = sqrt(dx*dx+dy*dy);
+ v.normal.x = dy/len;
+ v.normal.y = -dx/len;
+
+ if(vertices.back().smooth)
+ {
+ Vector &n = vertices.back().normal;
+ n.x += v.normal.x;
+ n.y += v.normal.y;
+ len = sqrt(n.x*n.x+n.y*n.y);
+ n.x /= len;
+ n.y /= len;
+ }
+ else
+ vertices.back().normal = v.normal;
+ }
+
+ vertices.push_back(v);
+
+ if(vertices.size()==1)