Handle keyboard in QML

This commit is contained in:
2020-06-23 16:29:36 -06:00
parent af761ca337
commit 82ff240cfd
5 changed files with 80 additions and 33 deletions

View File

@@ -41,10 +41,26 @@ void MagnumRenderer::count(int count) {
m_subjectDrawable->count(count);
}
Containers::Optional<ArcBallCamera> MagnumRenderer::camera() {
Containers::Optional<ArcBallCamera>& MagnumRenderer::camera() {
return m_camera;
}
float MagnumRenderer::lagging() {
if (m_camera)
return m_camera->lagging();
else
return 0.f;
}
void MagnumRenderer::lagging(float lagging) {
if (m_camera)
m_camera->setLagging(lagging);
}
/**
* @brief MagnumRenderer::lazyInitialize
*
*/
void MagnumRenderer::lazyInitialize() {
if (m_init) return;
@@ -97,6 +113,10 @@ void MagnumRenderer::reset(Platform::GLContext *ctx,
m_ctx = ctx;
}
/**
* @brief MagnumRenderer::prepGLState
*
*/
void MagnumRenderer::prepGLState() {
GL::Renderer::setClearColor(COLOR_BG);
GL::Renderer::enable(GL::Renderer::Feature::DepthTest);
@@ -115,7 +135,6 @@ void MagnumRenderer::prepGLState() {
void MagnumRenderer::render() {
m_ctx->resetState(GL::Context::State::ExitExternal);
prepGLState();
// ---
m_FBO.bind();
m_FBO.clear(GL::FramebufferClear::Color |
@@ -128,7 +147,7 @@ void MagnumRenderer::render() {
* bool cameraChanged = m_camera->update();
* m_camera->draw(m_drawables);
* if (cameraChanged) {
* redraw();
* redraw(); // should call back to MagnumItem::update()
* } */
// ---
@@ -145,16 +164,22 @@ void GridDrawable::draw(const Matrix4 &transformation,
void SubjectDrawable::draw(const Matrix4 &transformation,
SceneGraph::Camera3D &camera) {
// We only need to do this once in this draw call
m_shader
.setNormalMatrix(transformation.normalMatrix())
.setProjectionMatrix(camera.projectionMatrix());
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++) {
// Change hue depending on position
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}));
// Move in +x
m_shader
.setTransformationMatrix(
transformation *