Handle keyboard in QML
This commit is contained in:
@@ -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 *
|
||||
|
||||
Reference in New Issue
Block a user