Files
Seele/src/Engine/System/KeyboardInput.cpp
T

48 lines
1.4 KiB
C++
Raw Normal View History

2023-11-17 22:31:26 +01:00
#include "KeyboardInput.h"
using namespace Seele;
using namespace Seele::System;
2024-06-09 12:20:04 +02:00
KeyboardInput::KeyboardInput(PScene scene) : ComponentSystem<Component::KeyboardInput>(scene) { std::memset(keys.data(), 0, sizeof(keys)); }
2023-11-17 22:31:26 +01:00
2024-06-09 12:20:04 +02:00
KeyboardInput::~KeyboardInput() {}
2023-11-17 22:31:26 +01:00
2024-06-09 12:20:04 +02:00
void KeyboardInput::update(Component::KeyboardInput& input) {
2023-11-17 22:31:26 +01:00
std::memcpy(input.keys.data(), keys.data(), sizeof(keys));
input.deltaX = deltaX;
input.deltaY = deltaY;
input.mouseX = mouseX;
input.mouseY = mouseY;
input.mouse1 = mouse1;
input.mouse2 = mouse2;
input.scrollX = scrollX;
input.scrollY = scrollY;
2023-11-30 11:51:53 +01:00
deltaX = mouseX - lastMouseX;
deltaY = mouseY - lastMouseY;
lastMouseX = mouseX;
lastMouseY = mouseY;
scrollX = 0;
scrollY = 0;
2023-11-17 22:31:26 +01:00
}
2024-06-09 12:20:04 +02:00
void KeyboardInput::keyCallback(KeyCode code, InputAction action, KeyModifier) { keys[code] = action != InputAction::RELEASE; }
2023-11-17 22:31:26 +01:00
2024-06-09 12:20:04 +02:00
void KeyboardInput::mouseCallback(double x, double y) {
2023-11-17 22:31:26 +01:00
mouseX = x;
mouseY = y;
}
2024-06-09 12:20:04 +02:00
void KeyboardInput::mouseButtonCallback(MouseButton button, InputAction action, KeyModifier) {
if (button == MouseButton::MOUSE_BUTTON_1) {
2023-11-17 22:31:26 +01:00
mouse1 = action != InputAction::RELEASE;
}
2024-06-09 12:20:04 +02:00
if (button == MouseButton::MOUSE_BUTTON_2) {
2023-11-17 22:31:26 +01:00
mouse2 = action != InputAction::RELEASE;
}
}
2024-06-09 12:20:04 +02:00
void KeyboardInput::scrollCallback(double xScroll, double yScroll) {
scrollX = xScroll;
scrollY = yScroll;
}