void LineRenderer::setPoints(const std::vector<glm::vec3> &points, MeshType meshType, const std::vector<GLushort> &indices) { if (meshType != MeshType::Lines && meshType != MeshType::LineLoop && meshType != MeshType::LineStrip){ logWarning("Invalid MeshType for line."); } LineRenderer::mMeshType = meshType; LineRenderer::mPoints = points; LineRenderer::mIndices = indices; rebuildMesh(); }
void SmoothLine::addPoint(float x, float y) { float w; if (points.empty()) { w = 2; } else { Particle *lp = points.back(); float prevMass = lp->mass; w = prevMass + ((1.5f+(ofVec2f(x, y) - *lp).length() / 5) - prevMass)*0.3; } Particle* newPar = new Particle(x, y, w); // newPar->setColor(ofColor(50)); points.push_back(newPar); rebuildMesh(); }
SmoothLine* SmoothLine::cutLine(int index) { if (index >= points.size()) { cout<<"error: index out of bounds in cutLine"<<endl; return NULL; } SmoothLine* newLine = new SmoothLine(); for (int i=index; i<points.size(); i++) { newLine->points.push_back(points[i]); } points.erase(points.begin()+index, points.end()); newLine->rebuildMesh(); rebuildMesh(); return newLine; }