From 1d30cdada10f21bf58e9baf6ee82e1b17098b369 Mon Sep 17 00:00:00 2001 From: devZoGok Date: Wed, 5 Jan 2022 15:21:10 +0200 Subject: [PATCH] some changes and bugfixes --- lineRenderer.cpp | 24 +++++++++++++----------- lineRenderer.h | 4 +++- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/lineRenderer.cpp b/lineRenderer.cpp index 6b1acbb..186ce88 100644 --- a/lineRenderer.cpp +++ b/lineRenderer.cpp @@ -35,15 +35,17 @@ namespace vb01{ mat4 proj = perspective(radians(fov), width / height, nearPlane, farPlane); for(Line &l : lines){ - shader->use(); - shader->setVec3(l.color, "color"); - shader->setMat4(proj, "proj"); - shader->setMat4(view, "view"); + if(l.visible){ + shader->use(); + shader->setVec3(l.color, "color"); + shader->setMat4(proj, "proj"); + shader->setMat4(view, "view"); - glBegin(GL_LINES); - glVertex3f(l.start.x, l.start.y, l.start.z); - glVertex3f(l.end.x, l.end.y, l.end.z); - glEnd(); + glBegin(GL_LINES); + glVertex3f(l.start.x, l.start.y, l.start.z); + glVertex3f(l.end.x, l.end.y, l.end.z); + glEnd(); + } } } @@ -81,9 +83,9 @@ namespace vb01{ } void LineRenderer::removeLine(int id){ - for(Line &l : lines) - if(l.id == id){ - lines.erase(lines.begin() + id); + for(int i = 0; i < lines.size(); ++i) + if(lines[i].id == id){ + lines.erase(lines.begin() + i); break; } } diff --git a/lineRenderer.h b/lineRenderer.h index 1f42aca..2efea52 100644 --- a/lineRenderer.h +++ b/lineRenderer.h @@ -11,15 +11,17 @@ namespace vb01{ class LineRenderer{ public: - struct Line{int id; Vector3 start; Vector3 end; Vector3 color;}; + struct Line{int id; Vector3 start; Vector3 end; Vector3 color; bool visible = true;}; enum VectorFieldType{START, END, COLOR}; static LineRenderer* getSingleton(); void drawLines(); void addLine(Vector3 start, Vector3 end, Vector3 color); void changeLineField(int, Vector3, VectorFieldType); + void toggleVisibility(int i, bool v){getLine(i).visible = v;} void removeLine(int); Line& getLine(int); + inline std::vector& getLines(){return lines;} private: LineRenderer();