Support count setter

This commit is contained in:
2020-06-22 23:43:06 -06:00
parent e01c09fbcc
commit b106c1c028
2 changed files with 63 additions and 43 deletions

View File

@@ -19,6 +19,40 @@ using namespace Magnum;
using Object3D = SceneGraph::Object<SceneGraph::MatrixTransformation3D>;
using Scene3D = SceneGraph::Scene<SceneGraph::MatrixTransformation3D>;
class GridDrawable : public SceneGraph::Drawable3D {
public:
explicit GridDrawable(Object3D &object, Shaders::Flat3D &shader,
GL::Mesh &mesh, SceneGraph::DrawableGroup3D &drawables)
: SceneGraph::Drawable3D{object, &drawables},
m_shader(shader),
m_mesh(mesh) {}
void draw(const Matrix4 &transformation, SceneGraph::Camera3D &camera);
private:
Shaders::Flat3D &m_shader;
GL::Mesh &m_mesh;
};
class SubjectDrawable : public SceneGraph::Drawable3D {
public:
explicit SubjectDrawable(Object3D &object, Shaders::Phong &shader,
GL::Mesh &mesh, SceneGraph::DrawableGroup3D &drawables,
int count)
: SceneGraph::Drawable3D{object, &drawables},
m_shader(shader),
m_mesh(mesh),
m_count(count) {}
void draw(const Matrix4 &transformation, SceneGraph::Camera3D &camera);
void count(int count);
private:
Shaders::Phong &m_shader;
GL::Mesh &m_mesh;
int m_count;
};
class MagnumRenderer {
public:
MagnumRenderer();
@@ -39,9 +73,8 @@ private:
void lazyInitialize();
void prepGLState();
bool m_init{false};
float m_count{1};
bool m_init;
int m_count;
Platform::GLContext *m_ctx;
GL::Framebuffer m_FBO{NoCreate};
@@ -53,39 +86,11 @@ private:
GL::Mesh m_subject{NoCreate};
Shaders::Phong m_subjectShader{NoCreate};
Object3D* m_subjectObject{nullptr};
SubjectDrawable* m_subjectDrawable{nullptr};
GL::Mesh m_grid{NoCreate};
Shaders::Flat3D m_gridShader{NoCreate};
};
class GridDrawable : public SceneGraph::Drawable3D {
public:
explicit GridDrawable(Object3D &object, Shaders::Flat3D &shader,
GL::Mesh &mesh, SceneGraph::DrawableGroup3D &drawables)
: SceneGraph::Drawable3D{object, &drawables},
m_shader(shader),
m_mesh(mesh) {}
void draw(const Matrix4 &transformation, SceneGraph::Camera3D &camera);
private:
Shaders::Flat3D &m_shader;
GL::Mesh &m_mesh;
};
class SubjectDrawable : public SceneGraph::Drawable3D {
public:
explicit SubjectDrawable(Object3D &object, Shaders::Phong &shader,
GL::Mesh &mesh, SceneGraph::DrawableGroup3D &drawables)
: SceneGraph::Drawable3D{object, &drawables},
m_shader(shader),
m_mesh(mesh) {}
void draw(const Matrix4 &transformation, SceneGraph::Camera3D &camera);
private:
Shaders::Phong &m_shader;
GL::Mesh &m_mesh;
Object3D* m_gridObject{nullptr};
};
#endif // MAGNUM_RENDER_H