Handle keyboard and mouse events, adjust frameTimer scaling for macOS

This commit is contained in:
Stephen Saunders 2021-09-12 02:34:38 -04:00
parent 28d98b9ee7
commit a74afb20fc
5 changed files with 181 additions and 18 deletions

View file

@ -5,20 +5,109 @@
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
#include <Carbon/Carbon.h>
#include "MVKExample.h"
#include "examples.h"
void MVKExample::renderFrame() {
/*
void MVKExample::renderFrame() { // SRS - don't need to expose VulkanExampleBase::renderFrame() to DemoViewController
_vulkanExample->renderFrame();
}
*/
void MVKExample::displayLinkOutputCb() { // SRS - expose VulkanExampleBase::displayLinkOutputCb() to DemoViewController
_vulkanExample->displayLinkOutputCb();
}
void MVKExample::keyPressed(uint32_t keyCode) {
_vulkanExample->keyPressed(keyCode);
void MVKExample::windowWillResize(float x, float y)
{
_vulkanExample->windowWillResize(x, y);
}
void MVKExample::windowDidResize()
{
_vulkanExample->windowDidResize();
}
void MVKExample::keyDown(uint32_t keyCode) {
switch (keyCode)
{
case kVK_ANSI_P:
_vulkanExample->paused = !_vulkanExample->paused;
break;
case kVK_ANSI_W:
_vulkanExample->camera.keys.up = true;
break;
case kVK_ANSI_S:
_vulkanExample->camera.keys.down = true;
break;
case kVK_ANSI_A:
_vulkanExample->camera.keys.left = true;
break;
case kVK_ANSI_D:
_vulkanExample->camera.keys.right = true;
break;
default:
break;
}
}
void MVKExample::keyUp(uint32_t keyCode) {
switch (keyCode)
{
case kVK_ANSI_W:
_vulkanExample->camera.keys.up = false;
break;
case kVK_ANSI_S:
_vulkanExample->camera.keys.down = false;
break;
case kVK_ANSI_A:
_vulkanExample->camera.keys.left = false;
break;
case kVK_ANSI_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(double x, double y)
{
_vulkanExample->mousePos = glm::vec2(x, y);
_vulkanExample->mouseButtons.left = false;
}
void MVKExample::otherMouseDown()
{
_vulkanExample->mouseButtons.right = true;
}
void MVKExample::otherMouseUp()
{
_vulkanExample->mouseButtons.right = false;
}
void MVKExample::mouseDragged(double x, double y)
{
_vulkanExample->mouseDragged(x, y);
}
void MVKExample::mouseMoved(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) {