Implement UI cursor (WIP)

This commit is contained in:
MrLetsplay 2022-11-02 17:11:33 +01:00
parent aba3d387e6
commit 725aebf3b1
2 changed files with 31 additions and 18 deletions

View File

@ -60,24 +60,37 @@ static void defaultKey(GLFWwindow *window, int key, int scancode, int action, in
} }
static void defaultMouseCallback(GLFWwindow *window, double x, double y, void *data) { static void defaultMouseCallback(GLFWwindow *window, double x, double y, void *data) {
static bool firstMouse = true; switch(Input::getCursorMode()) {
static double lastX = 0, lastY = 0; case GLFWCursorMode::CAPTURE:
if(firstMouse) { {
lastX = x; static bool firstMouse = true;
lastY = y; static double lastX = 0, lastY = 0;
firstMouse = false; if(firstMouse) {
lastX = x;
lastY = y;
firstMouse = false;
}
float xoff = lastX - x;
float yoff = lastY - y;
lastX = x;
lastY = y;
xoff *= 0.1f;
yoff *= 0.1f;
kekData.activeCamera->rotateYaw(xoff);
kekData.activeCamera->rotatePitch(yoff);
}
case GLFWCursorMode::FREE:
case GLFWCursorMode::HIDDEN:
{
for(UIElement *element : kekData.uiElements) {
UIPoint childPos = element->getPosition();
if(element->hoverAll(UIPoint((int) x - childPos.x, (int) y - childPos.y), UIPoint((int) x, (int) y))) break;
}
}
} }
float xoff = lastX - x;
float yoff = lastY - y;
lastX = x;
lastY = y;
xoff *= 0.1f;
yoff *= 0.1f;
kekData.activeCamera->rotateYaw(xoff);
kekData.activeCamera->rotatePitch(yoff);
} }
void init() { void init() {

View File

@ -223,7 +223,7 @@ void ButtonElement::setOnClickCallback(Callable onClick) {
} }
void ButtonElement::hover(UIPoint pos, UIPoint screenPos) { void ButtonElement::hover(UIPoint pos, UIPoint screenPos) {
RectangleElement::setColor(Colors::YELLOW);
} }
void ButtonElement::hoverEnter() { void ButtonElement::hoverEnter() {