/* * MVKExample.cpp * * Copyright (c) 2016-2017 The Brenwill Workshop Ltd. * This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT) */ #include "MVKExample.h" #include "examples.h" void MVKExample::renderFrame() { _vulkanExample->renderFrame(); } void MVKExample::displayLinkOutputCb() { // SRS - expose VulkanExampleBase::displayLinkOutputCb() to DemoViewController _vulkanExample->displayLinkOutputCb(); } void MVKExample::setRefreshPeriod(double refreshPeriod) { // SRS - set VulkanExampleBase::refreshPeriod from DemoViewController displayLink _vulkanExample->refreshPeriod = refreshPeriod; } void MVKExample::keyPressed(uint32_t keyChar) { // SRS - handle keyboard key presses only (e.g. Pause, Space, etc) switch (keyChar) { case KEY_P: _vulkanExample->paused = !_vulkanExample->paused; break; default: _vulkanExample->keyPressed(keyChar); break; } } void MVKExample::keyDown(uint32_t keyChar) { // SRS - handle physical keyboard key down/up actions and presses switch (keyChar) { case KEY_W: case KEY_Z: // for French AZERTY keyboards _vulkanExample->camera.keys.up = true; break; case KEY_S: _vulkanExample->camera.keys.down = true; break; case KEY_A: case KEY_Q: // for French AZERTY keyboards _vulkanExample->camera.keys.left = true; break; case KEY_D: _vulkanExample->camera.keys.right = true; break; default: MVKExample::keyPressed(keyChar); break; } } void MVKExample::keyUp(uint32_t keyChar) { switch (keyChar) { case KEY_W: case KEY_Z: // for French AZERTY keyboards _vulkanExample->camera.keys.up = false; break; case KEY_S: _vulkanExample->camera.keys.down = false; break; case KEY_A: case KEY_Q: // for French AZERTY keyboards _vulkanExample->camera.keys.left = false; break; case KEY_D: _vulkanExample->camera.keys.right = false; break; default: break; } } void MVKExample::mouseDown(double x, double y) { _vulkanExample->mousePos = glm::vec2(x, y); _vulkanExample->mouseButtons.left = true; } void MVKExample::mouseUp() { _vulkanExample->mouseButtons.left = false; } void MVKExample::rightMouseDown(double x, double y) { _vulkanExample->mousePos = glm::vec2(x, y); _vulkanExample->mouseButtons.right = true; } void MVKExample::rightMouseUp() { _vulkanExample->mouseButtons.right = false; } void MVKExample::otherMouseDown(double x, double y) { _vulkanExample->mousePos = glm::vec2(x, y); _vulkanExample->mouseButtons.middle = true; } void MVKExample::otherMouseUp() { _vulkanExample->mouseButtons.middle = false; } void MVKExample::mouseDragged(double x, double y) { _vulkanExample->mouseDragged(x, y); } void MVKExample::scrollWheel(short wheelDelta) { _vulkanExample->camera.translate(glm::vec3(0.0f, 0.0f, wheelDelta * 0.05f * _vulkanExample->camera.movementSpeed)); } MVKExample::MVKExample(void* view) { _vulkanExample = new VulkanExample(); _vulkanExample->initVulkan(); _vulkanExample->setupWindow(view); _vulkanExample->prepare(); _vulkanExample->renderLoop(); // SRS - init VulkanExampleBase::destWidth & destHeight, then fall through and return } MVKExample::~MVKExample() { delete _vulkanExample; }