Hue shift + events to camera
This commit is contained in:
@@ -20,23 +20,20 @@ MagnumRenderer::MagnumRenderer() :
|
||||
m_init(false),
|
||||
m_count(1) {}
|
||||
|
||||
MagnumRenderer::~MagnumRenderer() {}
|
||||
MagnumRenderer::~MagnumRenderer() {
|
||||
delete m_subjectObject;
|
||||
delete m_subjectDrawable;
|
||||
delete m_gridObject;
|
||||
}
|
||||
|
||||
void MagnumRenderer::t(const float t) {
|
||||
if (m_subjectObject != nullptr && m_subjectObject->parent()) {
|
||||
m_subjectObject->resetTransformation();
|
||||
m_subjectObject->translate(Vector3{0.f, 1.f, 0.f});
|
||||
m_subjectObject->rotateY(Rad(t*Math::Constants<float>::pi()));
|
||||
}
|
||||
if (m_subjectDrawable)
|
||||
m_subjectDrawable->t(t);
|
||||
}
|
||||
|
||||
void MagnumRenderer::hue(float hue) {
|
||||
if (m_subjectShader.id()) {
|
||||
auto const color = Color3::fromHsv({Rad(hue), 1.f, 1.f});
|
||||
m_subjectShader
|
||||
.setDiffuseColor(color)
|
||||
.setAmbientColor(Color3::fromHsv({color.hue(), 1.0f, 0.3f}));
|
||||
}
|
||||
if (m_subjectDrawable)
|
||||
m_subjectDrawable->hue(hue);
|
||||
}
|
||||
|
||||
void MagnumRenderer::count(int count) {
|
||||
@@ -44,6 +41,10 @@ void MagnumRenderer::count(int count) {
|
||||
m_subjectDrawable->count(count);
|
||||
}
|
||||
|
||||
Containers::Optional<ArcBallCamera> MagnumRenderer::camera() {
|
||||
return m_camera;
|
||||
}
|
||||
|
||||
void MagnumRenderer::lazyInitialize() {
|
||||
if (m_init) return;
|
||||
|
||||
@@ -71,7 +72,7 @@ void MagnumRenderer::lazyInitialize() {
|
||||
m_gridShader = Shaders::Flat3D{};
|
||||
m_gridShader.setColor(COLOR_GRID);
|
||||
|
||||
new GridDrawable{*m_gridObject, m_gridShader, m_grid, m_drawables};
|
||||
m_gridDrawable = new GridDrawable{*m_gridObject, m_gridShader, m_grid, m_drawables};
|
||||
}
|
||||
|
||||
// The Camera
|
||||
@@ -150,10 +151,14 @@ void SubjectDrawable::draw(const Matrix4 &transformation,
|
||||
static const float width = 3.f;
|
||||
float x = -float(m_count)/2.f * width + width/2.f;
|
||||
for (int i = 0; i < m_count; i++) {
|
||||
const auto color = Color3::fromHsv({Rad(m_hue+float(i)*.2f), 1.f, 1.f});
|
||||
m_shader
|
||||
.setDiffuseColor(color)
|
||||
.setAmbientColor(Color3::fromHsv({color.hue(), 1.0f, 0.3f}));
|
||||
m_shader
|
||||
.setTransformationMatrix(
|
||||
transformation *
|
||||
Matrix4::translation({x, 0.f, 0.f}))
|
||||
Matrix4::translation({x, Math::sin(Rad(m_t*2.f+float(i))), 0.f}))
|
||||
.draw(m_mesh);
|
||||
x += width;
|
||||
}
|
||||
@@ -162,3 +167,11 @@ void SubjectDrawable::draw(const Matrix4 &transformation,
|
||||
void SubjectDrawable::count(int count) {
|
||||
m_count = count;
|
||||
}
|
||||
|
||||
void SubjectDrawable::hue(float hue) {
|
||||
m_hue = hue;
|
||||
}
|
||||
|
||||
void SubjectDrawable::t(float t) {
|
||||
m_t = t;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user